Rehber Yazılıma nereden başlanır?

Selamlar. Artık son zamanlarda her gün 10 defa aynı tip nereden, nasıl başlanır? Konularının açılmasından ve insanların yasak döneminde programlamaya ilgisinin artmasından dolayı kendi çapımda ufak bir rehber hazırlamak istedim. Burada sadece öğrenmeniz gereken şeyleri ve bazıları için yardımcı olacak tavsiye ettiğim bağlantılar ekleyeceğim, bunun dışındakilerin tamamını Google üzerinden çok basit bir şekilde bulabilirsiniz. Konuyu çok fazla uzatmadan madde madde anlatmaya başlayalım.

1) İngilizce

Kesinlikle programlamaya başlamadan önce ilk yapmanız gereken şey en azından okuduğunuzu anlayabilecek, teknik dokümanları takip edebilecek bir seviyede İngilizce bilmeniz.

* Nereden öğrenebilirim?
- Ücretsiz dil öğren
- İngilizce A-Z™ (2020) | Elif Hoca'nın Keyifli Anlatımıyla!
- Özel Ders Formatında Sıfırdan Zirveye İngilizce Eğitim Seti
- Sıfırdan İleri Seviyeye İngilizce Eğitim Seti

2) Bilgisayar bilimleri

İngilizce öğrendikten sonra yapmanız gereken şey bilgisayarın temel çalışma prensiplerini, veri yapılarını, programlamanın ne olduğunu ve nasıl çalıştığı gibi basit teknik kısımları öğrenmeniz gerekiyor.

* Neleri öğrenmem gerekir?
- Bilgisayar, yazılım, donanım nedir ve nasıl çalışır.
- I/O nedir?
- Algoritma, program, programlama, programlama dili nedir?
- Bilgisayar nasıl çalışır.
- CPU, RAM, HDD/SSD, Çevre birimleri(Peripherals), İşletim sistemi nedir?
- Yazılım seviyeleri(Low Level, High Level) nedir?
- Yazılım geliştirme nedir?
- Derleyici, yorumlayıcı nedir?
- Yazılım geliştirme aşamaları(Sistem analizi, Sistem tasarımı, Algoritma, Akış şeması, Kodlama, derleme, bağlama(Linking), Çalıştırma/Test, dokümantasyon, servis) ve yaşam döngüsü nedir ve nasıl hazırlanır.
- Hata yakalama/hata ayıklama nedir ve ne işe yarar.
- Yazım hatası(Syntax error) nedir?
- Çalışma zamanı hatası(Run-time error) nedir?
- Mantık hatası(Logic error) nedir?
- Bug nedir, Debug nedir ve nasıl yapılır?
- Sözde(Pseudo) kod nedir ve nasıl yazılır?
- Sözdizimi(Syntax) nedir?
- Değişken(Variable) nedir?
- Veri tipleri(Data types) nelerdir.
- Operatör nedir?
- Şartlı ifadeler(Conditional Statements) nedir?
- Döngüler(Loops) nedir?
- Derleme(Compiling) nedir?
- Derleme aşamaları(Pre-Preprocessing, Compiling, Assembling, Linking) nedir?
- Kütüphane(Library), Altyapı(Framework), API, ABI nedir?
- Fonksiyon nedir?
- İşlev sözdizimi(Function syntax) nedir?
- Komut satırı nedir, Komut satırı argümanları nelerdir.
- Başlangıç noktası(Entrypoint) nedir?
- Çıkış kodu(Exit code) nedir?
- Kapsam(Scope) ve Global scope nedir?
- Dizi(Array), String nedir?
- Yorum satırı nedir?
- Versiyon kontrol sistemi nedir, Git nedir?
- OOP nedir?
- Sürekli entegrasyon(Continuous integration) nedir?

* Bunlar dışında öğreneceğiniz dillere bağlı olarak bazı yazılım kavramlarını da öğrenmeniz gerekebilir.
- İnternet nedir?
- Domain, IP, DNS, TCP, HTTP nedir?
- Veritabanı nedir?
- Front-end, back-end, fullstack, devops nedir?
- CMS nedir?
- Hybrid aplikasyon nedir?
- Responsive design nedir?
- Cloud programming, SaaS, PaaS ve IaaS nedir?

- Hexadecimal nedir?
- İşaretleyici(Pointer) nedir?
- İstisna(Exception) nedir?
- Hafıza, Dinamik hafıza, Heap, Stack nedir?
- Çağrı yıyını(Call stack) nedir?
- Bağlı liste(linked list) nedir?
- Hash tablosu(Hash table) nedir?
- Dosya işareleyicisi(File pointer) nedir?
- Yapı(Structure) nedir?
- Stack, Queue nedir?

