Yazılıma nasıl başlayabilirim? 🙄 Hangi yazılım alanını seçmeliyim? 😇 Hangi alana ilgim olduğunu bilmiyorum! 🤔

Çağatay Güç
Kodluyoruz
Published in
7 min readOct 20, 2022

Merhabalar. Bu yazımı, yazılıma yeni başlayacak veya yazılıma bir şekilde başlamış ama tam olarak hangi alan ve yazılım dilinde ilerleyeceğine karar verememiş kişilere fikir sunmak amacı ile kaleme alıyorum. Burası sonsuz bir dünya. Hangi alandan başlamanız veya ilerlemeniz gerektiği konusunda kafanız karışıksa bir çok seçeneğiniz var, haydi gelin beraber inceleyelim.

Öncelikle bir yazılımcı olmak için sahip olmanız veya olmamanız gereken gereksinimler/özelliklerimize bakalım:

  • Mühendislik veya teknik bir geçmişinizin olmaması yazılımcı olmanız için kesinlikle engel değildir.
  • İngilizce bilmek zorunda değilsiniz ancak yazılım öğrenme sürecinizde biraz daha hızlı sonuçlar alabilmek, sorunlara daha hızlı çözümler bulabilmek ve sadece Türkiye değil yurt dışındaki iş imkanlarından faydalanmak için İngilizce biliyor olmak önemli bir kriter.
  • Eğer yazılım ile yeni tanışan biriyseniz bilgisayar ve algoritma temelinizin sağlam olması gerekli. Bunun için önereceğim platform ise: CS50x Kodluyoruz ve Patika.dev. Aldığınız temel derslerden sonra problem çözme ve kodları anlama becerinizi geliştirmiş, problemleri çözdükçe de temelinizi daha sağlam atmış olacaksınız.
  • Son olarak hırslı olmalı ve pes etmemelisiniz.

İlk adımı nasıl atmalı ve nereden başlamalıyım?

Eğer yazılıma yeni başlayacaksanız temel seviyede, basit ve eğlenceli olabilecek HTML ve CSS gibi işaretleme dillerini kullanarak çok basit web siteleri yapabilirsiniz. HTML için buradan, CSS için ise buradan ücretsiz şekilde bir başlangıç yapabilirsiniz.

Hangi alanı seçmeli ve ilerlemeliyim? Gelin biraz da yazılım alanları, yazılım dili ve teknolojilerini inceleyelim:

Yazılım alanında ilerleyebileceğiniz çok fazla yol ve seçenek var. Bir yazılım dili seçmeden önce ilerlemek istediğiniz alanı belirlemelisiniz. En çok tercih edilen alanlar ise web geliştirme, mobil geliştirme, oyun geliştirme ve veri bilimi diyebiliriz. Bu noktada kendinize bir hedef belirledikten sonra belirlediğiniz alanda uzmanlaşmak önceliğiniz olmalı. Bir çok alanda ilerlemeye çalışmak, ilerlemenizin yavaşlamasına ve yazılımdan uzaklaşmanıza neden olabilir.

1. Web Tasarımı ve Geliştirme

Web Tasarımı ve Geliştirme’yi Front-end ve Back-end Geliştirme olarak iki farklı alanda ele almamız gerekiyor:

a. Front-end Geliştirme:

Bir Front-end Geliştirici, bir web sitenin ön yüzünün hazırlanması ve sunulması süreçlerini gerçekleştirerek insanların sıkça kullandığı, hayatlarına dokunan uygulamaları geliştirir. Eğer yazdığınız kodların çıktılarını görünür bir şekilde görmek istiyorsanız bu alan tam size göre. İşin sonunda çalışabileceğiniz bazı büyük şirketler: Trendyol, Getir, Hepsiburada, n11, Akbank, Martı, Sahibinden.com.

Yazılım dili:

  • JavaScript/TypeScript

Kütüphane ve araçlar:

  • React
  • Vue
  • Angular
  • HTML, CSS

Popüler ve en çok kullanılan kütüphane React kütüphanesidir. Vue ise son zamanlarda revaçta olan bir kütüphanedir. Bu iki kütüphaneden birisini seçerek ilerleyebilirsiniz.

b. Back-end Geliştirme:

Bir Back-end Geliştirici, bir web sitesinin arka planını kurar. Bizim görmediğimiz çok yönlü işlevselliği ve temel mimariyi oluşturur. Eğer daha çok kod ile çalışmak ve problemleri çözmeye istekliyseniz bu alan tam size göre. Front-end yazılım dili ve kütüphanelerine kıyasla Back-end alanında daha fazla yazılım dili, kütüphanesi ve kullanılan bir veri tabanı vardır. Tabii ki bunların hepsini öğrenmeniz gerekmiyor. İşin sonunda çalışabileceğiniz bazı büyük şirketler: Trendyol, Getir, Hepsiburada, n11, Akbank, Martı, Sahibinden.com.

