SPEC Driven Development (AI ile yazılım geliştirmek için bir yöntem)

Yapay Zeka ile Yazılım Geliştirme: Belge Odaklı Geliştirmeye (SDD) Giriş

1. Vibe Coding Bırakmak: Yazılım Neden Yeniden Mühendisliğe İhtiyaç Duyuyor?

Yazılımcılar yapay zekayla kod yazmaya ilk başladıklarında genelde “hisse göre kodlama” (vibe coding) denen kuralsız bir yöntem kullanırlar. Bu yöntemde yazılımcı “bana bir buton yap” gibi kısa ve rastgele komutlar verip iyi bir sonuç çıkmasını umar. Yapay zeka hatalı kod ürettiğinde yazılımcı hataları söyler, yapay zeka düzeltmeye çalışır ve süreç bu şekilde devam eder.

Bu deneme-yanılma yöntemi, oturum kapandığında kaybolan uzun ve takipsiz sohbet geçmişleri oluşturur. Hisse göre kodlama; küçük arayüz düzeltmeleri ya da hızlı taslaklar için yeterli olsa da, karmaşık ve gerçek üretim seviyesindeki uygulamalarda yetersiz kalır. Geride tek kullanımlık kodlar, biriken teknik borçlar ve birbiriyle çelişen mimari kararlar bırakır.

Belge Odaklı Geliştirme (Spec-Driven Development - SDD), yapay zekanın denetimsiz kod üretmesinden doğan bu kaosu ortadan kaldırmak için tasarlanmış bir mühendislik disiplinidir. Geleneksel yazılım mühendisliği ilkelerini yapay zeka süreçlerine uyarlar; “ne ve neden yapılıyor” (belge/gereksinim) ile “nasıl yapılıyor” (kod) kısımlarını birbirinden tamamen ayırır. Yazılımcı; sohbet ekranında anlık tepkiler vermek yerine, sistemin amacını, teknolojilerini ve işlevsel gereksinimlerini belirten düzenli Markdown dosyaları oluşturur. Bu belgeler, insan ile yapay zeka arasında kalıcı bir teknik sözleşme görevi görür.

Özellik Hisse Göre Kodlama (Vibe Coding) Belge Odaklı Geliştirme (SDD)
Başlangıç Noktası Ön planlama olmadan verilen rastgele ve anlık komutlar. Sistemin mimarisini ve sınırlarını baştan belirleyen düzenli Markdown belgeleri.
Bağlam Takibi Sohbet hafızası dolduğunda ya da sıfırlandığında kaybolan geçici konuşmalar. Kalıcı, sürüm kontrolü yapılabilen ve teknik sözleşme görevi gören dosyalar.
Kod Kalitesi Tek kullanımlık kodlar, artan teknik borç ve tutarsız mimari kararlar. Açık kurallara ve sistem amacına uygun, bakımı kolay ve düzenli kodlar.
Ölçeklenebilirlik Hafıza kaybı ve zihinsel yük nedeniyle tek bir parçadan öteye geçemez. Hem yeni hem de mevcut karmaşık sistemlerde kolayca ölçeklenebilir.

Belge Odaklı Geliştirme’yi tam olarak anlamak için, yazılımcıların hayatından çıkardığı üç büyük soruna bakmak gerekir.

2. Baştan Belge Yazmanın Üç Büyük Gücü

  • Küçük Belge Değişikliği, Büyük Kod Etkisi (Kaldıraç Gücü): Belgeler kod tabanı üzerinde büyük bir kontrol sağlar. Belgedeki tek bir mimari kuralı veya veri tabanı tercihini değiştirmek (örneğin SQLite yerine MongoDB’ye geçmek), yapay zekanın yüzlerce satır kodu insan eliyle düzeltmeye gerek kalmadan otomatik ve doğru bir şekilde güncellemesini sağlar.

  • Bağlam Kaybını (Hafıza Bozulmasını) Önleme: Otonom yapay zeka araçları durumu hafızasında tutmaz. Uzun sohbetlerde hafıza sınırı doldukça “bağlam kaybı” yaşarlar. Sürüm kontrolü yapılan Markdown belgeleri, yapay zekaya her oturumun başında temiz ve eksiksiz bir hafıza yükler.

  • Amaca Tam Uyum Sağlama: Belirsiz komutlar, yapay zekayı mimari detayları tahmin etmeye zorlar ve bu da öngörülemeyen sonuçlar doğurur. Problemleri, başarı kriterlerini ve kullanıcı akışlarını baştan net bir şekilde yazmak, üretilen yazılımın tam olarak tasarlanan hedefe ulaşmasını sağlar.

Bu kavramsal avantajları anlamak, bir yazılımcının günlük çalışma şeklindeki değişimin de temelini atar.

3. Yazılımcının Yeni Rolü: Sistem Mimarı

Otonom kodlama araçlarıyla çalışmak, standart sohbet botlarıyla çalışmaktan çok farklı bir zihniyet gerektirir. Standart bir sohbet botu sadece kod hakkında konuşur; projedeki dosyalara veya komut satırına doğrudan erişemez. Otonom yapay zeka araçları ise proje dosyalarını inceleyebilir, terminal komutları çalıştırabilir ve kodlama görevlerini kendi başına tamamlayabilir.

Belge Odaklı Geliştirme (SDD) sürecinde insan yazılımcı Kıdemli Mimar rolünü üstlenir. Mimar; sistemin planını (belgeleri) çizer, esnetilemez sınırları belirler, yapım sürecini denetler ve çıkan işi onaylar. Yapay zeka ise teknik uygulamayı ve hızlı kod yazımını sağlayan becerikli bir çalışma arkadaşı gibi davranır. Burada en önemli nokta şudur: Kodu yapay zeka yazsa da; uygulamanın mimarisinden, güvenliğinden ve kararlılığından tamamen insan yazılımcı sorumludur.

“Yapay zeka işin kas gücüdür, belge ise beynidir.”

4. Belge Odaklı Geliştirmenin (SDD) Temel Adımları

Aşama 1: Proje Anayasasını Oluşturmak

  • Misyon (mission.md): Uygulamanın temel amacını, hedef kitlesini, iş hedeflerini ve kapsam sınırlarını belirler.

  • Teknoloji Yapısı (tech.md): Kullanılacak teknolojileri, mimari kalıpları, veri depolama stratejilerini ve teknik tercihleri belgeler.

  • Yol Haritası (roadmap.md): Geliştirme aşamalarını ve eklenecek özellikleri sırasıyla listeler.

  • Başlangıç Hafızasını Hazırlamak: Sıfırdan başlayan projelerde yazılımcı ve yapay zeka mülakat yöntemiyle bu dosyaları oluşturur. Mevcut projelerde ise yapay zeka var olan kodları, README dosyalarını ve görev listelerini inceleyerek ilk anayasayı çıkarır.

Aşama 2: Özellik Geliştirme Döngüsü

  • Planla: Kod yazmadan önce ayrı bir Git dalında (branch) yapay zekayla birlikte özelliğin gereksinimlerini ve kontrol kriterlerini belirleyip belgeye dökün.

  • Uygula: Dosya değişikliklerini ve terminal çıktılarını canlı izleyerek yapay zekanın görevleri küçük adımlarla yürütmesini sağlayın.

  • Doğrula: Otomatik testler ve kod incelemeleriyle kaliteyi denetleyin. Derinlemesine incelemeler için özel yan yapay zeka ajanları kullanmak, ana yapay zekanın hafızasını korur ve yazılımcının zihinsel yükünü azaltır.

Aşama 3: Yeniden Planlama Aşaması

  • Dokümanları Güncelle: Özellik tamamlandıktan sonra, anayasayı güncellemek ve yeni gereksinimleri eklemek için ayrı bir planlama dalına geçin.

  • Hafızayı Sıfırla: Bir sonraki özelliğe geçmeden önce geçici sohbet hafızasını temizleyerek bilgi karmaşasını önleyin.

  • Süreçleri Otomatikleştir: Tekrarlanan adımları ve kalite kontrollerini yapay zekaya özel yetenekler olarak tanımlayarak sonraki işleri hızlandırın.

5. Başarılı Belge Odaklı Geliştirme İçin Temel Alışkanlıklar

  • Değişiklikleri Küçük Tutun: Özellikleri küçük parçalara bölün ve sık sık kaydetme (commit) yapın. Adım adım ilerlemek, büyük kod bloklarını incelerken oluşan zihinsel yorgunluğu önler.

  • Görevler Arasında Hafızayı Temizleyin: Planlama, uygulama ve yeni özellik aşamalarına geçerken sohbet hafızasını sıfırlayın (örneğin /clear komutuyla). Bu işlem, yapay zekanın eski sohbetler yerine güncel belge dosyalarını okumasını sağlar.

  • İncelemelerde Ana Amaca Odaklanın: Değişken isimleri veya küçük stil detaylarıyla vakit kaybetmeyin. İnsan kontrolünü; iş hedeflerinin karşılanıp karşılanmadığına, testlerin geçip geçmediğine ve sistemin belgeye uygunluğuna yoğunlaştırın.

  • Belgeleri ve Kodu Paralel Tutun: Kod ile belgenin birbirinden kopmasına izin vermeyin. Elle bir düzeltme yaptığınızda veya anlık bir ayar değiştirdiğinizde, yapay zekaya belge dosyalarını hemen güncellemesini söyleyin. Böylece belgeler her zaman tek ve doğru bilgi kaynağı kalır.

Sonuç olarak, belge odaklı mühendisliği öğrenmek, yazılımcının modern yazılım geliştirme sürecinde kontrolü her zaman elinde tutmasını sağlar.

Share: LinkedIn