Yeni diller, framework’ler öğrenirken hatta matematikte veya geometride yeni bir konu öğrenirken bile karşımıza çıkan bir problem bu.
İnsan soyut bir kavramı, yöntemi veya prosedürü öğrenirken aşamalı olarak öğrenir. Eğer bu yeni konuyu teorik olarak öğrenirse veya yapan birini yalnızca izleyerek pasif bir şekilde öğrenirse, bu yalnızca işin ilk aşamasını oluşturur. Her yeni öğrendiği şeyi öğrendikten hemen sonra test etmeli ve uygulamalıdır.
Test etmek genelde teorik bilgiyi pekiştirmek içindir. Mesela bir yazılım dilinde iki string’i uç uca eklemeyi öğrendiniz. Hemen arkasından çözülen bir quiz bu bilgiyi pekiştirir. “Hello” + “World” ifadesinin sonucu ne olur diye sorar mesela quiz. Şıklarda:
• “Hello world”
• “Hello World”
• “HelloWorld” vardır.
doğru olanı seçerken teoriyi pekiştirirsiniz.
Daha sonra sizden uygulamalı bir örnek yapmanız istenir, mesela: “_3 string değişken oluşturun, değerleri şunlar şunlar olsun ve bunları şu sırayla uç uca ekleyen kodu yazın_” şeklinde ufak bir assignment verilir.
Bunu da yaptığınızda öğrendiğiniz teoriyi size verilen yönergeler doğrultusunda uygulayabildiniz demektir.
Bunun bir sonraki aşaması size verilen bir problemin çözümünün bu öğrendiğiniz string uç uca ekleme (string concatenation) olduğunu tahmin ettiren çalışmalardır.
Sizden örneğin, “kullanıcının ismini girmesini (diyelim Safa) ve sizin de o girdikten sonra ekrana Merhaba Safa! yazan bir program” yazmanız istenir.
String concat kullanmanız gerektiğini hemen akıl edersiniz çünkü bir iki ders önce gördünüz hala bilgi taze.
Bunu da yaptıktan sonraki aşama, problem benzerliği kurma ve tekrardır.
Dersin ileriki aşamalarında farklı konular anlatılıyorken sizden istenen ödev ve çalışmalar içerisinde yine sizi string concat yapmaya iten kısımlar bulunur.
Bunu o kadar tekrarlarsınız ki, artık beyniniz benzer bir problem gördüğünde onun çözümünü otomatik elinde bulundurmaktadır.
—
İşte, “*kodu anlıyorum, temel yapıları biliyorum, fakat istediğim şeyi koda dökemiyorum*” demek, konuların öğrenilmesi ilk aşamalarda bırakılmış demektir.
Bu çok normal çünkü internetteki bir çok kodlama eğitimi, yazılımcılar tarafından, bu anlattıklarım hiç düşünülmeden veriliyor. Herhangi bir youtube serisinden bu içeriği çabucak tükettiğiniz zaman, siz sadece yapılan işi anlamayı öğreniyorsunuz.
Bir şeyi bilmek ile o şeyi yapabilmek arasında bir çok mental aşama var ve bunların teker teker aşılması gerekiyor.
Zihninizin bu aşamaya gelmesi için defalarca farklı problemlerin nasıl yapılar kullanılarak çözüldüğünü, nasıl koda dönüştürüldüğünü görmesi ve hatta defalarca bunlar üzerine aktif öğrenme yapması (yani deneyerek, farklı farklı egzersizler yaparak, mesai harcaması) gerekiyor.
—
Bu anlattıklarım dediğim gibi yalnızca kodlama öğrenirken değil, herhangi bir yeni beceri elde ederken geçerli. Video kurgulamak, counter strike’da competitive maç yapmak, mobil arayüzler tasarlamak veya aklınıza gelen başka bir şey :slightly_smiling_face: