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.

Ç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.

İlk Kodunu Yazdın ve Kendini Dahi Sandın mı? Zihnin Sana Küçük Bir Oyun Oynuyor

Programlamaya ilk başladığın günü düşün: Ekrana birkaç satır yazarsın, çalıştırırsın ve mucize gerçekleşir. Bilgisayar sana itaat etmiştir. Belki bir değişken tanımladın, belki ekrana merhaba dünya yazdırdın, belki de iki sayıyı toplayan küçük bir program yaptın. O an, evrenin kapısına gizli bir şifre girmiş gibi hissedersin. İçinden bir ses yükselir: Ben bunu çözdüm. Hatta belki biraz daha ileri gider: Silikon Vadisi, geliyorum.

İşte bu an, Dunning-Kruger Etkisi’nin programlama kostümü giymiş halidir. Kişi bir alanda çok az şey öğrendiğinde, henüz bilmediği şeylerin büyüklüğünü de bilmez. Bilgi ufku dar olduğu için dünya da küçük görünür. Bir çocuk nasıl mahalle parkını tüm evren sanabilirse, yeni başlayan programcı da döngüleri öğrenince yazılım mühendisliğini avucuna aldığını düşünebilir.

Sahte Dahi Sendromu: Zihnin Tatlı Tuzakları

Dunning-Kruger Etkisi basitçe şunu söyler: Bir konuda yetersiz olan insanlar, çoğu zaman yetersizliklerini fark edecek bilgiye de sahip değildir. Bu kulağa sert gelebilir, ama aslında insan zihninin savunma mekanizmalarından biridir. Ego, bilinmezliğin uçurumuna bakmayı sevmez. Ona küçük bir başarı ver, hemen taç takmak ister.

Programlamada bu etki özellikle güçlüdür çünkü geri bildirim hızlıdır. Kod çalıştı mı? Evet. O halde doğru. O halde ben iyiyim. O halde ben yetenekliyim. Fakat yazılım dünyasında kodun çalışması, kodun iyi olduğu anlamına gelmez. Bir köprü ayakta duruyor diye mühendislik harikası olmayabilir; belki ilk rüzgarda yıkılacaktır. Aynı şekilde çalışan kod, okunabilir, güvenli, ölçeklenebilir, test edilebilir ve sürdürülebilir olmayabilir.

Yeni başlayan kişinin ilk yanılgısı şudur: Programlama, bilgisayara komut vermektir. Oysa daha derin düzeyde programlama, belirsizliği parçalamak, problemi modellere ayırmak, zihinsel karmaşayı mantıksal düzene çevirmektir. Kod sadece bu düşüncenin görünen tortusudur. Buzdağının üstündeki parlak kısım.

Cehaletin Zirvesinden Ustalığın Vadisine

Öğrenme eğrisi genellikle dramatiktir. Başta hiçbir şey bilmezsin ve bunun farkındasındır. Sonra birkaç temel kavram öğrenirsin: değişkenler, koşullar, döngüler, fonksiyonlar. Birden özgüven fırlar. Bu nokta, kimi kaynaklarda cehaletin zirvesi diye anılır. Manzara güzeldir ama zemin kaygandır.

Sonra gerçek dünya gelir: hata mesajları, bağımlılıklar, sürüm sorunları, asenkron işlemler, veri yapıları, algoritmalar, mimari kararlar, güvenlik açıkları, ekip çalışması, okunabilirlik, teknik borç. Bir anda fark edersin ki, merhaba dünya yazmakla dünyayı değiştirmek arasında birkaç galaksi vardır. Bu farkındalık can yakabilir. Ama iyi haber şu: Gerçek öğrenme tam burada başlar.

Bu düşüş bir yenilgi değildir; erginlenme törenidir. Jungiyen bir dille söylersek, acemi programcı kendi gölgesiyle tanışır. Gölge, bilmediğini bilmediğin o karanlık bölgedir. Onu reddedersen kibir doğar. Onu kabul edersen ustalık başlar. Çünkü olgun zihin, ben biliyorum demekten çok, nerede yanılabilirim diye sorar.

İlk Koddan Sonra Ne Yapmalı?

Birinci kural: Çalışan kodla yetinme, neden çalıştığını anla. Bir satırı kopyaladıysan, o satırın hangi problemi çözdüğünü kendine açıkla. Açıklayamıyorsan, henüz senin bilgin değildir; sadece zihninde kiralanmış bir eşyadır.

