Skip to content

Latest commit

 

History

History
168 lines (100 loc) · 9.99 KB

File metadata and controls

168 lines (100 loc) · 9.99 KB

Yazılıma Yeni Başlayanlar İçin SSS

Yazılıma yeni başlamak heyecan verici (ve bazen korkutucu) bir yolculuk olabilir. Bu süreçte aklınıza birçok soru gelebilir. Bu metinde, yeni başlayanların aklına gelebilecek popüler soruları, günümüz teknolojisine (AI, Yeni Diller, Trendler) göre güncellenmiş cevapları bulabilirsiniz.

⚠️ Ufak Bir Not: Unutmadan, benim asıl mesleğim yazılım geliştiriciliği değil, Siber Güvenlik. O sebeple burada yanlış veya eksik gördüğünüz bir bilgi varsa, repoya bir Pull Request (PR) atıp düzeltirseniz topluluğa harika bir katkı sağlamış olursunuz!


📚 İçindekiler (Tıklayarak Git)

1. Yazılım nedir?

Yazılım, bilgisayarlara ne yapmaları gerektiğini söyleyen talimatlar dizisidir. Bu talimatlar; metin, kod ve grafikler gibi farklı biçimlerde olabilir. Donanım "beden" ise, yazılım "ruh"tur.

2. Programlama nedir?

Programlama, bilgisayarlara talimatlar verme sanatıdır. Programcılar, insan diline yakın komutları (yüksek seviyeli diller) bilgisayarın anlayacağı dile (makine dili) çevirmek için çeşitli araçlar kullanırlar.

3. Hangi programlama dilini öğrenmeliyim?

Bu soru artık "Ne yapmak istiyorsun?" sorusuna daha sıkı bağlı. Güncel duruma göre:

  • Web (Frontend): HTML, CSS, JavaScript (ve TypeScript - artık standart haline geliyor).
  • Yapay Zeka & Veri Bilimi: Python (Tartışmasız kral).
  • Kurumsal & Mobil: Java, C# veya Kotlin/Swift.
  • Sistem Programlama & Yüksek Performans: Rust, C++, Go.

3a. Yapay Zeka (AI) kodlamayı bitiriyor mu? İşsiz mi kalacağız?

Hayır, bitirmiyor ama değiştiriyor. Eskiden "syntax" (kodun yazım kuralı) ezberlemek marifetti. Şimdi ise "Problem Çözmek" ve "Mimari Kurmak" marifet. AI (ChatGPT, Claude, Gemini), senin "Junior Yazılımcı" asistanın gibidir. Kodun amelelik kısmını (boilerplate) o yapar, sen ise orkestra şefi gibi onu yönetirsin. Yazılımcılık ölmüyor, "Prompt Engineering" yeteneğiyle birleşerek evriliyor. Kodu AI yazsa bile, o kodun güvenli, verimli ve doğru olup olmadığını anlamak için yine yazılım bilmen gerekiyor.

