Daha İyi Bir Programcı Olmak İçin Sınırlar Nasıl Zorlanmalı?

yazar:

kategori:

Herhangi bir konuda daha iyi olabilmenin yolu, mevcut sınırları ve bariyerleri daha öteye taşımaktan geçer. Bu sınırlar fiziksel ya da manevi türde olabilir. Fiziksel sınırları ileriye taşımanın nasıl bir şey olduğunu ilk pist deneyimimde tekrar tecrübe etme fırsatım oldu. İlk piste çıkışımda, pisti dönme sürem 2 dakika 47 saniye ile benim için büyük bir şok oldu. Dördüncü günün son ayağında bu süreyi 2 dakika 0 saniyeye indirebildim. Dönme sürelerinin iyileşmesiyle birlikte motora ve piste olan hakimiyetimin de arttığını gözlemledim. Sürekli sınırları zorlamak hem acı verici hem de daha iyi olabilmek için verilen savaşın kazanılmasından dolayı zevkliydi.

Fiziksel sınırlarımı bu denli zorlamış olmak ve kendi çapımda bu konuda başarılı olduğumu görmek, aklıma elde ettiğim tecrübe ve bilgileri diğer ilgi alanlarıma nasıl aktarabilirim sorunu getirdi. Bu yüzden bu blog yazısını yazıyorum. En büyük ilgi alanım programcılık. Peki programcılıkta sınırlarımı nasıl zorluyorum ya da zorlamalıyım?

Aynı ekip içinde kısa bir zaman sonra herkesin kod yazma tarzı üç aşağı, beş yukarı aynı seviyeye gelir. Her yiğidin yoğurt yeme tarzı farklılık göstermekle birlikte, programcılar başkalarının kod yazma tarzlarını kopyalayarak, yaptıklarında onlara benzemeye başlarlar. Sonuç itibari ile kullanılan programlama dili programcının program yazarken kendisini ifade etme tarzını büyük oranda belirlediğinden dolayı, aynı ekip içinde yazılan kodlar birbirine benzemeye başlar. Bu şu anlama geliyor: “İstediğim kadar uğraşayım, programcı olarak bir zaman sonra motosiklet örnegindeki 2 dakika 0 saniyelik bariyerin altına inmem mümkün değil, yani programcı yetilerimi geliştiremiyorum, aynı seviyede kalıyorum.”

Bunun başlıca nedeni, kullanılan programlama dilinin programcının düşünüş ve kendini ifade etme tarzını tayin etme gücüne sahip olmasında yatmaktadır. Bir programlama dilinin kod yazmak için sunduğu yapılar bellidir. Kod parçaları bu yapıların kombinasyonlarından oluşur. Durum böyle iken bu sınırlı sayıdaki kombinasyonlar en mükemmel hallerinde programcının er ya da geç en sade çözüme erişmesini, ama daha iyi bir kombinasyon mümkün olmadığından orada takılıp kalmasına sebebiyet verirler. Programcı kullandığı dilin sınırlarına dayanmıştır, daha iyisini yapması mümkün değildir. Bu aynı zamanda onun daha iyi bir programcı olabilmesi için önündeki en büyük engeli teşkil etmektedir.

İki dakikada zor bela dönmeyi başardığım pisti, 1 dakika 36 saniyede dönen pilotlar var. Günlerce kendi dönüş zamanımı düzeltme çabası içindeyken, 1:36 lik bir zamanın nasıl mümkün olabildiği sorusunu sordum kendime. Son pist gününde 2:03 olan en iyi zamanımı 2:00 düşürmek için harcadığım eforu mantıklı bir şekilde açıklamam mümkün değil. Bu perspektiften bakıldığında 1:36 lık bir zaman erişilmez gibi görünüyor.

Peki 1:36 lık bir zaman nasıl mümkündü? Kimine göre o pilotlar slick olarak isimlendirilen mucizevi tekerlere sahiptiler. Başkalarına göre kullandıkları motorlar çok hafifdi. Elli gram tasarruf yapabilmek için motorsikletlerin akülerini bile değiştirmişlerdi. Kullandıkları grenajlar karbondu. Bunun gibi birçok efsane dinledim. Bu spora yeni başlayan birisi olarak bana her türlü hikayeyi satabilirsiniz. Ama bildiğim bir şey var. Eğer teknik olarak 1:36 mümkün ise, oraya varmanın en az bir yolu mevcut. Oraya varmak için motorun üzerine binip, konvansiyonel yöntemlerle tur atmak hiçbir zaman yeterli olmayacak. Sürekli yeni şeylerin denenmesi, sürüş tarzının adapte edilmesi, bilen birilerine sorulması, yeniliklere açık olunması ve biraz da cesur olunması gerekecek. Bu yolda birçok şeyin harmanlanması 1:36 ya giden yolun inşası için zaruri.

