Kod denince çoğumuzun zihninde karanlık bir ekranda hızla akan yeşil karakterler belirir. Sinema sağ olsun, programcıyı da birkaç tuşa basarak bankaları ele geçiren kapüşonlu bir sihirbaz sanırız. Oysa kod, bilgisayara yazılmış büyülü sözlerden çok daha sade bir şeydir: Bir niyeti, makinenin uygulayabileceği kesin adımlara dönüştürme sanatı. Bilgisayar ne ima anlar ne de “sen gerisini halledersin” cümlesinden hoşlanır. Ona ne söylerseniz onu yapar; bazen de tam olarak söylediğinizi yaptığı için sistem çöker.
Kod, düşüncenin sıkıştırılmış hâlidir
Her programın arkasında bir problem tanımı bulunur. Bir uygulama kullanıcıdan bilgi alır, bu bilgiyi belirli kurallarla işler ve bir sonuç üretir. En temel şema şöyledir: girdi, işlem, çıktı. Bir navigasyon uygulamasında girdi bulunduğunuz konum ile hedefinizdir; işlem, olası yolların karşılaştırılmasıdır; çıktı ise önerilen rotadır. Ancak mesele yalnızca çalışan bir sonuç üretmek değildir. İyi kod doğru, anlaşılır, güvenli, hızlı ve değiştirilebilir olmalıdır. Çünkü bugünün küçük çözümü, yarının milyonlarca kişinin kullandığı altyapıya dönüşebilir.
Kod yazmayı öğrenmek bu nedenle sadece bir programlama dilinin sözcüklerini ezberlemek değildir. Asıl beceri, büyük bir problemi küçük ve yönetilebilir parçalara ayırmaktır. “Bir alışveriş sitesi yapacağım” ifadesi bilgisayar açısından kullanışsızdır. Kullanıcı nasıl kaydolacak? Ürünler nasıl listelenecek? Stok ne zaman azalacak? Ödeme başarısız olursa ne olacak? Kodlama, belirsiz bir isteği sınırları açık sorulara dönüştürür. Bir bakıma programcı, kaosu maddelere ayıran profesyonel bir şüphecidir.
Hata, sistemin itirafıdır
Programlamanın en öğretici tarafı hatalardır. Bir hata mesajı, makinenin size karşı kazandığı bir tartışma değil, varsayımlarınızdan birinin yanlış olduğuna dair kanıttır. Sorunu çözmenin sistemli yolu önce hatayı yeniden üretmek, ardından olası nedenleri daraltmak ve her seferinde tek bir değişkeni sınamaktır. Rastgele tuşlara basmak bazen işe yarar; fakat bu, bozuk saatin günde iki kez doğruyu göstermesi kadar güvenilir bir yöntemdir.
İyi programcılar yalnızca hata düzeltmez, hatanın oluşabileceği koşulları önceden düşünür. Kullanıcı boş değer gönderirse ne olur? İnternet bağlantısı kesilirse işlem yarıda mı kalır? Bir saldırgan sisteme beklenmedik veri girerse uygulama bunu komut sanabilir mi? Testler, doğrulama mekanizmaları ve güvenli varsayılanlar bu sorulara verilen teknik yanıtlardır. Kodun kalitesi, ideal koşullarda çalışmasından çok, işler ters gittiğinde nasıl davrandığıyla ölçülür.
Görünmez kararlar
Kod yalnızca hesap yapmaz; giderek daha fazla kararın çerçevesini de belirler. Sosyal medya akışında neyi göreceğimiz, kredi başvurusunun nasıl değerlendirileceği veya bir işe alım sisteminin hangi özgeçmişleri öne çıkaracağı algoritmalarla şekillenebilir. Ancak algoritmalar tarafsız gökten düşmez. Onları insanlar tasarlar, verileri insanlar seçer ve başarı ölçütlerini insanlar tanımlar. “Etkileşimi artır” komutu teknik açıdan açık görünebilir; fakat bunun öfkeyi, bağımlılığı ya da kutuplaşmayı artırıp artırmayacağı toplumsal bir sorudur.
Bu yüzden kod yazmak aynı zamanda sorumluluk üstlenmektir. Bir sistemin ne yapabildiğini sormak yetmez; ne yapmasına izin verilmesi gerektiğini de düşünmek gerekir. Gizlilik, erişilebilirlik, enerji tüketimi ve ayrımcılık riski yazılımın kenar süsleri değil, tasarımın merkezindeki gereksinimlerdir. Teknik olarak kusursuz çalışan bir sistem, insanlara zarar veriyorsa başarılı sayılamaz.
Kod okuryazarlığı neden önemli?
Herkesin profesyonel geliştirici olması gerekmez. Yine de kodların temel mantığını anlamak, dijital çağın okuryazarlığıdır. Çünkü ekranlarda gördüğümüz seçenekler doğa yasaları değildir; birilerinin yazdığı kuralların sonucudur. Bir düğmenin bulunmaması, o işlevin imkânsız olduğu anlamına gelmez. Belki sadece tasarım kararları arasında yer almamıştır. Kodları anlamaya başladığımızda teknoloji gözümüzde gizemli bir otorite olmaktan çıkar ve değiştirilebilir bir araca dönüşür. En güçlü farkındalık da budur: Dijital dünya verilmiş değildir; satır satır inşa edilir.