Yazılıma Nereden başlamalıyım?
- 05 Oct, 2020
Merhaba arkadaşlar,
Uzun bir aradan sonra yeni yazımla karşınızdayım. Genel olarak birçok arkadaşımız yazılıma nereden başlayacağını, nasıl ilerleyeceğini, hangi alanı seçeceğini ve bu sektörde nasıl tutunacağını bilmediği için rehber niteliğinde bir makale hazırlamaya karar verdim. Her şeyden önce yazılımla alakalı birkaç terimi açıkladıktan sonra konumuza geçelim.
Yazılım : En kısa haliyle elektronik aygıtların belirli bir işi yapması için yazılmış kod dizisi diyebiliriz.
Algoritma : Belirli bir işin doğru bir şekilde gerçekleşmesi için yapılması gereken adım sırası olarak tanımlayabiliriz.
Bu sektör ile alakalı bölümlerde okuyan, sektöre girmiş yada henüz girmemiş arkadaşlarımızın, abilerimizin aklında hangi alanı seçeceği konusunda şüpheler var. Bugün olabildiğince aklınızdaki soruları gidermeye çalışacağım.
Bilişim sektöründe Web geliştirme, mobil uygulama geliştirme, siber güvenlik, veri bilimi, genel olarak yapay zeka , IoT vb birçok alan bulunmakta. Bu alanlar arasında seçim yapmak istiyorsunuz fakat zorlanıyorsanız size naçizane tavsiyem şu olacaktır : Youtube üzerinden bu alanlar hakkında videolar izleyin veya bu alanlar hakkında makale okuyun. Bu şekilde ilgilendiğiniz alan hakkında bilgi sahibi olabilirsiniz.
Alanınızı seçtikten sonra tam olarak nereden başlayacağız, bilmiyoruz. Kafamız biraz karışık. Yol haritasına ihtiyacımız var. Daha hızlı ilerlememiz açısından İngilizce ile olan ilişkimizi biraz daha güçlendirmemiz gerekiyor. Günümüzde İngilizce makaleler, videolar ve çeşitli eğitim dokümanları Türkçe makalelere kıyasla çok daha fazla ve burada İngilizce’nin önemini net bir biçimde anlıyoruz.
İngilizcemizi geliştirdikten sonra sıra algoritmaya geldi. Alan fark etmeksizin Hackerrank, LeetCode, Codewars gibi sitelerden olabildiğince algoritma soruları çözmeye çalışın. Problem çözme yeteneğinizi yeteri kadar geliştiremezseniz ileride karşınıza çıkacak sorunlarda tıkanabilirsiniz. Bu yüzden problemlere karşı bakış açınızın da değişmesi için bolca problem çözmeye çalışın.
Seçtiğiniz alan ile ilgili bir dilde uzmanlaşmaya çalışın. Elbette uzmanlaşmak kısa zamanda olacak bir durum değil lakin çok dil bilmektense bir dili çok iyi bilmenizi, diğer diller hakkında da en azından bilgi sahibi olmanızı kesinlikle tavsiye edebilirim. Bir işe başvuracağınız zaman “ X teknolojisi hakkında ne biliyorsun? “ diye sorulduğunda bir cevap verebilmek size bir artı olarak geri dönecektir. Kaynak konusunda sıkıntı çekerseniz Youtube, Udemy vb. platformlardan videolar izleyebilir, alanınız ile ilgilenen kişilerin makalelerini okuyarak bilgi sahibi olabilirsiniz. Bu kısma aşağıda özellikle değineceğim.
Bir Github hesabı açmanızı kesinlikle tavsiye ediyorum. Bir yazılım geliştiricisi için github hesabı özgeçmiş niteliği taşımaktadır. Kendi alanınız ile alakalı yaptığınız projeleri buraya yükleyebilirsiniz. Bu alanda çalışan kişileri takip edip projelerini inceleyerek kendinizi geliştirebilirsiniz. Açık kaynaklı projelere katkıda bulunabilirsiniz. Yaptığınız küçük büyük projeler ile doldurmaya çalışmanızı tavsiye ederim.
Bilgi sahibi olduğum alanlar hakkında sizi bilgilendirmek istiyorum.
1) Web Geliştirme
Web geliştirme alanını seçtiğinizde karşınıza iki alt alan çıkacaktır.
1.1) Backend Developer
Kullanıcıların görmediği arka yüz (Server-side) geliştiren kişidir. Yapılacak projenin altyapısını oluşturan , veri tabanı yönetimini planlayan, sistemin verimli ve hızlı çalışmasını sağlayan kişidir. Buz dağının görünmeyen tarafı diyebiliriz. Bu alanda ilerlemek isteyen arkadaşlarımızın server tabanlı bir programlama dili öğrenmesi gerekmekte. Aşağıda bahsedilen teknolojiler hakkındaki kaynakları inceleyebilirsiniz.
a) .NET
Takip ettiğim ve beğendiğim birkaç kaynak:
- Youtube → Kenan Yıldırım ASP.NET MVC Dersleri
- Youtube → Devnot.TV
- Youtube → TechBuddyTR
- Github → (İngilizce) MoienTajik ASP.NET Core Roadmap
b) Java
İncelediğim ve içeriklerini beğendiğim birkaç kaynak:
- Youtube → FolksDev
- Youtube → (İngilizce) AmigosCode Spring & Spring Boot Tutorial
- Medium → (İngilizce) Java Roadmap
c) NodeJS
Bu teknolojide ilerlemeden önce javascript bilginiz olması gerekmektedir. Daha öncesinde incelediğim birkaç kaynak:
- Youtube → (İngilizce) Traversy Media
- Youtube → Ahmet Buğra Çakıcı NodeJS Eğitimi
- Youtube → Adem Ilter NextJS Öğreniyorum
d) PHP
Lise zamanları php ile uğraşmamdan dolayı incelediğim ve anlatımlarını beğendiğim birkaç kaynak:
- Youtube → Prototürk Temel PHP Eğitimi
- Youtube → Gökhan Kandemir PHP Eğitimi
- Youtube → Gökhan Kandemir CodeIgniter Eğitimi
1.2) Frontend Developer
=======================
Bir sitenin kullanıcılarla etkileşime geçebildiği , kullanıcı arayüzünü tasarlayan kişidir. Buz dağının görünen tarafıdır. Bu alanda ilerlemek isteyen arkadaşlarımızın Html, Css, Javascript dillerini ve bu diller ile alakalı teknolojilerde iyi olması gerekmekte. Aşağıda bahsedilen teknolojiler hakkındaki kaynakları inceleyebilirsiniz.
a) Angular
- Youtube → Mehmet Sert Hızlandırılmış Angular Eğitimi
- Youtube → Engin Demiroğ Angular 7 Eğitimi
b) Vue
- Youtube → Fatih Acet Vue Eğitimi
- Youtube → Gökhan Kandemir Vue3 Bootcamp
c) React
- Github → Orçun Tuna React Türkçe Kaynak
- Github → Ömer Gülçicek React Türkçe Kaynak
- Medium → KoçSistem A’dan Z’ye React
- Youtube → Projelerle React Eğitimi
- Youtube → Didem Küçükarslan React Eğitimleri
2) Mobil Uygulama Geliştirme
Mobil uygulama alanı seçtiğinizde ise karşınıza iki seçenek çıkacaktır: Native mi yoksa Hybrid mi?
Native
Uygulama yazılırken platformun sağladığı dil ve platform SDK ile geliştirme yapılabiliniyor. Örnek verirsek Android için bir uygulama yazacaksanız programlama dili olarak java, SDK olarak da Android SDK seçmeniz gerekmektedir.
a) Java & Kotlin → Android
- Udemy → Atıl Samancıoğlu Java & Kotlin Android Eğitimi
- Udemy → Kasım Adalan Android Eğitimi
- Github → (İngilizce) Android Developer Yol Haritası
b) Swift → IOS
- Udemy → Kasım Adalan Swift Eğitimi
- Udemy → Atıl Samancıoğlu Swift 5 Eğitimi
Hybrid
Native uygulamalardan en temel farkı bir işletim sistemine bağlı kalmaması. Bir uygulama geliştirdiğinizde hem IOS hem Android sürümünü çıkarabiliyorsunuz. Aşağıda bahsedilen teknolojiler hakkındaki kaynakları inceleyebilirsiniz.
a) Dart & Flutter
- Youtube → Veli Bacık Flutter Eğitimleri
- Youtube → Mehmet Ali Bayram Flutter Eğitimleri
b) React Native
- Youtube → (İngilizce) Programming With Mosh React Native Tutorial
- Youtube → (İngilizce) The Net Ninja React Native Tutorial
- Youtube → Tayfun Erbilen React Native Öğreniyoruz
3) Devops
DevOps, tasarım başlangıcından, geliştirme süreçlerine kadar tüm programlama işlemlerinin yürütüldüğü ekip çalışmasını belirtmektedir. Bu alanda ilerlemek isteyenlerin virtualization, CI/CD, container teknolojisi ve deployment süreçleri hakkında bilgi sahibi olması gerekiyor.
a) Docker
- Youtube → TechBuddyTR Docker Eğitimi
- Youtube → Gökhan Kandemir Docker Eğitim Serisi
- Github → Devops Engineer RoadMap
- Youtube → Ahmet Alp Balkan Hızlandırılmış Container’lar ve Docker Kursu
- Udemy → Özgür Öztürk Docker Eğitimi
b) Kubernetes
- Youtube → (İngilizce) Tech World With Nana Kubernetes Tutorial
- Github → Emre Savcı Kubernetes Rehberi
4) Yapay Zeka & Veri Bilimi
Makineleri insan beyniymiş gibi çalışacak şekilde programlayan, makine öğrenme algoritmalarını tasarlayan kişilerdir. Makineleri mantıklı ve verimli bir şekilde hareketler gerçekleştirmek amacıyla programlar geliştirirler.
- Website → (İngilizce)AI Roadmap
- Udemy → Merve Ayyüce Kızrak Derin Öğrenmeye Giriş
5) Siber Güvenlik
Bilgisayarları, sunucuları, mobil cihazları, elektronik sistemleri, ağları ve verileri kötü amaçlı saldırılardan korumak ve oradaki güvenliği arttırmakla sorumlu olan kişilerdir. Bu alanda çalışmak isteyenlerin TCP/IP internet protokolleri, Linux komutları, Python gibi programlama dilleri, işletim sistemlerinin mantığı ve analiz gibi konularda bilgi sahibi olması beklenir. Ayrıca TryHackMe sitesi üzerinden gerçek dünya senaryoları ile egzersiz yapabilirsiniz.
- Github → Can Değer Siber Güvenlik SSS
- Udemy → Atıl Samancıoğlu Etik Hacker Kursu
Computer Science
Burayı listeden ayrı yazmak istiyorum çünkü her yazılım geliştiricisinin bilmesi gereken konulardan bahsedeceğiz. Aşağıda bahsi geçecek teknolojiler hakkında bilgi sahibi olmanız sizi ileriye taşıyacaktır. Aşağıda ilgili teknolojiler hakkında kaynak bulabilirsiniz.
- Youtube → Kodluyoruz GIT Eğitimi
- Youtube → Bilgisayar Kavramları Veri Yapıları
- Youtube → Kodluyoruz Veri Yapıları Eğitimi
- Github → Her Dilden Veri Yapıları İmplementasyonu
- Youtube → Bilgisayar Kavramları Algoritma Analizi
Bu makalemde yazılıma nasıl başlayacağınız, nasıl ilerleyeceğiniz ve alan seçiminiz konusunda aklınızdaki şüpheleri umarım gidermişimdir. Kendinize iyi bakın. Görüşmek üzere.