Bir dilde ustalaşmak ne demek onu biraz daha açmak gerekiyor. Örneğin o dildeki bütün Framework'leri ezberleyeyim vs. gibi bir amaç varsa ortada bu bana çok da mantıklı gelmiyor.
Öncelikle bir dilde uzmanlaşmak ya da o dili öğrenmek için, dil öğrenmeyi öğrenmek lazım. Nasıl biraz kafa karıştırıcı değil mi? Açıklayayım.
Benim ana programlama dilim C# diyebilirim. Bu dilde bir proje geliştirebilir, ya da ana konuları oturup bilmeyen bir insana anlatabilir seviyeye getirdim kendimi çok şükür. Fakat bu noktadan sonra neleri nasıl yaptığımı incelemek gerekiyor. Yakın zamanda kendimi tamamen Java diline vermeye karar verdim. Gittim dört farklı kaynaktan kitap da aldım, eski kafalı diyebilirsiniz fakat kitap okumayı seven birisiyim. Birinci kitabı bitirmem yaklaşık 1 haftamı, ikinci kitabı bitirmem ise ortalama 3 gün sürdü. Devamındaki kitapları da sayarsak ortalama 1 ay diyebilirim. Artık iyi kötü Java biliyorum diyebiliyorum. Peki bu noktaya sıfırdan başlayan birisi yine 1 ayda 4 kitap bitirebilir mi?
Evet ama bu kesinlikle sağlıksız bir yöntem. Ben bundan önce bir dili nasıl öğreneceğimi biliyordum, İngilizce makale okuyup araştırma yapabilir seviyedeydim, algoritma biliyordum ve en önemlisi benzer yapıda bir başka programlama dili biliyordum. Programcılar, yazılım geliştiriciler artık adına ne derseniz tavsiye verirken önce bir dili iyi öğrenin mümkünse nesne tabanlı bir dilden başlayın derler. Bu doğru bir tavsiyedir ancak öncesinde belli bir matematik mantığına, algoritma mantığına ve kesinlikle teknik İngilizceye ihtiyaç var. Gidip belki mükemmel seviyede İngilizce konuşamayabilirsiniz fakat en azından yazılan yazıları okuyabilmeniz gerekiyor. Günümüzde belki bu da eskisi kadar elzem bir faktör değil, çünkü her programlama dilinde artık Türkçe kaynaklar var. Fakat 3. ve 4. kitabı okumaya başladığımda yine bunun ispatını kendime yapmış oldum.
Okuduğum kitaplar sırasıyla.
- Örneklerle pratik Java (prof. Dr. Mustafa dikici)
- Java ile programlama ve veri yapıları (Bülent çobanoğlu)
- Java for dummies 7. baskı (barry a. Burd)
- Java how to program (paul j deitel)
Ayrıca bütün kitapları okurken Java tutorials (Java geliştirici ekibin oluşturduğu doküman diyelim)
Okuyarak paralel ilerlettim.
Bu kaynakların tamamını okumam 1 ay sürdü, fakat altyapım olmasaydı bunları okumuş olmak bir şey değiştirmeyecekti.
Algoritma, en azından temel matematik, İngilizce, ve bir programlama dili bilmeden verimli ilerlemek çok zor.
Tavsiyem bütün bunlardan oluşan bir program hazırla kendine, günün belirli saatleri algoritma örneklerine bak, matematiğin eğer yoksa otur üşenmeden en azından lise matematiğinin konularına çalış, İngilizceyi muhakkak ön planda tut. Matematik çalışırken, çalıştığın programlama diline bu konuları dökmeye çalış. Örneğin asal sayıları çalışıyorsan, asal sayıları bulan ya da bir sayının asal olup olmadığını bulan basit bir program yap.