Yakın zamanda tanıdığım hemen hemen tüm yazılım mühendisleri, AI araçlarını çeşitli şekillerde kullanıyor. Bazıları hata ayıklamak, şablon kodlar üretmek, testler yazmak, belgeler hazırlamak, SQL sorguları oluşturmak veya komut satırı komutları için AI’ye başvururken; bazılarıysa AI’yi günde birkaç kez, bazılarıysa sadece gizlice kullanıyor. Dahası, en şüpheci olanlar bile bir kez olsun karmaşık bir hata izini sohbet penceresine yapıştırıp yardım istemiş oluyor.
Bu nedenle, mühendislerin AI kullanıp kullanmadıkları artık en ilginç soru değil. Asıl önemli olan şu: AI, onların mühendislik yaklaşımlarını gerçekten değiştirdi mi?
Çünkü bu ikisi aynı şey değil.
AI kullanmak kolay. Ancak AI ile mühendislik yapmak çok daha zor.
Kod üretmek zor değildi; zor olan sistemi anlamaktı
Gerçek bir kod deposunda çalışırken AI’nin sunduğu çıktının sadece "kötü" değil, aynı zamanda sistemin yapısını, testleri, adlandırma kurallarını veya gelecekteki bakım maliyetlerini bozabilecek bir risk taşıdığını gördüm. AI’nin ürettiği kodun çoğu ilk bakışta temiz ve düzgün görünüyordu. Ancak faydalı sonuçlar elde etmek için, AI’ye kod yazdırmadan önce kendimin bazı temel mühendislik adımlarını tamamlamam gerektiğini fark ettim:
- Gereksinimi net bir şekilde tanımlamak
- Görevi mümkün olduğunca daraltmak
- Kısıtları ve sınırlamaları açıklamak
- Değişikliğin nasıl doğrulanacağını belirlemek
AI’ye kod yazdırmak kolaydı. Ancak AI’den doğru çıktı alabilmek için, benim zaten yapmam gereken bir dizi hazırlık vardı. AI’nin sunduğu çıktının sistemimize uygun olup olmadığını değerlendirmek, temiz formatlamasından etkilenmemek ve nihayetinde uygunluğu kontrol etmek, asıl zor kısım oldu.
İşte o zaman anladım ki en önemli yetenek, AI’ye iyi komutlar vermek değil; işi doğru şekilde şekillendirmekti.
AI çıktıları hızlandırır, doğrulamayı artırmaz
AI’yi küçük görevler için kullanmakta hiçbir sakınca yok. Ben de hata ayıklama yönlendirmeleri, adlandırma önerileri, şablon kodlar, test fikirleri, belge taslakları ve yabancı kodları anlamaya çalışırken AI’den yardım alıyorum. Bu görevler, üretkenliği artırıyor ve sürtünmeyi azaltıyor.
Ancak tehlike, daha hızlı çıktıların otomatik olarak daha iyi mühendislik anlamına geldiğini düşünmeye başladığımızda ortaya çıkıyor. AI hızlı kod üretebilir. Fonksiyonlar, dosyalar, açıklamalar ve hatta testler oluşturabilir. Ancak AI’nin ürettiği kodun ürünümüze, mimari yapımıza, kısıtlarımıza veya uzun vadeli bakım maliyetimize uygun olup olmadığını otomatik olarak bilemez.
Bu kısım hâlâ mühendislik çalışması gerektiriyor.
Sorun sadece AI’nın kötü kod üretmesi değil. Mühendisler zaten insanlardan, kütüphanelerden, Stack Overflow cevaplarından ve kendi yorgun beyinlerinden kötü kodlarla karşılaşıyor. Daha büyük risk, AI’nın çıktısını hızlandırmasıyla birlikte, gereksinimlerin net olmamasının, incelemelerin zayıf kalmasının ve testlerin eksik bırakılmasının daha maliyetli hale gelmesi.
AI otomatik olarak mühendisliği iyileştirmez.
AI, halihazırda var olan mühendislik döngüsünü büyütür.
İki kez düşün, bir kez kodla
AI, problemi tam olarak anlamadan kod üretmeyi kolaylaştırıyor. Bu, görevin net olduğu durumlarda faydalı. Ancak gereksinimler belirsizse, mimari dağınıksa veya mühendis çıktının kalitesini değerlendiremiyorsa, hız artışı risklere dönüşüyor.
Bu yüzden, "AI mühendisleri yerini alacak" tartışmasının en az yararlı versiyon olduğunu düşünüyorum.
Daha iyi bir soru şu olabilir:
"Kod üretmek ucuzlaştığında, hangi mühendislik unsurları daha önemli hale gelir?"
Benim cevabım: uygulamadan önce problemi net bir şekilde anlamak.
AI, eski ve değerli bir tavsiyeyi daha da önemli hale getiriyor:
İki kez düşün, bir kez kodla.
AI’ye bir şeyler ürettirmeden önce problemi tanımlayın.
Çıktıyı kabul etmeden önce değişimin getireceği riskleri değerlendirin.
Değişikliği sisteminize eklemeden önce davranışını doğrulayın.
Mühendisliğin değeri, artık sadece kod yazmaktan değil, doğru değişimi şekillendirmekten geçiyor.
AI ile mühendislik yapmanın gerçek yüzü
Benim için AI ile mühendislik yapmak, onu bir sihirli cevap kutusu olarak değil, yapılandırılmış bir işbirlikçi olarak görmek anlamına geliyor. Çalışma süreci kod yazmaya başlamadan önce başlıyor:
- Gereksinimi yazmak
- Kapsamı daraltmak
- Yararlı bağlamlar sunmak
- Riskleri sorgulamak
- Uygulamadan önce bir plan oluşturmak
Kodlama tamamlandıktan sonra ise sorumluluk yine mühendise düşüyor:
- Değişikliği incelemek
- Kontrolleri çalıştırmak
- Değişikliğin sisteme uygun olup olmadığına karar vermek
Basit bir AI destekli döngü şöyle işleyebilir:
Gereksinim → boşluklar → plan → küçük değişiklik → inceleme → kontroller → notlar
Bu, AI destekli geliştirme hikayesinin en parlak versiyonu değil. Ancak gerçek mühendisliğin ta kendisi.
Çünkü gerçek mühendislik, sadece kod üretmek değil;
Güvenilir bir değişim üretmektir.
Gelecekteki değişim neye odaklanmalı?
Önümüzdeki büyük mühendislik değişimi, kimin en çok kod ürettiğiyle ilgili olmayacak. Bu avantaj zaten ucuzlamış durumda. Daha zor olan avantaj, neyin inşa edilmesi gerektiğini, bunun sistemle nasıl uyumlu olacağını ve nasıl doğrulanacağını bilmek.
İşte bu noktada AI destekli mühendislik ilginçleşiyor.
AI’nin mühendislik yargısını değiştirmesi değil;
Onu atlamanın zorlaşması önem taşıyor.
Önemli mühendislik araçlarının çoğu, ekiplerin iş akışlarını değiştirdikten sonra değerli hale geldi. Git, işbirliğini değiştirdi. Bulut, altyapıyı değiştirdi. CI/CD, yayınlama sürecini değiştirdi.
AI, bu değişimlerden daha geniş, daha karmaşık ve daha hızlı ilerliyor. Bu yüzden tam olarak aynı yolu izleyeceğini varsaymak istemiyorum. Ancak ortaya çıkan ders hâlâ tanıdık:
- Aracın kendisi önemlidir.
- Aracın etrafındaki iş akışı daha da önemlidir.
AI’den en çok fayda sağlayan mühendisler, en çok kullananlar olmayabilir. En çok fayda sağlayanlar, AI’nın etrafında daha iyi döngüler tasarlayanlar olacak:
- Daha net spesifikasyonlar
- Daha küçük değişiklikler
- Daha güçlü incelemeler
- Daha iyi testler
- Daha bilinçli kararlar
Evet, çoğu mühendis artık AI kullanıyor.
Ancak sadece birkaç tanesi AI ile mühendislik yapmaya başlıyor.
Bu dönemde en iyi mühendisler, en hızlı komut yazarlar olmayabilir.
Onlar, problemi uygulamaya geçirmeden önce yavaşlatıp ardından hızlı bir şekilde uygulayanlar olabilir.
Unutmayın: sorunları netleştirmek, hızlı kod üretmekten daha değerlidir.
Yapay zeka özeti
Yazılım mühendisleri artık AI kullanıyor. Peki AI çıktılarını nasıl daha güvenilir ve anlaşılır mühendislikle birleştirebiliriz? Verimli ve sürdürülebilir kod geliştirme stratejileri.