Nisan 2000'de Stack Overflow'un kurucusu Joel Spolsky, “Asla Yapmamanız Gereken Şeyler, Bölüm I” başlıklı bir makale yayınladı. Bunun nedeni Netscape'in mevcut tarayıcı kodunu daha da geliştirmek yerine o zamanın tarayıcı kodunu sıfırdan yeniden yazma kararıydı.
Duyurudan sonra devamını okuyun
Golo Roden, native web GmbH'nin kurucusu ve CTO'sudur. Etkinlik ve hizmet odaklı dağıtılmış mimarilere odaklanarak web ve bulut uygulamaları ile API'lerin tasarımı ve geliştirilmesiyle ilgilenmektedir. Yol gösterici ilkesi, yazılım geliştirmenin kendi başına bir amaç olmadığı, her zaman temeldeki profesyonelliği takip etmesi gerektiğidir.
Spolsky'nin tezi: Bu karar bir yazılım şirketinin yapabileceği en kötü stratejik hatadır. Bu, programlama işinin gerçekte ne olduğuna dair temel bir yanlış anlaşılmaya dayanmaktadır. Programcılar yeniden yazmayı tercih ettiler çünkü başka birinin kodunu okumak sıkıcıydı ve yazmak verimli görünüyordu. Fakat bu izlenim yanıltıcıdır. Yeniden başlama isteği, sektördeki en maliyetli ayartmalardan biridir.
Aradan 25 yıl geçmesine rağmen bu metin geçerliliğinden hiçbir şey kaybetmedi. Tam tersine. Büyük Dil Modellerinin (LLM) ortaya çıkmasıyla birlikte, yazma ve okuma arasındaki asimetri o kadar değişti ki, mevcut üst düzey yazılım geliştirme disiplinini sistematik olarak küçümseyip değerlendirmediğimiz sorusu akut hale geldi. Gelecek yıllarda takımların nefesini kesen şey yazmak olmayacak. Okumak öyle. Bu yazıda bunun neden böyle olduğunu, asimetrinin nereden geldiğini, üretken yapay zeka tarafından nasıl daha da kötüleştirildiğini ve rastgele bir eşlik becerisinin nasıl bağımsız bir disiplin haline gelmesi gerektiğini göstermek istiyorum.
Kodunuz üç hafta sonra başkasının koduna dönüşür
Yazarken her şey aynı anda kafanızda olur: gereksinimler, veri modeli, planlanan mimari, üzerinde çalıştığınız yer, yaptığınız varsayımlar, yaptığınız ödünler. Bu genel zihinsel vizyon, yazmayı hızlı hale getirir. Aynı zamanda okurken eksik olan da budur.
Üç hafta sonra, bağlamı yanında getirmeden kendisini aynı kodla karşı karşıya bulan herkes, bu genel vizyonu yeniden yapılandırmalıdır. Değişken adları ipuçları sağlar, testler daha fazlasını anlatır, bir çekme isteği yorumu ideal olarak teknik nedeni sağlar ve şans eseri bir taahhüt mesajı nihai gerekçeyi sağlar. Gerçek niyet, hayal edilen model, reddedilen alternatifler, bunların hepsi kayboldu. Yeniden inşa etmek zaman ve konsantrasyon gerektirir ve her ikisi de yazmaktan daha pahalıdır.
Spolsky'nin anekdotu çok canlıdır çünkü örgütsel düzeydeki bu asimetriyi göstermektedir. Netscape'te artık kimsenin anlamak istemediği eski kodlarla karşı karşıyaydınız. Cazibe sadece her şeyi yeniden yazmaktı. Sonuç biliniyor: üç yıllık durgunluk, kaybedilen bir tarayıcı pazarı, düşüşte olan bir şirket. Görünüşte en basit yol en pahalı olanıydı.
Duyurudan sonra devamını okuyun
Bireysel düzeyde aynı model günlük olarak kendini gösterir. Soru yerine farklı bir çözüm yaklaşımı öneren Yığın Taşması cevaplarında açıkça görülüyor. Mevcut kodu gerçekten anlamadan meslektaşların yeniden düzenleme önermesinde kendini gösterir. Bir modülü geliştirmek yerine değiştirme isteğinizi gösterir. Okumak rahatsız edicidir ve öyle de kalacaktır.
Yüksek Lisanslar sonunda dengeyi bozuyor
Modern bir Yüksek Lisans, bir kişinin sayfalarca sayfalarca dolaşması sırasında birkaç yüz satırlık kod üretir. Nesil ekonomik hale geldi. Jetonlar ucuz, bekleme süreleri kısa ve görevin zihinsel modeli bir öneride bulunmaya dayanıyor. Yazma çabası aslında çöktü.
Okuma tarafında hiçbir şey değişmedi. Anlamak hâlâ her zaman sahip olduğu şeye mal oluyor: yoğunlaştırılmış dikkat, zaman, sabır. İnsanların kod işleme hızı dakikada birkaç satırdır ancak karmaşıklığa bağlı olarak bu hız önemli ölçüde daha düşük olabilir. Bu ölçek araçlarla hızlandırılamaz çünkü bizzat insan bilişine bağlıdır.
Sonuç, grotesk bir yer değiştirmedir. Günde bir kez yapılan çalışma, bir incelemecinin yarım saatte inceleyebileceği yüz satırlık kod üretirken, bugün bir saatlik zamanlı çalışma binlerce satır üretebilmektedir. Anlaşılacak şeylerin miktarı oldukça artıyor, anlama hızı sabit kalıyor. Bir zamanlar yazmada bir darboğaz olan şey, anlamada bir darboğaza dönüşüyor.
Bu değişiklik birçok tartışmada göz ardı ediliyor. Nesil tarafında üretkenliği kutluyoruz, okuma tarafında açılan denge konusunda sessiz kalıyoruz. Okumadığınız şeyi anlayamazsınız. Anlaşılmayan şey güvenilir bir şekilde ele alınmayacaktır. Borç basitçe geleceğe taşınır, ortadan kaybolmaz.
Bu durum, en geç LLM öncesi çağın hızına göre tasarlanan kod inceleme süreçlerinin aniden, kapsamını bir insan incelemecinin bütün bir gün içinde kavrayamayacağı çekme istekleriyle karşı karşıya kaldığında açıkça ortaya çıkıyor. Tepki genellikle derinlemesine bir tartışma değil, kısa bir beğenidir. Bu, kod incelemesini önemli bir aşamadan törensel bir aşamaya taşır ve daha sonra maliyetli hale gelen sorunlar da bu geçişte ortaya çıkar.
Bağımlılık sarmalı
Hırslı bir okul, kodla uğraşmanın gereksiz hale geleceğini savunuyor: Yeterli beceriler, kontrol mühendisliği ve kesin Markdown spesifikasyonları ile iş tamamen spesifikasyon seviyesine taşınabilir. Oluşturulan kod artık kimsenin bakması gerekmeyen bir uygulama sorunudur. Bu fikir duvara çarpacak.
Kodu okumadan basitçe üreten herkes, başlangıçtan itibaren kendisini yabancı kodla karşı karşıya bulacaktır. Revizyon mümkün değildir, sorun giderme mümkün değildir, her ikisi de anlayış gerektirir. Birbirini takip eden her nesilde kod tabanı, nüfuz edilebileceğinden daha hızlı büyür. “Var olan” ile “anlaşılan” arasındaki uçurum nefes kesici bir hızla genişliyor ve bununla birlikte burada gerçekte ne olup bittiğini sormak zorunda kalınan yerlerin sayısı da artıyor.
Bu kodu açıklayabilecek, kontrol edebilecek veya düzeltebilecek tek varlık yapay zekanın kendisidir. Bu, ironik bir şekilde, duruma neden olan aynı sisteme bağımlı olduğunuz anlamına gelir. Araç bağımlılığa, hızlanma tuzağa dönüşür. Anlama yeterliliğini geliştiremeyen herkesin yalnızca dışsal bir yeterliliği vardır ve artık bu dışsal yeterliliğe ilişkin kararları tek başına vermez.
Bu model yeni değil, yeni olan hızıdır. Bir ekibin artık erişilemez bir kod tabanı yoktur. Klasik durumda, personel değişiklikleri ve yetersiz dokümantasyon nedeniyle yıllar içinde erişilemezlik meydana geldi. Yapay zeka destekli durumda bu birkaç ay içinde gerçekleşebilir çünkü üretim hızı kayıt hızını umutsuzca aşıyor.
Tipik tetikleyici muhteşem değildir. Üretimde bir hata belirir, ekipteki hiç kimse etkilenen kodu anlamaz, bu nedenle yapay zekayı sorgularsınız. Yapay zeka, her ikisi de makul, ikisi de test edilmemiş bir açıklama ve çözüm sunuyor. En iyi ihtimalle bu doğru. En kötü durumda, eski borçların üstüne yeni borçlar koyarsınız ve bunu ancak bir sonraki hata tam olarak bu seviyede ortaya çıktığında fark edersiniz. Onarım boyaya dönüşüyor.
Başlangıçta bir kurtuluş gibi görünen şey aslında yükün değişmesidir. Kendinizi yazmak yerine önerilerde bulunuyorsunuz. Kendinizi anlamak yerine yapay zekaya sorun. Her ikisi de üretken görünüyor. Her ikisi de kod tabanları üzerindeki egemenliği aşındırıyor.

Bir yanıt yazın