Yazılım dili ve kütüphaneleri:

Popülerliğini uzun yıllardır devam ettiren Java ve C# programlama dilinin yanısıra JavaScript(Node.js), Go ve Python(Django) yazılım dili ve kütüphaneleri yeni kurulmuş start-upların ve eski teknolojilerden yeni teknolojilere geçiş yapan/yapmak isteyen şirketlerin favori dilleridir.

  • JavaScript/TypeScript(Nodejs)
  • Java(Spring Boot)
  • Python(Django, Flask)
  • C#(.Net Core)
  • Php(Laravel, Symfony)
  • Go
  • Ruby(Rails)
  • Rust

Veri tabanları:

  • MongoDB
  • PostgreSQL
  • MySQL
  • Oracle

Bulut platformlar:

Kullanılan sistemlerin büyümesi ve kontrol edilememesi sonucunda bulut platformlarına yönelmeniz muhtemeldir. Sistemin otomatize edilmesini ve zamandan tasarruf etmenizi sağlayacak bir sistemi vardır.

  • Amazon Web Services(AWS)
  • Google Cloud Platform(GCP)
  • Microsoft Azure

2. Mobil Uygulama Geliştirme

Bir Mobil Geliştirici, mobil cihazlar için yazılım ve uygulamalar hazırlayan kişidir. Son 10 senede Android ve iOS cihazların yaygınlaşması ile bu platformlara yönelik geliştirme ihtiyacı arttı. Oldukça revaçta olan ve talep gören bir alandır. Mobil uygulamalara ilginiz varsa, kullanıcıya dokunduğunuz bir yönünüzün olmasını istiyor ve yazdığınız kodların çıktılarını görmek istiyorsanız bu alanı tercih etmelisiniz.

Not: Kesinlikle farklı mobil uygulama geliştirme dilleri var ancak biz en popüler dilleri ele alalım. :)

Yazılım dili ve araçları:

a. iOS uygulama geliştirme:

  • Swift, SwiftUI, Xcode — (Mac, Apple TV ve Apple Watch geliştirme)
  • MVVM, Viper en sık kullanılan tasarım kalıplarıdır.

b. Android uygulama geliştirme:

  • Java, Kotlin, Android Studio
  • MVVM, Viper en sık kullanılan tasarım kalıplarıdır.

c. iOS + Android uygulama geliştirme:

Bir mobil uygulama dili öğrenmek ve bunu hem iOS hem de Android sistemlerde geliştirmek istiyorsanız benim tavsiyem React Native veya Flutter’a yönelmeniz. Flutter mi yoksa React Native mi? Bu soru, bahsi geçen alana yönelmek isteyen pek çok kişinin kafasında dönen ve cevabını ararken oldukça zorlanılan, kararsız kalınan bir soru oluyor genelde. Gelin biraz karşılaştırarak inceleyelim:

  • React Native → Kullanılan yazılım dili JavaScript’tir. React kütüphanesi kullanan herkes kolaylıkla kavrayabilir. Kısaca front-end temeli olan herkesin kolaylıkla öğrenip geliştirebileceği bir alandır. Uzun yıllardır ve Flutter’a kıyasla çok kullanıcılı bir alan olduğu için herhangi bir sorunla karşılaşmanız halinde çeşitli platformlardan ve yazılım topluluklarından daha hızlı çözüm desteği alabilirsiniz. (Örn. Stackoverflow, Discord, Telegram)
  • Flutter → Kullanılan yazılım dili Dart’tır. Popülerliği gitgide artan bir yazılım geliştirme aracıdır. Object Oriented Programming (OOP) kullanımına hakim olan çoğu kişinin rahatlıkla kavrayabileceği bir dildir. React Native’e göre kod yazımı hızlı ancak metodları fazla olduğu için biraz daha ezber gerektiren yönü vardır ve kod okuması biraz daha zordur. Flutter, React Native’e göre korkutucu görünse de önü oldukça açık bir alandır.

3. Mobil Oyun Geliştirme

Android ve iOS platformlarda yayınlanan, günümüzde oldukça popüler olan hem reklamlarını sıklıkla gördüğünüz hem de günlük hayatta indirip zaman geçirdiğiniz oyunların çok büyük bir kısmı Hyper-casual ve casual oyunlardır. C# ve C++ gibi yazılım dillerini kullanarak oyunlar üretebilir ve geliştirebilirsiniz. En çok kullanılan ve popüler olan oyun motorları ise Unity ve Unreal Engine’dir. Bir oyun motoru seçmeden önce hangi tarz oyunlara ilginizin olduğunu bilmelisiniz. Gelin biraz inceleyelim:

