Yazılım öğrenmeye nereden başlanır?

Üstteki arkadaşa katılıyorum ve eklemek istiyorum Türkçe falan da kullanma noktalama işaretleri falan var ıyy o ne öyle.

Yahu, ne alakası var hocam? Adam bu işlerle şu ana kadar hiçbir ilgisi olmadığını ve yeni başlayacağını söylemiş ve şahsen ben C# ile Unity üzerinden başlamaya kalktığımda ilk başlarda bu dilin syntaxında zorlanmıştım. 0'dan başlayan birinden bahsediyoruz burada Python'da insan diline benzeyen bir dil olduğu için yüksek seviyeli bir dil olarak geçiyor ve kim ne derse desin başlangıçta alışmasının çoğu dile nazaran daha kolay olacağını düşünüyorum.
 
Son düzenleyen: Moderatör:
Öncelikle yazılıma başlanmaz. Yazılım, programlama sonucu ortaya çıkan şeydir. Komutlar, programlar bunlar yazılımdır. Bizim öğrenmek istediğimiz şey programlama. Programlamaya nereden başlamalıyız buna bakacağız.

Başlamadan önce eğri oturup doğru konuşalım. Bu işe tam mesai ayırmadan, mesela günde iki saat falan çalışarak bu işten para kazanır hale gelemezsiniz. Global seviyede bir işi ise hayatta bulamazsınız. Bunlar gerçekler. Eğer ki bunu meslek haline getirecekseniz, forumlarda gelen "Web üzerine çalışmak istiyorsan HMTL, Android için Java" gibi tavsiyelerden fazlasına ihtiyacınız olacak. Her şeyden önce de disipline, araştırma becerisine. Fakat şöyle ufak bir adım atmadan da hayatınız boyunca bu işi yapmak istediğinizin kararını vermek zorunda değilsiniz. Okumaya devam edelim.

Hobi olarak, meraktan, ilgisini çektiği için başlamak isteyenleri konuşalım. Mesela bot yapmak isteyenler ya da bir web sitesi.
Ben programlamaya ilk defa başlayan insanlara öncelikle bilgisayar mimarisi, ağ bilgisi, bilgisayar bilimi konularının önerilmesini mantıklı bulmuyorum. Adam bir an önce kendi oyununu yapmak istiyor, hesap makinesi falan yapmak bile zor geliyor bu kişiye. Büyük oynamak istiyor. O yüzden öğrenilmesi belki de aylar alacak olan teorik konuları çalışmak istemiyor. Bana kalırsa başlangıçta ihtiyacı da yok. En başından bahsediyorum. Döngüyle birden yüze kadar sayı yazdırmaktan, konsolda doğum tarihi alıp yaş döndürmekten. Hatta WinForms'la basit bir proje yapmaktan. Bunlar sadece temel programlama konseptlerini bilerek yapılacak şeyler. İlerledikçe zaten neye ihtiyacı olduğunu kendisi keşfediyor, sadece başlangıç adımını atması lazım.

İngilizce meselesi

İngilizce konusunda da aynı şekilde düşünüyorum. İngilizce mutlaka ve mutlaka şart. Olmadan ilerlemek imkansız. Fakat hevesli bir şekilde programlama çalışmak isteyen birinden önce oturup İngilizce'yi iyice öğrenmesini isteyemeyiz. Öğrenmez de zaten. En başında çok fazla da ihtiyacı olmayacak. Yine de programlama yaparken kullandığımız kelimelerin bile İngilizce olması sebebiyle daha kolay anlamak ve öğrenmek açısından temel düzeyde de olsa İngilizce bilgisi çok yararlı olur.

