Yazılım Nasıl Öğrenilir?

Adem Efe Devrez
TechSheet
Published in
5 min readDec 8, 2023

Önceki yazımda ilk yazılım dilinizi nasıl seçeceğinizden bahsetmiştim. Bu yazımda da öğrenmeye karar verdiğiniz diller için nasıl kaynak seçeceğinizi, nasıl öğrenme planı yapacağınızı ve nasıl pratik yapacağınızı konuşacağız. Yani özetle, yazılım nasıl öğrenilir? Bu yazıda bunu öğreneceğiz. O hâlde başlayalım.

Yazılım öğrenmeye hazırlanan havalı bir ahtapot

Kaynak Seçmek

Öğreneceğimiz yazılım dilini seçtiğimize göre ilk iş, seçtiğimiz dili öğrenebileceğimiz güzel bir kaynak bulmak olacak. Nasıl bir kaynak seçelim? Video serisi mi arayalım, kitap mı okuyalım, kurs mu alalım? Bu sorunun cevabı basit, hangi kaynak işinize yarıyorsa onu kullanın. Sonuçta herkes farklı öğrenme biçimlerine sahip. Tabi tek bir tarzda gitmeye gerek yok, tarzlar arası geçişler yapabilirsiniz ve yapmalısınız da.

Önceki yazımda Python, JavaScript ve GDScript dillerinin yazılıma başlamak için ideal olduğunu söylemiştim. Bu üç dil için kendi denediğim ve güzel bulduğum birkaç kaynağı paylaşacağım. Herhalde hiçbiri için reklam almadığımı belirtmeme gerek yoktur. O yüzden tamamen samimi bir şekilde -ve tamamen ücretsiz- kaynaklar paylaşacağıma emin olabilirsiniz.

Python öğrenmek için en güzel kaynağın Harvard Üniversitesi’nin Python ile Yazılıma Giriş — CS50P dersi olduğunu düşünüyorum. Bu dersi şurada ücretsiz bir şekilde yayınlıyorlar, hem Python hem de genel olarak Yazılım için oldukça sağlam bir kaynak. Yani Harvard’dan bahsediyoruz, gidip bakın derim.

JavaScript için iki kaynak önereceğim. Eğer doğrudan web sitesi yapma amacı güdüyor ve JS’yi bu yüzden öğrenmek istiyorum diyorsanız The Odin Project’e göz atmanızı öneririm. Bu eğitim size bir web yazılımcısı olmanız için öğrenmeniz gereken her şeyi adım adım öğretiyor, bu yüzden doğrudan JavaScript kısmına atlamayın. Foundations kursunun en başından yavaş yavaş, emin emin ilerleyin.

Eğer yazılımın kendisini öğrenmek istiyorsanız ve JavaScript’i ilk diliniz olarak seçtiyseniz The Eloquent Javascript kitabı bu konuda sağlam bir kaynaktır, bunu da önerebilirim. Ayrıca eğer kitap formatı hoşunuza gitmiyorsa FreeCodeCamp’in JavaScript Algoritmaları ve Veri Yapıları kursuna da bakabilirsiniz.

Eğer oyun yapımından ilerlemek istiyorsanız ve oyun motorunuz olarak Godot’u seçtiyseniz GDQuest’in Sıfırdan GDScript Öğren interaktif kursu herhalde şu an internet üzerinde bulabileceğiniz en iyi ücretsiz GDScript eğitimidir. Ayrıca diğer oyun yazılımı kurslarının çoğunun aksine daha önce yazılım bildiğinizi varsaymadığı için sıfırdan, balıklama atlamak için de uygun bir kaynaktır.

Kendim çok kullanmadığım için Türkçe kaynak önerme konusunda size daha az yardımcı olabileceğim. Python için Uzaktan Akademi’nin şu Python eğitimini ve Web Yazılımı için Patika Dev’in Başlangıç Seviye Frontend Web Development Patikası dersini önerebilirim.

Kaynak İstifleme Problemi

Yukarıda birkaç tane ücretsiz kurs paylaşmış olsam da Udemy, Coursera, edX gibi platformların çoğunda kurslar ücretli oluyor. Bu kurslara karşı değilim, yalnızca kendim tercih etmiyorum. Ancak bu yoldan gitmeyi tercih eden arkadaşlarımdan birkaçında ortak bir davranış biçimi gözlemledim, biraz bundan bahsetmek istiyorum.

“Ya abi, benim Udemy’de on tane Python kursum var.” diyen bir kişi gördünüz mü? Tam da bundan bahsediyorum. Bu durumda birisi bir eğitim satın alıyor, sonra ilk birkaç videoyu izliyor. Hemen ardından aynı konuda başka bir eğitim satın alıyor ve ondan biraz izliyor, sonra başka bir eğitim daha alıyor ve bu böyle devam ediyor. Hem daha çok eğitime sahip olmanın daha avantajlı olduğuna dair bir yanılgı hem de satın almanın hazzı bir döngü yaratıyor. Bu kişilerin durumunu, doymak için on elmadan birer ısırık alan birine benzetebiliriz. Hatta bu benzetme bile hatalı olur çünkü on elmadan birer ısırık alan birinin en azından doyma ihtimali var ancak on eğitimin ilk videolarını izleyip bırakan birinin birazcık dahi yol alma ihtimali çok ama çok az.

