İ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.
Çelişki: İçimizdeki Sessiz Derleyici Hatası
Bilişsel çelişki, inançlarımızla davranışlarımız birbirine ters düştüğünde oluşan zihinsel gerilimdir. Sağlıklı yaşamak istediğini söyleyen ama her gece uykusunu telefona feda eden kişi bunu bilir. Daha iyi kod yazmak isteyen ama her bug’ı yamayla kapatan geliştirici de bilir. Asıl acı, bilmemek değildir; bilip de yapmamaktır. Bu yüzden zihin hemen bir avukat tutar. Daha zamanı değil der. Şimdi dokunursak daha çok bozulur der. Herkes böyle yapıyor der. Ben zaten baskı altındayım der. Böylece gerçek sorun çözülmez, sadece ahlaki rahatsızlığımız uyuşturulur.
Jungiyen bakışla söylersek, legacy code gölgemizin teknik versiyonudur. Kabul etmediğimiz, yüzleşmediğimiz, düzenlemediğimiz her şey bilinçdışında çalışmaya devam eder. Üstelik çoğu zaman admin yetkisiyle. Gölge, silinmiş değildir; sadece yorum satırına alınmıştır. Fakat kritik bir anda yeniden çalışır. Bir tartışmada ağzımızdan çıkan sert cümle, yıllar önce yazılmış bir if bloğudur. Bir projede sürekli ertelediğimiz refaktör, aslında başarısız görünme korkumuzun maskesidir. Kod tabanında da ruhta da hiçbir şey gerçekten kaybolmaz; sadece bağımlılıklarını saklar.
Eski alışkanlıkları sürdürmemizin nedeni aptallık değil, maliyet hesabıdır. Değişim pahalıdır. Refaktör zaman ister, test ister, cesaret ister. Daha kötüsü, eski kodu açınca kendi geçmiş kararlarımızla karşılaşırız. Kim yazdı bunu diye sorduğumuzda git blame bize bakar. Psikolojide de durum aynıdır. Bir davranışımızı değiştirmek, sadece bugünü değil, dünü de sorgulamaktır. Neden bunca yıl böyle yaşadım sorusu, çoğu insan için yeni bir alışkanlık edinmekten daha korkutucudur.
Çalışıyor Demek, Doğru Demek Değildir
Modern dünyanın en tehlikeli cümlelerinden biri şudur: Ama çalışıyor. Bu cümle şirketleri teknik borca, insanları ruhsal borca sokar. Bir evlilik çalışıyor olabilir; ama kimse nefes almıyordur. Bir ekip teslimat yapıyor olabilir; ama herkes tükenmiştir. Bir karakter stratejisi sonuç veriyor olabilir; ama kişinin ruhu her başarıda biraz daha kuruyordur. Çalışmak, yaşamak değildir. Ayakta kalmak, iyileşmek değildir. Sistemin çökmesini engellemek, onun sağlıklı olduğu anlamına gelmez.
Peki ne yapmalı? Önce çelişkiyi düşman değil, teşhis aracı olarak görmek gerekir. İç sıkıntısı bazen ruhun hata mesajıdır. Rahatsızlık, silinmesi gereken bir pop-up değil, okunması gereken bir log kaydıdır. Sonra küçük refaktörler gerekir. Hayatta da kodda da büyük devrimler çoğu zaman romantiktir ama tehlikelidir. Bir davranışı gözlemlemek, bir varsayımı test etmek, bir konuşmayı ertelememek, bir fonksiyona test yazmak, bir hayır demeyi denemek: Bunlar küçük ama yapısal hamlelerdir.
En önemlisi, eski kodumuza nefretle değil, sorumlulukla bakmalıyız. Çünkü o kod bir zamanlar bizi bir yere taşıdı. O alışkanlık bir dönem işe yaradı. Sorun onun varlığı değil, artık hüküm sürmesidir. Geçmişin çözümlerini bugünün yasası yaparsak, kendi içimizde eski bir imparatorluğun vatandaşı oluruz. Bilgelik, her şeyi silmek değil; neyin korunacağını, neyin dönüştürüleceğini ve neyin artık emekliye ayrılacağını bilmektir.
Sonunda insan da yazılım da aynı soruyla yüzleşir: Bu sistem gerçekten yaşamak istediğim hayatı mı çalıştırıyor, yoksa sadece çökmediği için mi onu sürdürüyorum? Eğer cevap ikincisiyse, derin bir nefes almanın zamanı gelmiştir. Çünkü refaktör sadece kodu temizlemez; bazen insanın kaderini de yeniden derler.