Şimdi, "sıfırdan programlamaya başlamak istiyorum" dediniz. Diyelim ki bir hedefiniz yok, yani oyun yapmak istiyorum, web sitesi yapmak istiyorum derdiniz falan yok. Bir yerden başlayayım diyorsunuz. Güzel. Unutmayın ki nereden başlarsanız başlayın göreceğiniz şeyler aynı olacak. Hangi dili öğrenmeye başlarsanız başlayın, şu temel konseptleri benimsemeniz gerekecek:
  • Değişkenler (variable)
  • Veri tipleri (int, string vs.)
  • Döngüler (for, while vs)
  • Mantıksal işlemler (toplam, çıkarma, karşılaştırma vs.)
  • Ekrana veri gösterme / veri okuma
Bunlar gibi, en temel fikirleri göreceksiniz öncelikle. Hangi dili öğrenirseniz öğrenin bunlar değişmez. Yani işin özünde dilleri değil, programlamayı ve anahtar bir kavram olan 'algoritmaları' öğrenmelisiniz. Tabii durup dururken değişken nedir diye öğrenmenin de bir anlamı yok. Doğal olarak bir dil aracılığıyla öğreneceksiniz bunları. Ama hangi dil?

Herhangi bir dil. Araştırmalarınız sonucunda illa daha yakın hissettiğiniz, daha çok içinize sinen bir tanesi olur. Tereddüt etmeden başlayın. Şu an başladığınız bir dili, üç dört ay sonra bırakabilir ve bir daha ilgilenmeyebilirsiniz. (Benim öyle oldu.) Fakat burada öğrendiğiniz konseptler ve kavramlar bir sonraki dilde de hemen hemen aynı olduğu için zorluk yaşamayacaksınız. (Benim öyle oldu.) Boşa falan da gitmeyecek. Zaman kaybı da olmayacak.

Buna rağmen kararsızım, kesin bir şey söyle derseniz benim tavsiyem C# olur. Bana çok kolay gelen bir dil. Visual Studio da güzel bir IDE. Siz yazarken sırada gelebilecek şeyleri sıralaması neyin ne olduğunu anlamak için çok kullanışlı. Deneme yanılmayla bile birçok şey öğrenebiliyorsunuz bu özellik sayesinde. İsterseniz Windows Forms kullanarak ortaya gözle görülür bir arayüz çıkartabileceğiniz için tatmin de edici. O yüzden başlangıç için iyi bence. Tabii buna herkesin cevabı farklıdır. Mesela çok kolay ve çok fonksiyonlu olduğu için Python önerenler de çok fazla.

Ben ne yapmak istediğimi biliyorum, öyle rastgele bir adım atmayayım, daha kesin bir şey olsun da diyebilirsiniz. Bunun için zaten çok genel geçer fikirler var:
  • Oyun: C#, C++ (Unity ve Unreal Engine oyun motorları)
  • Web: HTML & CSS, JavaScript (Çalışan modern bir web sitesi kurmak için olan kısım)
  • Android: Java
  • iOS: Swift

