Azınlığın Sessiz Algoritması

Çağlar Demir:~$ cat posts/Günlük Gürültü ve Algoritmik Temizlik.md

Günlük Gürültü ve Algoritmik Temizlik

Dijital yaşamın çoğu zaman sunduğu veri akışı, doğası gereği bir entropi göstergesidir. Beslenme biçimimiz bu girdiye ne kadar dirençli olabilir?

Gündelik deneyimlerimizi, yüksek seviyeli bir sistem mimarisi olarak ele almak gerekir. Bir randevu planlamak, basit bir görev yönetimi akışıdır; ancak e-posta döngüleri, sosyal medya bildirimleri ve sürekli olarak güncellenen ajandalar bu akışı bir noise kanalı haline getirir. Buradaki problem, görevin kendisi değil; görevi çerçeveleyen fazladan katmanlardır.

Bir yazılım geliştiricisinin karşılaştığı en büyük zorluk, bir görevi başarıyla tamamlamak değil, bu görevin gereksiz koşullandırmalardan arındırılmış halini bulmaktır. Bir kullanıcı hikayesi (User Story) örneği üzerinden düşünelim: "Kullanıcı, kahvesini alacak." Bu basitleştirilmiş ifade, her detayı kapsayan nihai gerekseliktir. Eğer araya "kahve makinesinin sıcaklığını kontrol etmeli," "buzdolabında filtre kahve olmalı" gibi yan görevler ekleniyorsa, bu artık bir istek değil, gereksiz bağımlılık zinciridir.

Aşırı Mühendislik ve Yaşamın Simüle Edilmesi

Yaşamı, bir sonraki sürümü için sürekli refactoring yapmaya çalıştığınız karmaşık bir codebase gibi ele aldığımızda, büyük sürüm çatışmaları yaşanır. Her mikro-iyileştirme denemesi, aslında sistemin tamamen çalışır durumda olan mevcut halini tehdit eder.

Agile yaklaşımları bazen bu seviyede uygulanmaya çalışılır; sürekli entegrasyon, sürekli teslimat hedeflenir. Ancak bu döngüyü, mükemmeliyetçiliğin bir bedel olarak görülmeye başladığı noktada sürdürmek, teslimatı asla tamamlanmamış kılmanın en sofistike yoludur. Bu bir teknik borç (technical debt) değil, epistemik yükümlülüktür; yani bilgiye olan gereksiz bağlılıktır.

Bu noktada, günlük yaşamın döngüsel doğasıyla teknolojiyi kıyaslamak zorunlu hale geliyor.

Gözlemlediğim kritik ayrım şudur:

  • İyi tasarlanmış bir sistem (veya iyi bir yaşam rutini): Minimal sayıda işlemle maksimum istenen çıktıyı verir. Aşama geçişleri keskindir ve net bir amaç fonksiyonuna sahiptir.
  • Kötü tasarlanmış sistem (veya dağınık yaşam): Her girdi potansiyel olarak bir çıktı üretmeye zorlanır; bu da genellikle kaosa dönüşür.

Bu, sadece kod yazmakla ilgili değildir. Bu, niyetin netliği ile ilgilidir.

Temiz Kodun Metafiziği

Temiz kod, aslında en saf haliyle iletişimin ürünüdür. Her satırın bir görevi vardır ve bu görev, okuyan herkes tarafından algılanabilir olmalıdır. Eğer bir satırın amacını anlamak için üç önceki fonksiyona bakmanız gerekiyorsa, bu bir performans düşüşüdür.

Günlük yaşamımız da böyledir. Bir karar alırken, o kararın alınmasını sağlayan girdiler filtrelenmeli; arka plan gürültüsü, sadece hata ayıklama (debugging) aşamasında incelenmelidir.

Bir sonraki girdi geldiğinde, hangi fonksiyonun çağrılacağına dair kesin bir prototipinizin olması gerekir. Belirsizlik, sadece gecikme (latency) değil, aynı zamanda gereksiz işlem yüküdür.

Bu sadeleşme süreci, bir sürücüye göre sürüşe odaklanmak gibidir. Direksiyon ve gaz pedalı, her şeyin merkezi işlem birimidir; göstergeler ise sadece durumu raporlar. Geri kalan her şey, bu temel döngüyü baltalamaya çalışan gereksiz syscall'lardır.