Yazılımda Derinleşmek

Engincan Veske
SDTR
Published in
3 min readApr 30, 2022

Merhabalar,

Hepimiz günlük hayatta kod yazıyor, gün içinde birçok makaleye göz gezdiriyor ve takıldığımız problemlerle ilgili araştırmalar yapıp, videolar seyrediyoruz.

Fakat işin içine derinleşmek girdiğinde, gün içinde yaptığımız bu faaliyetlere ek olarak 2 koşulu ayrıca yerine getirmemiz gerektiğini düşünüyorum:

1-) Derinleşmek için ilgili konular hakkında teknik kitaplar okumak!

2-) Değişik ölçekte ve kullanımdaki projelerin kaynak kodlarını okumak-incelemek ve orada sıklıkla kullanılan kavramları-modelleri öğrenmek!

Gelin birlikte bu aşamaları sırayla inceleyelim ve neden bu şekilde düşündüğümü anlatmaya çalışayım.

1-) Teknik Kitaplar Okumak

Teknik kitaplar okumak sadece yazılım alanında değil hemen hemen her konuda derinleşmek için akla gelen ilk seçenek.

Bir konu hakkında uzun yıllar çalışmış/uzmanlaşmış kişiler tarafından yazıldıkları için, okuyucuya bir yol haritası oluşturması sayesinde konu daha sistematik bir şekilde adım adım eline alınıyor ve bu sayede ilgili konu belirli bir bağlam içerisinde anlatılıyor. Bu sayede öğrenme sürecinde kaybolmadan rahat bir şekilde ilgili konular öğreniliyor. Konunun uzmanlarının tecrübelerinden yararlanmakta işin bir diğer faydası.

> If I have seen further than others, it is by standing upon the shoulders of giants. (Eğer diğerlerinden daha ilerisini gördüysem, bu devlerin omuzlarında yükseldiğim içindir.) — Isaac Newton

Örneğin, Sam Newman’ın “Monolith to Microservices” kitabını ele alalım. Bu kitapta ilk önce monolith bir uygulamadan microservice mimarisi ile tasarlanmış bir uygulamaya geçiş için gerekli olan nedenlerden, bu geçiş sürecinde göz önüne alınması gereken durumlardan ve iki mimari yapı arasındaki farkın uygulamaların geliştirilmesini ve dağıtılmasını nasıl etkilediğinden bahsederek aslında kontrollü bir değişiklik için yapılması gereken adımlar sırasıyla (belirli bir olay örgüsünde) anlatılıyor.

Bu şekilde sıralı bir bilgi aktarımını bir makale veya video serisinden öğrenebilmemiz çok zor! (İlgili konunun bir kitap üzerinde anlatılmasının sayfalar sürdüğünü düşündüğümüzde bu durumu daha rahat görebiliriz.)

Kaynak kod okumak benim gördüğüm kadarıyla üstünde pek durulmayan ama gelişim açısından çok önemli bir konu. Bu yazıyı yazmamın en temel nedenlerinden birisi de bu aslında.

Yazılımda gelişmek için bir çok öneride bulunuluyor ve bunların bir çoğu gerçekten çok faydalı. Fakat bu örnekler arasında “kaynak kod” okuma önerisini neredeyse hiç görmedim ve bu sebeple bu duruma dikkat çekmek istedim. Çünkü, “kaynak kod” okumaya ağırlık verdikten sonra öğrenme ve geliştirme sürecimin çok daha hızlı bir şekilde arttığını gözlemledim.

2-) Kaynak Kod Okumak

Burada kaynak kod okumanın faydalarından bahsetmeden önce küçük bir çocuğun ilk okuma yazma öğrenmesi durumunu hayalinizde canlandırmanızı istiyorum.

Öğrenme sürecinde çocuklardan ilk olarak yazılı kaynakları okumalarını daha sonra ise yazı yolu ile kelimeleri kağıtlara dökmelerini bekliyoruz.

Caroline Linse’in “Practical English Language Teaching Young Learners” kitabında da ifade ettiği gibi, buradan şu sonucu çıkarabiliriz: “Bir kelimeyi yazabilmek için ilk önce onu okumak gerekir.”.

Bu durumun yazılım mühendisliği için de tamamen geçerli olduğunu düşünüyorum. İlgili kodu bulunduğu bağlam/alan (context/scope) içinde görerek, ilgili kodu daha iyi bir şekilde anladığımızı ve bu sayede uygun kullanım yeri ve durumunu daha iyi gördüğümüzü düşünüyorum.

Ayrıca daha önce bir konu hakkında hiç düşünmediğiniz case’leri görmek, “ben olsam bu şekilde yazardım burada niye böyle yazılmış?” veya “bu tarz bir kullanımın artıları eksileri nelerdir?”, “performans açısından hangi kullanım daha uygun” gibi ilgili kod hakkında daha detaylı düşünmek ve ufkumuzu açmak için de gerçekten çok faydalı olduğunu düşünüyorum.

Kendimi geliştirmek için haftada bir gün sıklıkla kullandığım veya ilgimi çeken repository’leri bilgisayarıma klonlayıp incelemeye çalışıyorum ve gerçekten de faydasını gördüğümü düşünüyorum. Aslında bu sayede sıklıkla kullandığım projelerin işleyişini görererek daha detaylı bir şekilde ele almış oluyorum.

Eğer şuana kadar kaynak kod okuma faaliyetine öncelik vermediyseniz, vermenizi tavsiye ederim, faydalarına şaşıracağınıza eminim.

Ya Okuduğum Kodu Anlayamazsam?

Bu durum aslında bu faaliyeti yapmamız için birinci etmen olmalı. Çünkü, bu durum bize konfor alanımız dışına çıktığımızı ve yeni şeyler öğrenmeye açık olmamız yönünde bir sinyal aslında.

Anlamadığımız yerleri ufak parçalar haline bölerek, daha önce kullandığımız programlama dilinde hiç karşılaşmadığımız yeni API’ları ve keywordleri öğrenme yolunda bir adım atmamız demek.

Eğer kaynak kod okuma sürecinde hiç zorlanmazsak sorun aslında burada başlıyor. Çünkü nasıl bildiğimiz basit bir kitabı okumak bize birşey katmayacaksa, aynı şey bu tarz kaynak kod okuma işlemi içinde geçerli.

Yani, her okuduğumuzu anlamamamız son derece doğal ve olması gereken, bizi geliştirip bir ileri ki noktaya taşıyacak olan şey de bu!

Kaynak Kod Okumak ile ilgili Steve Gordon’un bu yazısını okumanızı tavsiye ederim.

Bu yazı da, kendimi geliştirmek için uygulamaya çalıştığım şeyleri anlatmaya çalıştım. Umarım faydalı bulmuşsunuzdur, okuduğunuz için teşekkür ederim.

--

--