Bunları böyle dizilmiş şekilde her konunun altında görürsünüz. Mutlak doğrular değil elbette ( C# ile de Android ve iOS yazılabilir mesela) ama genel fikirler bunlar. Bu listeye bakarak bir adım atmanın yanlış olacağını da düşünmüyorum. Yani uzun lafın kısası, en popüler dillerden birini seçecek ve öğrenmeye başlayacaksınız. O dil hayatınızın sonuna kadar size yapışmayacak sonuçta, o yüzden en mükemmel kararı vermek zorunda değilsiniz.

Peki nereden ve nasıl öğreneceksiniz?
Herkesin öğrenme stilleri farklı. Kimisi kitaptan çalışır, kimisi video izler, kimisi yaparak öğrenmeyi sever. Hepsini karıştırabilirsiniz de. Başlangıç seviyesinde en popüler olan kaynakların kötü olduğunu düşünmüyorum. Yanlış bir şey öğretecek halleri yok. İster Udemy, ister BTK Akademi, ister YouTube'a X ile programlamaya giriş yazın ve başlayın. Bunlara ek olarak çeşit çeşit platform ve çeşit çeşit kurs var. Çok tanınan insanlardan genelde kalitesiz iş çıkmaz. İlla tavsiye isterim derseniz onları tercih edebilirsiniz. Anlatımı en çok hoşunuza gideni seçin. En samimi bulduğunuzu falan. Giriş videolarını izleyerek iyi kötü bir karar verebilirsiniz zaten. (Ve bence paralı kurslara gerek yok.)

Kitaplar da aynı şekilde. Bakınca canınızı sıkmayan herhangi bir kitabı seçin gitsin. Kodlab yayınları en meşhur yayınlardan biri. Şans verebilirsiniz.

Uygulamalar da dolu. Ben bilgisayarım yokken Sololearn uygulamasına bakıyordum. Aklımda bir tek o kalmış ama ufak bir Google aramasıyla yüzlerce uygulama bulabilir, en çok hoşunuza gideni kullanabilirsiniz.
Tekrar ediyorum, bu kaynakların hiçbirinde en iyi öğretmek diye bir şey yok. Anlatılanlar basit, temel bilgilerdir ve anlayıp anlamamak kişiden kişiye değişir. Sizin için en iyi olanı ancak siz bulabilirsiniz.

Buna ek olarak birkaç tavsiyem var:
Birincisi hangi kaynaktan çalışırsanız çalışın mutlaka kodları kendiniz yazmaya çalışın. Önce o yazsın sonra siz yazın, takıldığınız yerde tabii ki bakın. Ama sadece izleyerek ya da okuyarak geçmeyin.

Deneme yanılmaya da bakın. Mesela çalıştığınız kaynak birden yüze kadar sayıları yazdırdı. Siz de yüzden bire kadar yazdırmaya çalışın. Uğraşın. Denedikçe "aa bu böyle oluyormuş" ve "bu yüzden yanlışmış" cümlelerini kurarsınız. Ve aslında öğrenme de burada gerçekleşir.

Temel konseptleri öğrendikten sonra tamam şimdi başlayayım deyip kendiniz bir projeye başlamayın. Yapmak istediğiniz bir proje örneğinin baştan sona yapılışını izleyin. (Tabii kendiniz de yazarak.) Bunu yaparsanız projede işler karıştıkça, dosyalar çoğaldıkça düzeninizi nasıl koruyacağınızı, nasıl düzenli kod yazacağınızı keşfedersiniz. Benim için bu gerçekten çok şeyi değiştirdi diyebilirim.
Siz bu temel adımları attıktan ve programlama dilini değil, programlamayı öğrendikten sonra, sıradaki adımlar gelecek. Bu sefer ne yapmanız gerektiğini daha iyi biliyor olacaksınız. Zamanla daha büyük işler yapmak için yukarıda bahsettiğim bilgisayar bilimleri konularını öğrenmeniz gerekecek, dediğim gibi İngilizce gerekecek.
Bu yazdıklarım daha çok "hiçbir bilgim yok, nasıl başlarım?" ya da "web sitesi yapmak istiyorum, nereden başlarım?" gibi soruları olanlar içindi. Sadece internete programlamaya giriş yazacaksınız ve girişinizi yapacaksınız.

Aklıma gelenler bunlar oldu. Umarım gerekli tüm noktalara değinmişimdir. Yine de aklınızda kalan şeyleri burada sorun, hem ben hem de diğer tecrübeli arkadaşlar cevaplasın. Ama lütfen artık bu konuda başlık açmayın. Unutmayın ki özel durumunuz hiçbir şeyi değiştirmeyecek. Yani 12 yaşında olmanız, 15 yaşında olmanız, şunu yapmak istemeniz, bu projenin aklınızda olması bir şeyi değiştirmeyecek. Ne olursa olsun bu bahsettiğim noktalardan geçeceksiniz. Sorduğunuz soruların altına gelen, artık ezberlediğimiz "Ne yapmak istediğine karar vermelisin. ", "Başlangıç için Python en iyisi" gibi cevaplar değişmeyeceği gibi, sizin hayatınızda da bir şey değiştirmeyecek.
İyiymiş. Baya iyi yazmışsın. :D
 

Yeni konular

Geri
Yukarı