a. Hyper-casual oyunlar:

Gün içerisinde çok zaman harcamadan, üzerine düşülmeden oynanan keyifli ve basit oyunlardır. Bu tarz oyunlar genellikle hızlı üretilir ama kısa ömürlü olur. Kısa sürede maddi gelirler elde edilebilirsiniz ancak bu alanda rekabet çok fazladır. Çok sıkı bir oyun takipçisi olup trendleri takip etmeniz gerekmektedir. Ayrıca aynı oyun tabanını kullanarak başka bir oyunun hızlı şekilde geliştirilebileceğinizi de unutmamalısınız. Bazı Hyper-casual oyunlar: Stack Colors! ve Road Rice 3D.

b. Casual oyunlar:

Çok basit bir şekilde oynanabilen oyunlardır. Birkaç parmak hareketi ile ve her yaştan insanların rahatlıkla oynayabileceği oyunlardır. Çoğu kişinin bildiği ve oynadığı Pacman, Angry Birds ve Tetris gibi oyunlar Casual oyunlar başlığı altında toplanır. Daha uzun soluklu ve sürdürülebilir bir yönü vardır.

c. Unity oyun motoru:

Birçok platformda(Tabletler, mobil cihazlar, akıllı televizyonlar ve bilgisayarlar) hem 2D hem de 3D oyunlar geliştirilebilen oyun motordur. Kullanışı oldukça basit ve anlaşılırdır. Eğer C# yazılım dilinde bir geçmişiniz varsa veya aşinaysanız Unity ile çok kolay bir şekilde oyun geliştirebilirsiniz. Oyun üretmeye/geliştirmeye yeni başlayacaksanız benim önerim, Unity oyun motoru üzerinde kendinizi geliştirmek yönünde olur. En çok kullanılan oyun motoru ve topluluğunun güçlü olması, herhangi bir problemi yaşadığınızda hızlıca sonuca ulaşmanızı sağlar. Unity öğrenmeye buradan başlayabilirsin.

Unity ile geliştirilen bazı büyük oyunlar:

  • Leauge of Legends: Wild Rift
  • Call of Duty: Mobile
  • Valheim
  • Shadow Fight 3

d. Unreal Engine oyun motoru:

Daha profesyonel, gerçekçi video grafikleri ve görsel açıdan bizi büyüleyen oyunlar yapılabilen oyun motorudur. Başlangıçta hiçbir şekilde kodlama bilginiz olmadan oyun geliştirebilirsiniz. Eğer C++ deneyiminiz varsa orta ve ileri seviyede oyun motorunu kullanabilirsiniz.

Unreal Engine ile geliştirilen bazı büyük oyunlar:

  • Fortnite
  • Valorant
  • Dead by Daylight
  • Yeni Witcher
  • Ark 2

4. Veri Bilimi:

Çok derin ve içine girildiğinde sanki bitmeyecek çok fazla öğrenim yapılabilecek bir veri alanı vardır. Veri bilimi; veri analistliği, veri mühendisliğinin yanı sıra veri madenciliği, yapay zeka, makine öğrenimi gibi bir çok alanı içinde kapsar. Bu alanda birçok yazılım dili ile geliştirme yapılmaktadır ancak son zamanlarda en popüler ve tercih edilen yazılım dili Python’dır.

Veri bilimi alanını seçerseniz kısaca farklı araçlar kullanarak eldeki verinin betimlemesini yapabilirsiniz. Yapılan çalışmalar hakkında çıkarımlarda bulunup tahminsel bir modelleme yapabilirsiniz. Veri analistliğini seçerseniz kısaca her kaynaktan toplanan verilerin analizini yapar, yorumlar ve raporlayabilirsiniz. Veri mühendisliğini seçtiğinizde ise kısaca çok fazla çeşitliliğe sahip olan verilerin analizini yapıp dağınık halde bulunan verilerin belirli bir düzene göre anlaşılabilir ve kullanılabilir hale getirilmesi işlemini gerçekleştirebilirsiniz.

Başlıca kullanılan programa dilleri ve araçları:

  • Python
  • R
  • Scala
  • Java
  • SQL
  • MATLAB

Bahsettiğim alanlar, yazılım dilleri ve kütüphanelerle ilgili sorunuz olursa bana LinkedIn’den ulaşabilirsiniz. :)

--

--