Diyelim ki bir kaynak seçtiniz ama yeterli olduğunu düşünmüyorsunuz, bir başka kaynağın daha iyi olduğuna kanaat getirdiniz. O zaman ona geçebilirsiniz, hiç sorun değil. Daha önce de bahsetmiştik; yazılım hata yapmanın, uzun uzun plan yapmaktan daha avantajlı olduğu bir sektör. Eğer şu anki kaynağınızın yeterli olmadığını düşünmüyorsanız, yalnızca bir kaynağa daha sahip olmanın sizin için daha yararlı olacağını düşünüyorsanız bunu yapmaya hiç gerek yok. Yetersiz geldiğini düşünmeye başlayana kadar kaynağınızda ısrarcı olun, benzetme yerindeyse bir elma alın ve elmanın tamamını yiyin. Böylece hem boşuna para harcamamış olacaksınız hem de aldığınız kaynağı hakkını vererek özümlemiş olacaksınız.

Basit Bir Çalışma Programı Hazırlama Zamanı

Dilimizi seçtik, kullanacağımız kaynağı seçtik; artık başlayabiliriz. Doğrudan kaynağı açıp öğrenmeye başlamayı tercih edebilirsiniz, hatta bunu yapmanızı tasvip ediyorum ancak bazılarımız önce bir çalışma programı hazırlamayı tercih edebilir. Eğer bunu yapmak istiyorsanız nelere dikkat etmelisiniz? Kısaca bundan bahsedelim.

Dürüst olmak gerekirse kaynağımıza karar vermişken direkt içine balıklama atlamak yerine önce çalışma programı hazırlamamız gerektiğini düşünüyorsak bunun gizli bir erteleme güdüsü olduğunu düşünmemiz doğru olabilir. Hatta biz içten içe bunun için “Önce bir program hazırlayalım.” demiyorsak bile pratikte gerçekten çok önemli olmayan bir adım bu. Yine de program hazırlamaya kararlıysanız bu adımı nasıl hızlıca ancak emin bir şekilde geçebiliriz?

Öncelikle hazırlayacağımız programın esnek olmasına dikkat etmeliyiz. Ekimin şu haftasında bu konu bitecek, sonra kasımın bu gününe kadar şu konu bitecek diye program yaparsanız yanlış giden ilk günde bu programın kırılması, kayması, işlevini yitirmesi çok kolay olacaktır. Bunun yerine tarihleri katı olmayan, kafadan her bir konuya belli bir zaman dilimi ayırdığımız basit bir program yapabiliriz. Elimdeki eğitimin altı ünitesi varsa, benim de iki ayım varsa, her bir üniteye birer hafta verip iki haftalık hata payı bırakabilirim.

Örnek bir kurs içeriği

Mesela yukarıdaki gibi bir eğitim olduğunu düşünelim. Her bir üniteye birer hafta verdik. Sonra ise kaynağa başladığım zaman ilk ünitenin yalnızca gerekli programları kurmak üzerine olduğunu ve bir günde bittiğini gördüm. Tamam, hemen yarın ikinci üniteye geçebilirim. Böylece elimdeki yedek zaman bir hafta daha artmış olur.

Diyelim ki döngüler konusuna geldik ancak hâlâ kafamda oturmayan bazı noktalar var, biraz daha pratik yapmam gerek. Hiç sorun değil, üç hafta ek süremiz vardı. Bu üniteye ayıracağım zamanı bir hafta daha uzatıp konuyu iyice aklımda oturtabilirim.

Eğer eğitime başlamadan her bir kısma tarihler atayıp programa öyle geçseydim, ilk hafta ünitem erken bitince o haftayı boş geçirseydim ve döngüler kısmına geldiğimde zamanım dolduğunda konuyu hâlen aklımda oturtmamışken yine de geçseydim o zaman katı ve güzel duran programım benim lehime değil, aleyhime çalışıyor olurdu. Bu yüzden madem bir program hazırlamada kararlıyız, basit ve esnek bir program yapıp bu faslı orada bitirelim. Çünkü bir eğitime başlamadan önce uzun uzun program hazırlamak, spora başlamadan önce uzun uzun egzersiz programı hazırlamaya benziyor. Basit ve kabataslak bir plan iyi olsa bile eğer çalışmaya başlamazsam, program hazırlamanın örtülü bir erteleme rutinine dönüşmesi gayet an meselesi. O yüzden program hazırlama faslını mümkünse bir günde bitirip doğrudan eğitime geçmeliyiz.

Toparlamak Gerekirse

Kullanacağımız kaynağı bulduk ve planımıza yaptık, artık elimizi kirletme zamanı geldi. Düzenli bir şekilde öğrenmeye başladık, peki öğrendiklerimizi ne sıklıkla pratiğe dökmeliyiz? Yaptığımız küçük programları başkaları ile nasıl paylaşabiliriz? İlk projemi nasıl yaparım? Eğer bu soruların cevaplarını merak ediyorsanız sonraki yazımda görüşmek üzere!

--

--