“İYİ” Programcı Nasıl Olunur!

Uzun zaman oldu birşeyler yazmayalı (5 ay)… Askerlik öncesi elimdeki işleri düzene sokmayla, yarım kalanları kemale erdirmeyle geçirdim şu 5 ayı “çok yoğun bir şekilde”. Sonunda bittide! Biraz boşta kalınca yine yazasım geldi, blog sayfamı hatırladım ve yazayım yine birşeyler dedim ;) . İşin aslı hiç unutmamıştım burayı ama sadece bir ziyaretci edası ile girip yeni birşeyler varmı diye bakıyordum… :D

“Okadar durdun, seni dinledik Linux kurduk, senden hizmet ve yazı beklerken biz, sen ne halt yemeye bize böyle bir konuda yazı yazıyorsun” diyenler çıkacaktır. Evet haklısınız ama bu sadece ısınma turundan ibaret. Linux hakkında da yazılar yazacağım. Ama önce bu iyi programcı nedir, niye olur, kimdir, benzeri, “sorması basit” ama “cevaplaması kastıran” kiplere bir yaklaşımda bulunmak istiyorum.

Aslında içerik öyle sandığınız gibi değil! :). Geçenlerde kendime ait bir projemi kurumsallaştırıp yeniden tasarladık ve programladık. Faydalı Siteler içinde rahatlıkla görüp tıklayabileceğiniz bir site bu aynı zamanda. ResimlerimNETTE.com sitesi. http://www.resimlerimnette.com adresinden giriş yapabilirsiniz. Her neyse, siteyi 1′den fazla kişi tasarlayıp programlarken haliyle fikir çatışmaları veya detaycı fikirlerde yanında projeye eşlik ediyor. İşte öyle bir anda çok fazla kere “optimizasyon’dan dolayı”, “hızlı çalışması için” veya benzeri kombinasyonlarda “hız” ve “optimizasyon” kelimelerini kullandığımı farkettim.

Toplantı sonunda herkez kendince düşünceli, kafasında planlar yapıyor ve ortamda bir sessizlik hakim. O sırada kafama “Ben nasıl ‘İYİ’ programcı oldum!” sorusunun cevabı dank etti. Bu arada kendimle övünmüyorum hiç huyum değildir. Çevrem “sen iyi bir programcısın diyor” ben onları dayanak alarak ‘İYİ’ bir programcı olduğumu düşünüyorum, gerçi orada nüans olarak “sen iyi bir insansın, es kaza programcıda olmuşsun ama olsun” da demeye çalışılıyor olabilirler veya “kişilik olarak harika bir insan ama programcı işte” gibi bir yaklasımda olabilir, neyse… Ben vurgulanmak istenen şeyin “yazdığım yazılımların iyi olduğunu” kısmı olduğunu düşünüyorum :) . Sadede geleyim, elimizdeki yazılım desteği ve web sitelerinin çalıştığı donanımların teknik özellikleri dikkate alındığında, aslında ne kadar yokluk içinde neler yapmaya çalıştığımızı gördüm. Bu yoklukta veya yetersizlikte, bir yazılımın hızlı çalışması için çok detaylı düşünmeniz gerekiyor. MultiThread yazılım tasarımlarını öyle ince yapmanız gerekir ki, ne makinenin işlemcisi fazla Thread’den dolayı şişip kilitlensin nede fazlaca kuyruk oluşturup hafızadan yesin. Ayrıca bunlara ek olarak, bir yazılım diğer yazılımları perdelememeli, biri diğerinin performansından yememelidir. Ortak olan 3 kuruşluk hafızayı hunharca harcamamalı, işlemciyi fazlaca meşgül edip zaten yeterince yavaş olan windows’u işlemci fakiri bırakmamalıdır. Bunların hepsi birleşipte Pentium IV 2.4 HT işlemcili 2Gb rami olan bir makinede yoğun işlem yapan 12 adet siteyi toplamda 800Mb ile 1.15Gb arası hafıza kullandırarak, 12 sitenin toplam işlemci kullanımınıda %25 i geçmeyecek şekilde ayarlayarak program yazmak insanı ‘İYİ’ programcı olmaya zorluyor.

Bütün bunları göz önünde bulundurarak zaten cebimdeki ‘0′ sıfır TL ile co-location hizmetini 2004 senesinde almaya başladım ve daha güçlü sunucu gerektirmeden bu makine üzerinde çalıstırabilecegim en fazla siteyi hesaba katarak Solid Web Content Framework’unu geliştirip optimize ettim. Sonrasında’da SWC’ye geliştirilecek yazılımları “hız optimizasyonundan” geçirince sınırlı bandwidth’de sınırlı donanımla hızlı çalışan siteler yapmaya başladım. Resim Paylaşım Sitesi’de işte bu çalışmalar sonucunda çıkmış projelerden biridir sadece.

İşte dostlar, ‘İYİ’ programcı olmak yokluk içinde ince detay hesapları yaparak gerçekleşebiliyor. Elimdeki donanım çok iyi bir donanım olsa, harcayacak param çok olsa, belkide hiç bir yazılımsal optimizasyon için kasmayacak ve lagada lugada bir yazılımcı olacaktım, kim bilir… Yokluk sağolsun, birde yoklukta varlığı bulabilirsek harika olacak…

(Not: Bu yazının resmi ile içeriği ne alaka diyeceksinizdir, evet alakalı değil sadece 10 gün sonra asker olarak vatani görevimi tamamlamak üzere buralardan kısa süreli ayrılacağım, bundan dolayı kendimce böyle bir resim koymak istedim.)