3b. Cursor, Copilot ve "Vibe Coding" nedir? Nasıl kullanmalıyım?

  • GitHub Copilot: Kod yazarken sana satır veya fonksiyon öneren akıllı asistanın.
  • Cursor: Şu an dünyanın en popüler AI tabanlı kod editörü (VS Code fork'u). "Şurayı şöyle değiştir", "Bu hatayı düzelt" diyerek sohbet eder gibi kod yazmanı sağlar.
  • Vibe Coding: Andrej Karpathy'nin ortaya attığı bir terim. Kodu satır satır yazmak yerine, AI'a ne istediğini tarif ederek, akışta kalarak (vibe), hızlıca prototip çıkarma ve kodlama şeklidir.

Tavsiye: Yeni başlıyorsan, mantığı kavramadan her şeyi AI'a yazdırma. Önce "Nasıl çalışıyor?" diye sor, öğren, sonra AI'a yazdır.

3c. Neden herkes Rust ve Go konuşuyor?

  • Rust: Bellek güvenliği (Memory Safety) sunan, C++ kadar hızlı ama ondan daha güvenli bir dil. Linux çekirdeğine bile girdi. Zor bir dildir ama öğrenirsen "elit" kategorisine girersin. Geleceğin sistem dili olarak görülüyor.
  • Go (Golang): Google'ın dili. Basit, hızlı ve özellikle Cloud/DevOps dünyasında (Docker, Kubernetes) standart haline geldi.

4. Programlama öğrenmek zor mu?

Programlama öğrenmek, sabır ve emek gerektiren bir süreçtir. Başta beyniniz yanabilir, bu normaldir. Ancak, internette (YouTube, FreeCodeCamp vb.) sayısız kaynak var. Modern araçlar (AI) öğrenme sürecini eskisine göre çok daha hızlandırdı. Takıldığın yeri artık ChatGPT'ye sorup anında cevap alabiliyorsun.

5. Programlama öğrenmek için ne kadar zamana ihtiyacım var?

Temel mantığı (değişkenler, döngüler, fonksiyonlar) kavramak 1-2 ay sürebilir. Ancak "Ben oldum" demek yıllar alır. Yazılımda öğrenme asla bitmez.

6. Yazılım geliştirme için hangi becerilere ihtiyacım var?

Problem çözme, analitik düşünme, araştırma yapma (Google/StackOverflow kullanma) ve artık AI araçlarını verimli kullanma (Prompting) becerisi. Ayrıca İngilizce... Lütfen İngilizceyi halledin.

7. Yazılım geliştirmede hangi kariyer fırsatları var?

Frontend, Backend, Full-stack, DevOps, Mobil Geliştirme, Veri Bilimci, AI Mühendisi, Siber Güvenlik Uzmanı, Oyun Geliştirici... Liste uzayıp gidiyor.

8. Yazılım geliştirici olarak ne kadar kazanabilirim?

Bu tamamen yetkinliğine ve çalıştığın pazara (Türkiye vs Global) bağlı. Dolar/Euro ile remote çalışma fırsatları sayesinde potansiyeli çok yüksektir. Ancak "kursu bitirdim hemen yüksek maaş" beklentisi gerçekçi değildir, tecrübe kazandıkça gelir artar.

9. Kendimi nasıl geliştirebilirim?

  • Proje Yapın: Sadece video izlemeyin, kendi "To-Do List", "Hava Durumu" vb. uygulamalarınızı yapın.
  • GitHub Kullanın: Yaptığınız her şeyi GitHub'a yükleyin.
  • Open Source: Açık kaynak projelere katkı verin.
  • Topluluk: Discord sunucularına girin, insanlarla tanışın.

10. Hangi kaynaklardan yararlanabilirim?

En aşağıda kapsamlı bir liste verdim ama özetle: FreeCodeCamp, YouTube (Tutorials), Udemy, Coursera ve resmi dokümantasyonlar.

11. Hatalardan nasıl öğrenebilirim?

Hata (Bug) yapmaktan korkmayın. Yazılımcının hayatı hata çözmekle geçer. Hata mesajını kopyalayıp Google'a veya ChatGPT'ye yapıştırmak, çözümün yarısıdır.

12. Motivasyonumu nasıl koruyabilirim?

Büyük projeler yerine küçük, bitirebileceğiniz projeler yapın. "Bugün sadece bir buton yapacağım" demek bile ilerlemedir. Tükenmişlik (Burnout) yaşamamak için molalar verin.

13. Yazılım geliştirme stresli bir iş mi?

"Deadline" (teslim tarihi) baskısı ve çözülemeyen buglar stres yaratabilir. Ancak uzaktan çalışma imkanı ve yaratıcı tatmin, bu stresi dengeler.

14. Yazılım geliştirme için hangi araçlara ihtiyacım var?

  • Bir bilgisayar.
  • Bir Kod Editörü (IDE): VS Code (veya Cursor).
  • Git: Versiyon kontrol sistemi (Mutlaka öğrenin!).
  • İnternet tarayıcısı.

15. Yazılım geliştirmeyi nereden öğrenebilirim?

Online kurslar, Bootcamp'ler, Üniversite veya tamamen "Alaylı" (Self-taught) olarak kendi kendine. Diplomanın en az sorulduğu sektörlerden biridir; portföyün konuşur.

16. Yazılım geliştirmeye başlamak için ne kadar para gerekir?

Sıfır. İnternet bağlantın ve bir bilgisayarın varsa kaynakların %90'ı ücretsizdir.

17. Yazılım geliştirme için iyi bir bilgisayara ihtiyacım var mı?

Başlangıç için hayır. Tarayıcı açan herhangi bir laptop iş görür. İleride mobil uygulama (Android Studio/Xcode) veya Oyun (Unreal Engine) geliştirecekseniz güçlü donanım gerekir.

18. Kodları çalıştırmak için internet bağlantısına ihtiyacım var mı?

Kod yazmak ve çalıştırmak için hayır. Ama araştırma yapmak, kütüphane indirmek ve AI asistanları kullanmak için evet.

19. Yazılım geliştirmede uzmanlaşmam ne kadar sürer?

"Junior" seviyesine gelmek ortalama 6-12 ay sıkı çalışma gerektirir. "Senior" olmak ise yıllar süren tecrübe işidir.

20. Serbest (Freelance) yazılım geliştirici olarak nasıl iş bulabilirim?

Upwork, Fiverr, Bionluk gibi siteler başlangıçtır. Ancak en iyi işler Networking (çevre) ve GitHub/LinkedIn profilinizin güçlü olmasıyla gelir.

21. Yazılım kategorileri nelerdir?

  • Sistem Yazılımı: İşletim sistemleri (Windows, Linux), driverlar.
  • Uygulama Yazılımı: Excel, Chrome, Spotify gibi son kullanıcı programları.
  • Gömülü Yazılım: Akıllı saatler, arabalar, buzdolapları içindeki yazılımlar.
  • Web/Mobil: Siteler ve telefon uygulamaları.
  • Yapay Zeka: Makine öğrenmesi modelleri.

22. Yazılım Geliştirme Yaşam Döngüsü (SDLC) nedir?

Yazılımın doğumundan ölümüne kadar geçen süreçtir: Planlama -> Analiz -> Tasarım -> Kodlama -> Test -> Bakım.

23. Framework ve Library arasındaki fark nedir?

  • Library (Kütüphane): Sen onu çağırırsın. Çantandaki alet gibidir, ihtiyacın olunca çıkarır kullanırsın. (Örn: React, jQuery)
  • Framework (Çatı): O seni çağırır. Evin iskeleti gibidir, kuralları o koyar, sen odaları döşersin. (Örn: Angular, Django, Flutter)

24. Error handling (Hata Yönetimi) nedir?

Kullanıcı programı çökertmesin diye önlem almaktır. "Try-Catch" blokları ile "Hata olursa programı kapatma, kullanıcıya düzgün bir uyarı göster" demektir.

25. Interface, OOP ve Aspect-Oriented nedir? (Kısaca)

  • OOP (Nesne Yönelimli): Dünyayı nesneler (Araba, İnsan, Kedi) olarak modellemektir. En yaygın yaklaşımdır.
  • Interface-based: Nesnenin "ne olduğu" ile değil "ne yapabildiği" ile ilgilenir.
  • Aspect-oriented: Loglama, güvenlik gibi uygulamanın her yerini kesen (cross-cutting) işleri ana koddan ayırmaktır.

Yararlı Kaynaklar

Linklerin, uzun ve genis halini, ALTIN MADENI KAYNAK HAVUZU'nda bulabilirsiniz