İkinci kural: Hata mesajlarından kaçma. Hata mesajı düşman değil, sistemin sana yazdığı dürüst bir mektuptur. Başta kaba görünür, çünkü dili mekaniktir. Ama okumayı öğrenirsen, en iyi öğretmenlerinden biri olur.

Üçüncü kural: Küçük projeler yap, ama onları yeniden yaz. İlk sürümde amaç çalıştırmak olsun. İkinci sürümde okunabilirlik. Üçüncüde yapı. Dördüncüde test. Böylece aynı problemde farklı derinlikleri görürsün. Ustalık, sürekli yeni oyuncaklara koşmak değil, eski problemi daha zarif çözebilmektir.

Dördüncü kural: Özgüvenini koru ama ona tasma tak. Özgüven öğrenmenin yakıtıdır; kibir ise motoru yakan aşırı ısınma. Ben yapabilirim demek iyidir. Ben artık oldum demek tehlikelidir.

Programlamaya girişte hissedilen sahte dahi sendromu utanılacak bir şey değildir. Hatta çoğu kişinin geçtiği komik, insani ve öğretici bir duraktır. Önemli olan orada kamp kurmamaktır. İlk kodunu yazınca kendini dahi gibi hissettiysen, gülümse. Zihnin sana küçük bir zafer töreni düzenledi. Sonra sandalyene otur, terminali aç ve şu daha büyük soruyu sor: Bu kod gerçekten ne yapıyor, ben gerçekten ne anlıyorum?

Çünkü iyi programcı, bilgisayara hükmeden kişi değildir. İyi programcı, kendi cehaletini adım adım haritalandıran kişidir. Ve bazen en parlak satır, ekrana yazdırılan sonuç değil, zihinde beliren şu cümledir: Daha öğrenecek çok şey var.

Babil Kulesi — TED Chiang

Port Jefferson, New York’ta doğup büyüyen Chiang, Brown Üniversitesi’nden bilgisayar bilimi diplomasına sahiptir. Onu Arrival filmi ile tanımış, dilimize çevrilen iki kitabını alarak diğer dahiyane öykülerini okumuştuk.
Chiang, “Bu hikayenin ilham kaynağı bir arkadaşıyla yaptığı bir konuşma sırasında geldi” diyor ve ekliyor: “Babil Kulesi efsanesinin İbranice okulunda öğretildiği versiyonundan bahsettiğinde. Sadece Eski Ahit hesabını biliyordum ve bu benim üzerimde hiçbir zaman büyük bir etki bırakmamıştı. Ancak tam uzunlukta versiyonda kule o kadar uzun ki tırmanması bir yıl alıyor; Bir adam ölümüne düştüğünde kimse yas tutmaz, ancak bir tuğla düştüğünde tepedeki işçiler ağlarlar çünkü onun yerini alması bir yıl sürer.

“Sanırım hikaye anlatıcısı projenin ahlakını sorguluyordu. Ancak benim için masal, Magritte’nin Pireneler’deki Kalesini anımsatan, gökyüzündeki fantastik bir şehrin görüntülerini çağrıştırdı. Böyle bir şeyi hayal eden kişinin küstahlığına, gevezeliğine şaşırdım. “Okuyucular, bu hikayenin ilkel bir dünya görüşünden  bilim-kurgusal a geçiş hakkında yorum yaptılar. Hikayenin bu yönünü yazarken fark etmediğimi itiraf etmeliyim. (Belki de kaç tane bilimsel yasayı çiğnediğimin farkında olduğum için; Babillilerin kendileri bu hikayeyi tamamen fantezi olarak kabul edecek kadar fizik ve astronomi biliyorlardı.) Hikaye hakkında bilim kurgu olduğunu düşündüğüm şey, Tanrı’nın varlığına dair aldığı rasyonalist konumdu. Tanrı’nın var olduğuna inanıyorsanız, evreni inancınızı destekleyecek şekilde kolayca yorumlayabilirsiniz. Ancak evrenin tamamen mekanik olduğuna inanıyorsanız, bu görüş için de bol miktarda kanıt bulabilirsiniz.”  TED Chiang

