Her yazılımcının meslek hayatında en az yüzlerce kez yaşadığı, hem gülümseten hem de insanın kendi zihnine karşı derin bir mahcubiyet duymasına neden olan o klasik anı hatırlayın:

Saatlerdir ekrana kilitlenmişsinizdir. Gözleriniz kan çanağına dönmüştür. Terminalde kırmızı bir hata mesajı yanıp sönmekte veya daha kötüsü, sistem hiçbir hata fırlatmadan tamamen yanlış bir çıktı üretmektedir. Kod satırlarını defalarca baştan sona okumuş, logları kontrol etmiş, değişkenlerin değerlerini tek tek yazdırmış ama mantık hatasını bir türlü yakalayamamışsınızdır.

Çaresizlik içinde yan masadaki meslektaşınıza dönersiniz:

"Ahmet, müsaitsen bir bakar mısın? Kafayı yemek üzereyim, iki saattir bu fonksiyonun neden null döndüğünü bulamıyorum."

Ahmet sandalyesini kaydırarak ekranınızın yanına gelir: "Anlat bakalım, ne yapıyor bu fonksiyon?"

Siz başlarsınız anlatmaya:

"Bak şimdi, kullanıcı formu gönderince önce API isteğini karşılıyoruz. Şurada gelen parametreleri valide ediyoruz. Sonra veritabanından kullanıcı profilini çekiyoruz. Ardından eğer kullanıcının yetkisi varsa şu servisi çağırıp..."

Tam o kelimede sesiniz kesilir. Gözleriniz büyür. Parmağınız ekranda bir satırın üzerinde asılı kalır. Ağzınız açık öylece bakakalırsınız.

Ahmet daha tek bir kelime etmemiştir; hatta muhtemelen ekrandaki koda henüz odaklanamamıştır bile.

Siz aniden sandalyenizden fırlarsınız: "Tamam Ahmet, bakmana gerek kalmadı, çözdüm! Değişkeni fonksiyonun içinde değil döngünün dışında tanımlamışım!"

Ahmet bıyık altından gülerek sandalyesini masasına çeker. Siz ise hem sorunu çözmenin getirdiği hafiflemeyle hem de iki saattir burnunuzun ucundaki hatayı göremediğiniz için kendinize duyduğunuz öfkeyle baş başa kalırsınız.

İşte yazılım folkloruna "Rubber Duck Debugging" (Plastik Ördek Hata Ayıklama) olarak geçen bu pratik, sadece şakacı bir ofis geleneği değil; insan bilişinin (cognition) en büyüleyici sırlarından biridir.

Zihnin Görünmez Sıçramaları ve Kör Noktalar

Neden kendi kendimize düşünürken göremediğimiz bir hatayı, bir başkasına (veya masadaki sarı bir plastik ördeğe) sesli olarak anlatırken saniyeler içinde fark ederiz?

Bunun cevabı beynimizin düşünme mimarisinde yatar.

Zihnimiz iç diyalogla (monologla) çalışırken inanılmaz derecede tembel ve varsayımsaldır. Kodu sessizce okurken, gözlerimiz ekrandaki karakterleri tarar ama beynimiz aslında kodun ne yazdığını değil, ne yazması gerektiğini düşündüğümüzü okur.

Zihin satırların üzerinden hızla atlarken varsayımlar üretir: "Evet, bu fonksiyon kullanıcıyı getiriyor. Evet, burada id kontrolü yapılıyor. Evet, burada veri dönüyor." İç sesimiz, kendi inşa ettiği mantık köprülerindeki çatlakları ve boşlukları bilinçaltında otomatik olarak doldurur. Buna psikolojide "bilişsel kör nokta" veya "doğrulama yanlılığı" (confirmation bias) denir.

Ancak düşüncenizi kafanızın içinden çıkarıp ses dalgasına dönüştürmeye karar verdiğiniz an, beyninizde bambaşka nörolojik devreler devreye girer.

Konuşmak, lineer bir eylemdir. Zihninizdeki o soyut, dağınık ve çok boyutlu düşünce bulutunu kelimelere dökebilmek için; o düşünceyi tek boyutlu bir çizgiye, mantıksal bir neden-sonuç zincirine dizmek zorundasınızdır.

Kodu bir başkasına anlatırken, "Burada kullanıcıyı getiriyoruz" diyemezsiniz; "Şu fonksiyona şu ID'yi vererek şu tablodan kullanıcı kaydını istiyoruz" demek zorunda kalırsınız. Ve işte o sesli ifade, beyninizi kodun hayalindeki versiyonuyla değil, ekranda duran acımasız ve çıplak gerçekliğiyle yüzleşmeye zorlar.