1:36 lık zamana erişebilmek için motor sürmenin çok değişik boyutlarına inmek gerekiyor. Bunun programlamada karşılığı birden fazla programlama diline hakimiyet. Hani usta programcılar hep “yeni programlama dilleri öğrenin” tavsiyesini verirler ya… İşte bu öyle laf olsun diye verilmiş bir tavsiye degildir. Bir programcıya verilebilecek en iyi tavsiyedir o.

İnsanların konuştukları diller ve programcıların kullandıkları programlama dilleri ortak bir özelliğe sahipler. Kullanılan dil kullanıcısının düşünüş ve kendisini ifade etme tarzını şekillendiriyor ya da sınırlıyor. George Orwell’in 1984 isimli romanında yöneticiler suni bir dilin kullanılmasını zorunlu kılıyorlar. “Yeni dil” ismini taşıyan bu dil kısıtlı bir kelime hazinesine sahip. Bu suni dilin ana amacı halkın kapsamlı ve sorgulayıcı düşünmesini engellemek. Halk örneğin baskıcı rejime karşı ayaklanamıyor, çünkü kullanılan dilin kelime hazinesinde böyle bir kelime yok.

Her dilin dünyaya bakış açısı, edebiyata yatkınlığı, yeni kelimeler türetebilme kabiliyeti ve fonetiği değişik. Dil onu oluşturan insanların dünyayı nasıl algıladıklarının bir aynası. Birden fazla dil bilen insanların da dünyaya bakış açıları ve kendilerini ifade etme ve düşünme tarzları değişiklik gösterebilmekte. Aynı şey programlama dilleri için de geçerli. Tek bir programlama diline hakim olan bir programcının o dilde kendisini ifade etme şekli sınırlıdır. Bu sınırı ona kullandığı dil koymaktadır. Programcının kendisine programlama dili tarafından vurulan bu zinciri kırabilmesi için kelime hazinesini genişletmesi yani başka programlama dilleri ve konseptleri tanıması gerekmektedir. Sadece bu şekilde programcı problem çözerken dayandığı manevi sınırları aşabilir.

Birçok programlama diline hakim programcılar geniş bir kelime hazinesine sahiptirler. Kullandıkları dilin sunduğu imkanlar yetmediginde, başka programlama dillerinden tanıdıkları konseptleri uygularlar. Bu onların hem daha iyi kod yazmalarını hem de sürekli kendilerini programcı olarak geliştirmelerini mümkün kılmaktadır.

İki dil, iki insan sözü, iki programlama dili, iki programcı olarak da anlamını korumakta. Tek bir programlama dilinde iyi bir programci olmak mümkün. Lakin daha ilerisi için birden fazla programlama diline hakimiyet şart.


EOF (End Of Fun)
Özcan Acar


Yorumlar

“Daha İyi Bir Programcı Olmak İçin Sınırlar Nasıl Zorlanmalı?” için 3 yanıt

  1. Dogukan HAN avatarı
    Dogukan HAN

    Hocam ellerinize saglik , daha cok yeni oldugum programcilik sektorunde yazdiginiz yazilarin dogrultusunda kendimi yetistiriyorum . Yazdiginiz yazilarla bizlere rehber oldugunuz icin sizlere ne kadar tesekkur etsek azdir.

  2. Hocam ben yaklaşık 5 yıldır C# ile proje geliştiriyorum. şuan elimde yapılması gereken bir proje var. ciddi bir proje. Ben Java yı öğrenmek ve onunla devam etmek istiyorum. fakat elimde ki proje yi java ile yapmak istersem hem proje süresinin uzaması hemde java da tecrübem olmadığından elimde patlaması veya performans,güvenlik vs. açısından zayıf olması muhtemel. Bu yüzden bu riski almaktan çekiniyorum. Sizce Yeni bir dile geçmek ilk olarak hobi olarak mı olmalı yoksa yeni dille direk olarak proje yazmak şeklinde mi olmalı?
    siz olsanız ne yapardınız? beni aydınlatırsanız çok sevinirim.

    1. Özcan Acar avatarı
      Özcan Acar

      Kapsamli bir projeye yeni bir dili ögrenerek baslamak sakincali olabilir. Kücük projeler cercevesinde yeni dil ögrenilmeli ve gerekli bilgi edinilerek, bu daha büyük projelere tasinmali.