Şinar ovasının karşısına döşenecek kule olsaydı, bir ucundan diğer ucuna yürümek iki günlük bir yolculuk olurdu. Kule ayakta dururken, bir adam yüksüz yürürse tabanından zirvesine tırmanmak tam bir buçuk ay sürer. Ancak çok az insan kuleye boş ellerle tırmanır; Çoğu erkeğin hızı, arkalarından çektikleri tuğla arabasıyla çok yavaşlar. Bir tuğlanın bir arabaya yüklendiği gün ile kulenin bir parçasını oluşturmak için çıkarıldığı gün arasında dört ay geçer. Hillalum bütün hayatını Elam’da geçirmişti ve Babil’i yalnızca Elam’ın bakırının alıcısı olarak tanıyordu. Bakır külçeler, Karun’dan Aşağı Denize giden ve Fırat’a giden teknelerde taşındı. Hillalum ve diğer madenciler, bir tüccarın yüklü yük karavanıyla birlikte karadan seyahat ettiler. Yayladan, ovalardan, kanallar ve barajlarla ayrılmış yeşil alanlara inen tozlu bir yol boyunca yürüdüler. Hiçbiri kuleyi daha önce görmemişti. Hala fersah fersah uzaktayken görünür hale geldi: keten teli kadar ince, parıldayan havada sallanan, Babil’in kendisi olan çamur kabuğundan yükselen bir çizgi. Yaklaştıkça, kabuk güçlü surlara dönüştü, ama gördükleri tek şey kuleydi. Bakışlarını nehir ovasının seviyesine indirdiklerinde, kulenin şehir dışında yaptığı işaretleri gördüler; Fırat’ın kendisi artık tuğlalara kil sağlamak için kazılmış geniş, batık bir yatağın dibinden akıyordu. Şehrin güneyinde, artık yanmayan sıra sıra fırınlar görülüyordu.

Devamını oku “Babil Kulesi — TED Chiang” →

Yalan konusu abartılıyor mu?

Hep görürdüm de sanki şu aralar çok sıklaştı ya da beni bıktırdı😉 sosyal medyanın her bi köşesinde #yalan #yalancı vs #kahır dolu ayıplayan paylaşımlar var.
Ben de görüş bildiriyorum o halde ve bir alıntıyla başlıyorum😂

Dinleyici sorusu: Sürekli bana yalan söylenen bir ilişki içersindeydim. Bu insan artık hayatımda yok ancak yalan söylenmesi neden bu kadar acı veriyor? Hala toparlanma sürecindeyim.
Eckhart Tolle: Acı veriyor çünkü bunu kendi üzerine alındın ve şu anda acı veren şey senin egon. Egon sana: “Bana yalan söyledi” diyor. Egon karşındakinin farkındalık seviyesine göre davrandığını anlamıyor ve bu kişi şu anda da muhtemelen bir başkasına yalan söylüyor. Yani sen o kişi tarafından “bu kıza yalan söyleyeceğim” şeklinde belirlenmiş değilsin. Ancak tabii egonun tercümesi: bana yalan söyledi, bana! (Nasıl yani bana ha!?!!) Şeklinde olacaktır. Senin kendini konu dışına çekmen lazım. 4 anlaşmadan 1 tanesi “hiçbir şeyi kendi üzerine alınma” dır ki harika bir öneridir. Yani karşındakinin şu anki bilinç seviyesi yalan söyletmektedir, belki bunun farkında bile değildir belki de kendi yalanlarına inanmaktadır.
Durumun ağırlığı her bireyin kendi bilinç seviyesine göre davrandığını ve sizinle bir ilgisi olmadığını düşündüğünüz zaman değişir.

*


Aslında kendine yalan söylenen kişinin yapacağı iki şey var:

Devamını oku “Yalan konusu abartılıyor mu?” →

Kendini yüceltme

Sonunda kendini yüceltmeyi amaç edinen her türlü çaba felaketle sonlanmaya yazgılıdır. Bedelini şu anda ödüyoruz. Bir dağa, ne kadar büyük olduğunuzu kanıtlamak için tırmanıyorsanız, hemen hemen hiç bir zaman sağlayamazsınız bunu. Tırmansanız bile içi boş bir zafer olur bu. Zaferi sürdürmek için kendinizi tekrar tekrar başka yollarla kanıtlamak, sahte bir imajı tekrar, tekrar, tekrar oluşturmak; peşinizde bu imajın doğru olmadığı ve birinin bunu anlayacağı korkusuyla sonsuza dek bu imajı sağlamak zorundasınızdır. Bu çıkar yol değildir.