Kendi sesinizi kendi kulağınızla duyduğunuz an, mantık köprüsündeki o eksik taşı görürsünüz: "Bir dakika, ben fonksiyona ID'yi parametre olarak geçmedim ki!"

Acil Serviste Devir Teslim (Handover) ve Vaka Sunumu

Bu zihinsel aydınlanmanın tıp dünyasındaki karşılığı, hekimlerin her gün yaşadığı vaka sunumu (case presentation) ve nöbet devir teslim (handover) ritüelidir.

Acil serviste saatlerdir takip ettiğiniz, bir türlü genel durumunu toparlayamadığınız ve kesin tanıya varamadığınız karmaşık bir hasta vardır. Kan tahlillerine bakmışsınızdır, röntgenleri incelemişsinizdir ama parçalar bir türlü yerine oturmuyordur.

Sabah nöbet devri gelir. Kıdemli uzman hekim veya hoca servisleri gezmeye başlar. Sıra sizin hastanıza geldiğinde dosyayı elinize alıp hocaya vaka sunmaya başlarsınız:

"Hocam, 54 yaşında erkek hasta. Dün gece şiddetli epigastrik karın ağrısı ve bulantı şikayetiyle başvurdu. Karın muayenesinde defans yok. Kan biyokimyasında amilaz normal, lökosit hafif yüksek. EKG çektik, sinüs ritminde... ama nabız dakikada 52..."

Cümlenin tam bu noktasında asistan hekimin gözleri parlar. Sözünü keser: "Hocam, bir dakika! Epigastrik ağrı, bradikardi... Bu tablo bir mide-bağırsak problemi değil; sağ koroner arter tutulumlu bir Akut İnferior Miyokard Enfarktüsü (kalp krizi) olabilir! Hemen bir sağ derivasyonlu EKG daha çekelim!"

Hoca tek bir söz söylememiştir. Sadece dinlemiştir.

Asistan hekim, vakayı kafasının içinde darmadağınık düşünürken göremediği bağlantıyı; semptomları kronolojik ve sesli bir anlatı haline getirirken kendi ağzıyla yakalamıştır. Tıpta hekimlerin vakaları birbirine yüksek sesle sunması sadece bir bürokrasi değil; hekimin kendi zihnini hizalamasını sağlayan hayati bir teşhis aracıdır.

Yapay Zeka Çağında Yeni Nesil Plastik Ördekler

Bugün yazılım geliştiriciler olarak masalarımızda artık sadece sarı plastik ördekler veya yan koltuktaki meslektaşlarımız yok. Artık terminallerimizde ve IDE'lerimizde yapay zeka asistanları var.

Birçok geliştirici fark etmiştir: ChatGPT'ye veya kod asistanına karmaşık bir hatayı sormak için problemi uzun uzun yazdığınızda; tam "Gönder" butonuna basacakken sorunun çözümünü kendi kendinize bulursunuz.

Neden? Çünkü yapay zekaya bir prompt hazırlamak, aslında modern bir Rubber Duck seansıdır.

Yapay zekanın problemi anlayabilmesi için; bağlamı (context) tanımlamak, girdileri ve çıktıları açıkça yazmak, varsayımlarınızı tek tek sıralamak zorunda kalırsınız. Ve o problemi yapay zekanın anlayabileceği berraklığa kavuşturduğunuz anda, aslında problemin çözümünü kendi zihninizde de berraklaştırmış olursunuz. Çoğu zaman yapay zekanın yanıtına dahi ihtiyaç kalmaz.

Kendi Zihnine Karşı Alçakgönüllülük

Rubber duck debugging, mühendisliğin en büyük erdemlerinden birini öğretir bize: Kendi aklının mutlaklığına inanmamak ve bilişsel körlüklerini kabul edecek kadar alçakgönüllü olmak.

Zihniniz sizi kandırabilir. Gözleriniz ekrandaki hatayı saatlerce doğruymuş gibi algılayabilir. Çünkü insan beyni bir derleyici (compiler) değil; anlam üreten, boşlukları dolduran ve hikayeler uyduran organik bir makinedir.

Bu yüzden tıkandığınızda, saatlerce ekrana nefretle bakarak klavyeyi dövmek yerine yapacağınız en bilgece hareket; masanızdaki plastik oyuncağa, yanınızdaki arkadaşınıza veya boş bir kağıda dönüp konuşmaktır:

"Bak dostum, olay şöyle başladı..."

Çünkü bazen bir problemi çözmek için gereken tek şey daha fazla kod yazmak değil; düşüncelerimizin sesini kendi kulaklarımızla duyabilecek cesareti göstermektir.