Selamlar Fatih. Bence bu tür argümanların en büyük çıkmazı, insanların tecrübelerinin çok farklı olması ve bu konuda sağlıklı veri toplamanın zor olması. Söylediklerinin önemli bir kısmına katılıyorum ama meselenin biraz daha gri bir tarafı olduğunu düşünüyorum.
Ufak bir not: AI bugün iyi kod üretebiliyorsa bunun sebeplerinden biri de geçmişte insanların aslında o kadar da kötü kod yazmamış olması. Sonuçta bugünkü modeller büyük ölçüde insanların yazdığı kodlar üzerinde eğitildi.
İlk söylediğinle vardığın sonucu bağlayan varsayımı ben kabaca şöyle okuyorum:
“İnsanlar zaten eskiden de yazdıkları kodun tamamına hâkim değildi. AI düzgün kod yazıyor mu, güvenebilir miyim diye soruyorsun ama eskiden de her şeyi anlamıyordun. O halde AI ile kod yazmak neden şimdi daha tehlikeli olsun?”
Bu senin argümanını tam olarak temsil etmiyor olabilir. Ama ben özellikle bu varsayım üzerinden cevap vermek istiyorum; çünkü ilk gözleminle vardığın sonuç arasındaki geçişte önemli bir rol oynadığını düşünüyorum.
1. Kodun tamamına hâkim olmak zaten hedef değildi.
Hatta abstraction, SOLID, Clean Code gibi kavramların önemli hale gelmesinin sebeplerinden biri tam olarak buydu. Bir insanın aynı anda hatırlaması, okuması ve anlaması gereken kod miktarını azaltmaya çalışıyorduk. Sistemi anlaşılabilir parçalara bölmek mühendisliğin kendisiydi.
2. SOLID, TDD vs. gerçekten uygulanıyor muydu?
Hepsi, her projede, eksiksiz uygulanıyordu diyemem. Ama örneğin Single Responsibility, Dependency Injection ve Interface Segregation oldukça yaygın pratiklerdi. Open/Closed ve Liskov Substitution belki isimleri daha az hatırlanan prensiplerdi.
Hatta Open/Closed Principle buna güzel örnek. İnsanlar prensibin adını söylemeden polymorphism üzerinden zaten buna uygun tasarımlar yapabiliyorlardı.
Ben kendi çalıştığım projelerde bu prensiplerin farklı seviyelerde sürekli kullanıldığını gördüm. Zamanla programlama pratiğinin içine o kadar karıştılar ki insanlar bazen bunları kullandıklarının farkında bile değildi.
Bir insan SOLID'in beş maddesini sayamıyor olabilir ama yıllarca iyi mühendislerle çalışarak, başkalarının kodunu görerek ve PR review'lardan geçerek bunun bir tür muscle memory'sini geliştiriyordu.
Bunun başka bir etkisi daha vardı. İyi mühendislerin kurduğu projelerde başlangıçtaki mimari ve kod yapısı sonraki insanları da yönlendiriyordu. O mühendisler artık ekipte olmasa bile yeni gelenler mevcut pattern'leri kopyalayarak belli bir kalite çizgisini sürdürebiliyordu.
“Sonra refactor ederiz” kısmına ise katılıyorum. Çok iş gerçekten ileriki bir tarihe bırakılıyordu. Ama refactor edilmesi gereken kodun içinde bile SOLID prensiplerini görebiliyordun. Çünkü bunlar binary kurallar değil, farklı seviyelerde uygulanabilen prensipler. Zaten refactor ihtiyacının önemli bir kısmı da kodun tamamen kötü olmasından değil, mimarinin zamanla değişen ihtiyaçlara cevap verememesinden çıkıyordu.
AI ile kod yazmak artık görmezden gelinemeyecek bir gerçek. Ama herkes ve her kurum bundan aynı ölçüde etkilenmeyecek. Rekabet baskısı, regülasyon, güvenlik ve hata toleransı her yerde aynı değil.
Buna rağmen mühendislerin AI ile kod üretme becerisi kazanmasının önemli olduğunu düşünüyorum. Çünkü bence bir sonraki problem “AI kod yazabiliyor mu?” olmayacak.
Asıl mühendislik problemi, bu hızın ürettiği karmaşıklığı, kalite problemlerini ve riskleri nasıl kontrol edeceğimiz olacak. Ve o problemler şimdiden görünmeye başladı.
Bir de eğer bu yazının vermek istediği ana mesaj “AI'dan çekinmeyin, AI ile gayet kod yazılabiliyor ve bunu kullanmayı öğrenmek gerekiyor” ise, bence bu değerli bir mesaj.
Bence asıl problem, şirketlerin ve sektörün bu mesajı en baştan insani bir ölçüde verememesi oldu.
AI çoğu zaman “işinizi kolaylaştıracak yeni bir araç” olarak değil, neredeyse “ya adapte olursunuz ya da işiniz elden gider” şeklinde anlatıldı. Bu korkunun tamamını şirketlere de yüklemiyorum. Mühendisler AI'ın neler yapabildiğini ilk gördüklerinde zaten doğal olarak “peki benim işim ne olacak?” diye düşündüler.
Bence AI'a karşı oluşan tepkinin önemli bir kısmı teknik olmaktan çok buradan geliyor.
Eğer AI en baştan insanın yerine geçecek bir tehdit ya da existential crisis gibi değil de, mühendisliğin kapasitesini artıracak bir teknoloji olarak konumlandırılsaydı, bugün yaptığımız tartışmaların önemli bir kısmına belki ihtiyaç bile kalmazdı. İnsanların adapte olması çok daha doğal olabilirdi.
Tabii bunun neden böyle olmadığı da anlaşılabilir. AI'a yatırılan para çok büyük, şirketler arasında ciddi bir “geri kalıyoruz” korkusu var ve herkes bu dönüşümün hızını kaçırmaktan endişe ediyor. Bunların hepsi şirketlerin verdiği mesajın tonunu muhtemelen daha sert ve daha panik hale getirdi.
Bence bugün yapılması gereken şey de tam olarak bu tonu düzeltmek: AI'ı ne küçümsemek ne de insanların üzerinde korku oluşturarak benimsetmeye çalışmak. Mühendislerin bu teknolojiyi öğrenmesini sağlamak ama aynı zamanda yeni hızın getirdiği kalite, güvenlik ve karmaşıklık problemlerini de mühendisliğin konusu olarak görmek.