Bir programlama dilini neden öğrenmek isterim? Bunun çeşitli cevapları var tabii ki. Örneğin çalıştığım projede kullanılan bir dil olabilir ve bu nedenle o dili öğrenmem gerekiyordur. İleride bu dil işime yarayabilir diye düşünüyor olabilirim. Aklımdaki projelere uygun araçlar olduğu için öğrenmek isteyebilirim. Belki de sadece yeni bir şey öğrenmek için.
Programlama dili öğrenmek için kullandığım üç temel yöntem var:
- Programlama dilini bilgisayarıma kurup dil ile ilgili dökümanları ya da bir kitabı sırayla okuyup denemek.
- İlgilendiğim bir alanda bir proje seçmek ve o projeyi öğrenmek istediğim dil ile programlamak.
- Hackerrank gibi sitelerdeki soruları çözmek.
Birinci yöntemde vurgulamak istediğim nokta dökümanlar ya da kitaplar değil tabii ki. Bu kaynaklara her yöntemde ihtiyacım var. Yöntemlerdeki farklar öğrenme yolculuğunda kullandığım araçlar değil de daha çok bu sırada izlediğim rotalar.
İlk programlama dillerimi kitaplardan öğrendim. Üniversitede öğrendiğim dilleri de bu yöntem altında değerlendiriyorum. Kaynaklar yardımıyla bir dili öğrenmek ve bu bilgileri denemek o dilin inceliklerini öğrenmek için iyi bir yöntem olabilir. En azından bu şekilde büyük olasılıkla dili doğru kaynaklardan, dilin hangi fikirlere önem verdiğini de anlayarak doğru şekilde öğrenebiliriz.
Birkaç dil öğrendikten sonra bu yöntem bana verimsiz gelmeye başladı. Verimsizliği biraz açıklamam lazım tabii. Örneğin her dilde ilk kısımlar, değişkenler, döngüler, fonksiyonlar gibi aynı kavramlar üzerine oluyor. Bu kadar tekrar hoşuma gitmemeye başladı haliyle. Oraları hızla geçince de başka bir sorunla karşı karşıya kaldım. Kavramlar ne kadar aynı olsa da buralarda kullanılan isimler farklı olabiliyor. Bir dilin değişken dediğine diğeri değer ya da nesne diyebiliyor. İlerdeki konularda bu kavramlarla karşılaşınca nasıl olsa biliyorum bunları diye hızla geçtiğimde bir süre sonra bazı çelişkilerle karşılaştığım oldu. Çelişkilerin nedeni tabii ki o sıkıcı ilk üniteleri atladığımdan kavramların tanımlarının kafamdaki tanımlardan farklı olduğunu fark edememiştim.
Demek ki yeni bir dili kaynaklardan öğrenmek için de yine kaynaklardaki sırayı takip etmem gerekiyordu. Tabii ki her istasyonda aynı süre duraklamama gerek yoktu ama yol haritası hemen hemen tamamen benim kontrolüm dışındaydı.
Eğer bir dili o an çok iyi öğrenmeme gerek yoksa ama ilerisi için yatırım yapmak istiyorsam o zaman elimdeki bazı projeleri o dilde yapmayı deniyorum. Bu projeler kişisel, hobi projeleri olabildiği gibi şirket içinde de olabiliyor. Bu şekilde dili öğrenme yolculuğunu gerçek bir hikayenin üzerine oturtmuş oluyorum ve motivasyon açısından da faydalı oluyor ama profesyönel işlerde biraz dikkatli olmak gerekiyor. Örneğin yöneticilere ya da arkadaşlara o proje için neden o dili seçtiğimi açıklamam gerekebiliyor. Kişisel projelerde böyle bir sorun yok ama. İşin geri kalan kısmında yine kaynakları okumam gerekiyor ama bu sefer kendimi motive etmem daha kolay oluyor. Belli bir hedefim var ve yarım yamalak da olsa dil öğrenmenin getirisini hemen alıyorum.
Üçüncü yöntemi, hackerrank ve benzeri siteleri yeni yeni kullanmaya başladım. Bunu da daha çok bildiğim dilleri unutmamak ya da yeni özelliklerini deneyerek öğrenmek için yapıyorum. Bu şekilde bir dil gerçekten öğrenilemez sanırım ama boş zamanlarda kısa antrenmanlar için iyi olabilir.
Bu kullandığım yöntemlerin doğru kombinlendiği zaman iyi sonuçlar vereceğine inanıyorum. İlk diller bence birinci yöntemle daha iyi öğrenilebilir, çünkü hiçbir dil bilmeden bir projeyi, hobi projesi bile olsa yapmaya kalkmak bu sırada verilecek bir sürü yanlış karar yüzünden hem zorlaştırır hem de dile karşı yalancı bir güvensizlik yaratabilir. Bir dili ve program geliştirmeyi iyi öğrendikten sonra yeni dillerde ikinci yöntem daha iyi sonuç verebilir. Bu sırada hem bir projenin başarılı olmasına şahit olmanın heyecanı da öğrenmeyi destekleyici bir etki yapabilir. Son olarak da eski bilgileri unutmamak için üçüncü yöntem kullanılabilir.