* Nereden öğrenebilirim?
- CS50's Introduction to Computer Science
- Basics of Computer Science Tutorial - Tutorialspoint
- Computer Programming Tutorial - Tutorialspoint
- Computer Fundamentals Tutorial - Tutorialspoint

3) Algoritma geliştirme
- Algoritma nedir?
- Algoritma ne işe yarar.
- Algoritma nasıl oluşturulur.
- Algoritma da nelere dikkat etmek gerekir.
- Temel yazılım algoritmaları(Linear Search, Binary Search, Bubble sort, Selection sort, Recursion, Merge Sort) nelerdir, nasıl çalışır ve ne işe yarar.

* Nereden öğrenebilirim?
- Data Structure and Algorithms Tutorial - Tutorialspoint

4) Buraya kadar öğrendikten sonra yapmanız gereken şey amacınıza hizmet edecek bir programlama dili belirlemek.
- Programlamaya yeni başladıysanız ve basit uygulamalar, scriptler ya da günlük kullanım için otomasyon uygulamaları yapmak istiyorsanız Python ya da GO dili ile başlayabilirsiniz.
- Oyun geliştirmek istiyorsanız en doğru tercih olarak hazır oyun motorları kullanmanız gerekecek bundan dolayı Unreal Engine için C++ dili, Unity için C# dili ile başlayabilirsiniz ya da kendine has diller kullanan Godot gibi motorları kullanabilirsiniz.
- Arayüz içeren masaüstü uygulamaları yapmak için C# ile başlayabilirsiniz.
- Genel olarak belirli bir amacınız yoksa, her konuda işinize yarayabilecek bir dil arıyorsanız C++ ya da Rust dili ile başlayabilirsiniz.
- Web programlama yapmak istiyorsanız; Frontend için HTML, CSS ve JavaScript, Backend için NodeJS, TypeScript, GO ya da PHP ile başlayabilirsiniz,
- Mobil programlamaya yönelmek istiyorsanız Kotlin, Swift ya da React Native ile başlayabilirsiniz.
- Yapay zeka ve makine öğrenmesi konusuna ilgi duyuyorsanız Python ya da R dili ile başlayabilirsiniz.
- Gömülü sistem ya da Çekirdek seviyesinde(İşletim sistemi, Donanım vs) geliştirmeye ilgi duyuyorsanız C dili ile başlayabilirsiniz.

Konuda eksik ya da yanlış bir şey görürseniz ya da eklemek istedikleriniz olursa etiketleyip yazarsanız düzeltirim.

Umarım yeni başlayacak ya da kendini geliştirmek isteyen kişiler için yardımcı olur.
 
Son düzenleme:
Elinize sağlık kendi yorumumu da katayım , bence bir programlama dilini direk bir eğitim setinden veya dökümandan öğrenmeye başlasınlar . Teker teker bunları öğrenmeye çalışmak sıkabilir zaten ilerlerken gerek duydukları zaman öğrenecekler .
 
Sizin dedikleriniz sistematik eğitim için fakat normal kullanıcı yavaş yavaş arkada nelerin döndüğünü merak edip başlarsa nasıl başladığının bir önemi yok. İngilizceyi, algoritmayı bir dil ile uğraşırken zaten öğreniyorsun. Benim fikrim nereden başladığın değil, başladığın önemli.

Başlangıçta ihtiyacın ne olduğu anlaşılmayacağı için bilerek bir programlama dil seçmek pek mümkün değil. Genellikle Python başlangıç için popüler olduğundan Python'dan başlar mantığı kavrar ve ihtiyaca yönelir.
 
Hocam çok güzel bir amaca hizmet edip böyle bir rehber hazırlamışsınız ancak yine de bu bir şeyi değiştirmeyecek ve her gün yine bu konudan 10 tane konu açılmaya devam edecek. Maalesef bazı insanlar gerçekten de çok üşengeç.
 
Yeni başlayacak kişilere daha basit bir anlatıma gidelebilir.

Ve en önemlisi sorulara cevap vermeli. Örneğin "Hangi dili öğrenmek lazım" tarzı bir soruya bu rehber cevap olamaz yani bu rehber hedef kitlesi nereden başlanır değil yeni öğrenmeye başlayanlar için tavsiyeler olmalı.
 

Yeni konular

Geri
Yukarı