Kod Neden Pasaport İster: Taşınabilirliğin Küresel Rüyası

Bir programcının en eski dualarından biri şudur: Burada çalıştıysa orada da çalışsın. Kulağa teknik bir istek gibi gelir; oysa içinde küçük bir uygarlık tasarımı saklıdır. Kodun taşınabilirliği, yalnızca bir uygulamanın Windows’tan Linux’a, telefondan buluta, yerel makineden uzak sunucuya nazlanmadan geçmesi değildir. Daha derinde, bir fikrin coğrafyadan, donanımdan, işletim sisteminden ve hatta bazen kültürden bağımsız biçimde var olabilmesi arzusudur.

Bu yüzden portability, yazılım dünyasının küreselleşme felsefesidir. Nasıl ki bir para birimi, bir dil ya da bir ölçü standardı sınırları aşmayı kolaylaştırıyorsa; taşınabilir kod da fikrin gümrükte takılmadan dolaşmasını sağlar. Fakat burada romantizme fazla kapılmayalım: Her yerde çalışan kod, kendiliğinden ortaya çıkan büyülü bir varlık değildir. O, disiplinli soyutlama, dikkatli bağımlılık yönetimi, standartlara saygı ve çevresel farklara karşı paranoyak bir uyanıklık ister.

Kod Review: Başkasının Aklındaki Bug’ı Kırmadan Yakalamak

Kod review, çoğu ekipte yanlış anlaşılan küçük bir ritüeldir: Bir geliştirici kodunu açar, diğerleri büyüteçle kusur arar, sonra yorumlar yağar. Fakat iyi bir kod review, dijital bir mahkeme değil; ortak aklın laboratuvarıdır. Burada amaç, birinin hatasını yakalayıp zafer turu atmak değil, henüz üretime çıkmamış bir fikrin nerede tökezlediğini birlikte görmektir. Çünkü kod, sadece makineye verilen talimat değildir; yazanın zihinsel modelinin donmuş hâlidir.

Bir fonksiyona baktığınızda aslında şunu sorarsınız: Bu insan problemi nasıl anlamış? Hangi varsayımlarla ilerlemiş? Hangi olasılıkları görmüş, hangilerini karanlıkta bırakmış? İşte eleştirel düşünme burada devreye girer. Eleştirel düşünme, sert konuşmak değildir. Tam tersine, aceleci yargıyı askıya alıp mantık zincirini tek tek izleme disiplinidir. Kod review yapan kişi, biraz dedektif, biraz editör, biraz da iyi niyetli bir satranç rakibidir.

Yanlış Çalışıyor Ama Çalışıyor: Zihnimizin Legacy Code’u

İnsanın en büyük yazılım hatası şudur: Bir şeyin yanlış olduğunu anlayacak kadar zekiyiz, fakat onu değiştirmeyecek kadar yorgun, korkak ya da konfor düşkünüyüz. Buna psikolojide bilişsel çelişki diyoruz; yazılım dünyasında ise çoğu zaman legacy code. İkisi de aynı karanlık mahzene açılır: Çalışıyor gibi görünen, ama her temas ettiğimizde içimizde küçük bir alarm çalan eski sistemler.

Legacy code sadece eski kod değildir. O, geçmişte verilmiş kararların bugünkü hayatımızdan kira almaya devam etmesidir. Bir fonksiyonun neden orada olduğunu kimse bilmez, ama kimse silmeye de cesaret edemez. Çünkü sistem ayakta duruyordur. Çünkü müşteri bağırmıyordur. Çünkü test yoktur. Çünkü cuma akşamıdır. İnsan zihni de böyledir. Çocukken işe yarayan bir savunma mekanizması, yetişkinlikte kişiliğimizin çürük kolonuna dönüşebilir. Eskiden bizi koruyan suskunluk, bugün ilişkilerimizi boğar. Bir zamanlar hayatta kalmak için öğrendiğimiz kontrol arzusu, sonra sevgiyi bile denetlemeye kalkar.

Kodun Gülümsemesi: Sentaktik Şeker Neden Toplumu da Ayakta Tutar?

Programlamada sentaktik şeker, makinenin aslında ihtiyaç duymadığı ama insanın zihnini rahatlatan küçük lütuflardır. Bir dilde for döngüsü varken her şeyi while ile de yazabilirsiniz; nesne yönelimli bazı yapılar daha ilkel fonksiyon ve veri düzeneklerine indirgenebilir; hatta birçok modern kolaylık, derleyicinin arka odasında daha kaba, daha çıplak talimatlara çevrilir. Bilgisayar açısından fark yoktur. İnsan açısından ise dünya değişir. Çünkü mesele yalnızca çalışmak değildir; anlaşılmak, sürdürülebilmek ve hata yapmadan ilerleyebilmektir.

Toplumsal nezaket de buna şaşırtıcı biçimde benzer. Birine kapıyı tutmak, mesajın sonuna teşekkürler yazmak, rica ederim demek, toplantıya başlarken nasılsınız diye sormak; bunların çoğu çıplak işlev açısından gereksiz görünür. Ekmek almak için fırıncıyla varoluşsal bağ kurmanız gerekmez. Bir dosya istemek için de lütfen demek zorunda değilsiniz. Fakat insan toplumu, yalnızca veri alışverişinden oluşan bir ağ değildir. İnsan, anlamın yanında niyet de okur. Nezaket, niyetin biçimlendirilmiş arayüzüdür.

Hayatını Refactor Et: Minimalizm, Temiz Kod ve Fazlalıkların Sessiz Gürültüsü

Bir yazılımcının ekranındaki dağınık kod ile bir insanın dolabındaki kullanılmayan eşyalar arasında gizli bir akrabalık vardır. İkisi de bir zamanlar gerekli görünmüştür. İkisi de “belki lazım olur” bahanesiyle orada kalmıştır. Ve ikisi de sonunda sistemi yavaşlatır: biri programı, diğeri zihni. Minimalizm ile temiz kodun ortak derdi aslında aynıdır: çalışmayanı değil, çalışsa bile gereksiz olanı fark etmek.

Temiz kod yalnızca bilgisayarın anlayacağı komutlar yazmak değildir; gelecekteki insanın, yani çoğu zaman bizzat kendimizin, ne anlatılmak istendiğini anlamasını sağlamaktır. Minimalizm de yalnızca az eşyaya sahip olmak değildir; yaşamın okunabilirliğini artırmaktır. Karmaşık bir fonksiyonun içinde kaybolmakla, ağzına kadar dolu bir odada nefes alamamak aynı deneyimin iki farklı arayüzüdür.