Yazılım Geliştirmeyi Nasıl Öğrenirim?

savasci

Gerek e-posta ile gerekse sosyal medya üzerinden gelen sorulardan bir tanesi “Yazılım geliştirmeyi nasıl öğrenirim?” ya da bir başka deyişle “Nasıl iyi yazılımcı olurum?”. Ünlü olmadığımdan olsa gerek arada geliyor sorular 🙂 Ama çok sorulan bir soru olduğunu düşünüyorum. Ben de bakış açım doğrultusunda açıklamaya çalışayım.

Bir metafor kullanarak daha iyi açıklayabileceğimi düşünüyorum. Öncelikle Orta Çağ’da yaşayan bir genç olduğunuzu düşünün. Tek hayaliniz iyi bir savaşçı olmak. Ve savaşçı olmanız için de ilk olarak silahınızı seçmelisiniz. Silahınız sizin arkadaşınız olacak, düşmanlarınızı alt etmeniz için ona ihtiyacınız var. Onun her özelliğini tam olarak kavramalı, öğrenmelisiniz. İleride savaş alanında hiç önemsemediğiniz bir özelliği hayatınızı kurtarabilir.

Silahınızı tam anlamıyla tanıdıktan sonra, küçük alıştırmalar yapmaya başlayabilirsiniz. Ama tabii ki bu alıştırmaları savaş alanında ya da gerçek insanlara karşı yapmayacaksınız. Tahta bir hedef ya da bir korkuluk kullanabilirsiniz. Bu sırada diğer savaşçılar sizin hatalarınıza yada yapamadıklarınıza gülebilirler. Kulaklarınızı bu seslere tıkamalısınız. Unutmayın hiç kimse iyi bir savaşçı olarak doğmadı.

Artık silahınızı tanıyorsunuz ve tahta hedeflerle uzun süre çalıştınız. Savaş eğer tahta hedeflerle yapılsaydı belki de en iyi savaşçı siz olacaktınız. Hatta öyle ki, gerçek savaşçılara karşı bile çok iyi savaşabileceğinizi düşünüyorsunuz. İşte tam bu sırada kendinize yanında çalışmak için iyi bir savaşçı bulmalısınız. İyi ya da kötü her savaşçıdan bir şeyler öğrenirsiniz ama ne kadar çetin bir savaşa çıkacağınızı bilemezsiniz, o yüzden imkanınız varsa iyi bir savaşçı bulun. Onun stratejilerini, neyi neden yaptığını takip edin, sorgulayın, öğrenin. Sürekli nasıl ve neden sorularını sorun. Var olan bu stratejilere kendi yorumlarınızı katmaya çalışın. Artık gerçek hedeflerle alıştırma yapıyorsunuz ve savaşlarda küçük de olsa sizin de katkınız oluyor.

Bu savaşlarda yaptığınız işler dikkat çekmeye başladı. Artık daha büyük görevler almaya hatta küçük birlikleri yönetmeye başladınız. Tebrikler, artık siz de bir savaşçısınız. Ama asla unutmamanız gereken bir nokta var. Son katıldığınız savaştaki kadar iyisiniz. Sürekli alıştırmalar yapmaya, yeni stratejiler öğrenmeye devam etmelisiniz. İyi bir savaşçı olarak kalmanın tek yolu, çalışmaya devam etmektir. Eğer silahınızı değiştirmek isterseniz, yeni silahınızın özelliklerini öğrenmeniz çoğu zaman yeterli olacaktır. Sonrasında stratejilerinizi, taktiklerinizi yeni silahınızla kullanmaya devam edebilirsiniz.

Her adım uzun zaman alacaktır ama sonunda istediğiniz gibi iyi bir savaşçı olacaksınız.

Tıpkı bu savaşçı gibi, yazılımcı olmak isteyen birisi de öncelikle kullanmak istediği dili seçmelidir ve bu dilin özelliklerini kavramalıdır. Sonrasında uzun süre alıştırmalar yapmalı, ticari olmayan projeler geliştirmeli. Yazılım geliştirme pratiğini ilerletmelidir.

Artık bir sonraki aşamaya geçebilir. Tecrübesiz bir arkadaş iş arıyorsa benim önerim küçük veya orta ölçekli şirketlere başvurması ya da büyük şirketin yazılım geliştirme konusunda kendisine faydalı olacağına ikna olması. Evet tecrübesiz olmanız sizi çok zorlayacaktır ama gerçekten isteğinizi, yaptığınız çalışmaları – projeleri gösterirseniz şu günlerde iş bulabileceğinizi düşünüyorum. Zor ya da kolay.

Asıl çalışma ise işi bulduktan sonra başlıyor. İş yerinizdeki tecrübeli yazılımcıları, neyi neden yaptıklarını takip etmelisiniz. Bu ‘eski’ çalışanların yöntemlerini yanlış buluyorsunuzdur belki de ama onlar sizden çok daha fazla hata çözdü, çok daha fazla algoritma kurdu ve çok daha fazla çözüm geliştirdi. O yüzden onların söylediklerini dikkate alın ama önerilerinizi söylemekten de çekinmeyin. Unutmayın kimse mükemmel değildir.

Bundan sonrası size kalıyor, her gün kendinizi geliştirmeli yeni teknolojiler öğrenmeli ve çalışmaya devam etmelisiniz. Unutmayın son yazdığınız kod kadar iyisiniz.

Faydalı olması dileğiyle 🙂