AI Destekli Otonom Yazılım Geliştirme: Claude Code ile Deneyler

Claude Code CLI ile aşamalı, markdown tabanlı otonom proje geliştirme çerçevesi. AI destekli geliştirmenin sınırlarını keşfediyoruz.

2024-12-01

Bir R&D Girişimi: AI’yı Geliştirme Ortağı Olarak Denemek

Bir geliştirici olarak AI araçlarına şüpheyle yaklaşmak mümkün: “Kod tamamlama işe yarar, ama asıl kararları ben veriyorum.” Bu şüphecilik meşru. Ancak asıl soru şu: AI bir projeyi yalnızca kod yazarak değil, planlayarak, kararları belgeleyerek ve ilerlemeyi takip ederek destekleyebilir mi?

Yazılım geliştirmede AI araçlarının yalnızca kod tamamlama veya hata ayıklama için kullanıldığı dönemi geride bırakıyoruz. Daha büyük bir soru var: AI bir projeyi baştan sona planlayabilir ve uygulayabilir mi? Bu soruyu yanıtlamak için Claude Code CLI’yı kullanarak otonom bir geliştirme çerçevesi tasarladık.

Bu bir müşteri projesi değil, saf bir R&D girişimi. Neyin işe yaradığını ve neyin yaramadığını öğrenmek için başlattık. Sonuçlar hem şaşırtıcı hem de aydınlatıcıydı.

Claude Code CLI: Sadece Bir Chatbot Değil

Claude Code, terminal üzerinde çalışan bir CLI aracı. Dosya okuyup yazabiliyor, komut çalıştırabiliyor, terminal çıktısını yorumlayabiliyor. Basit bir soru-cevap döngüsünden çok, gerçek bir geliştirme ortamıyla etkileşime girebilen bir araç.

Bizim yaklaşımımız şu: projeyi tüm bağlamı ve kararlarını içeren markdown dosyalarıyla tanımlamak, ardından Claude Code’u bu dosyaları referans alarak çalıştırmak.

Dizin yapısı şöyle görünüyor:

project/
  SPEC.md          # Ne inşa ediyoruz, neden, kısıtlar
  PLAN.md          # Aşamalar, görevler, bağımlılıklar
  DECISIONS.md     # Mimari kararlar ve gerekçeleri
  PROGRESS.md      # Tamamlanan iş, engeller, notlar
  src/
  tests/

Markdown Tabanlı İş Akışı

Projenin her aşaması için ayrı bir markdown dökümanı hazırlıyoruz. Claude Code bu dökümanları okuyarak bağlamı anlıyor, ardından bir sonraki adımı gerçekleştiriyor.

SPEC.md: Ne İnşa Ediyoruz?

# Proje: Otomatik Fatura İşleme Sistemi

## Amaç
PDF faturalardan verileri çıkarıp muhasebe sistemine aktaran araç.

## Kısıtlar
- Python 3.11+
- [PostgreSQL](/sozluk/postgresql-nedir) veritabanı
- Mevcut ERP API'sine entegrasyon
- İşlem başına < 3 saniye

## Başarı Kriterleri
- %95 doğruluk oranı
- 1000 fatura/gün kapasitesi

PLAN.md: Aşamalı Geliştirme

## Aşama 1: PDF Parsing (Gün 1-2)
- [ ] pdfplumber ile tablo çıkarma
- [ ] Regex ile tutar, tarih, firma adı algılama
- [ ] Unit testler

## Aşama 2: Veritabanı Katmanı (Gün 3)
- [ ] SQLAlchemy modelleri
- [ ] Migration scripti
- [ ] CRUD operasyonları

## Aşama 3: ERP Entegrasyonu (Gün 4-5)
- [ ] [API](/sozluk/api-nedir) client
- [ ] Hata yönetimi ve retry mantığı
- [ ] [E2E Test](/sozluk/e2e-test-nedir)ler

Aşamalı Geliştirme: Spec → Plan → Implement → Test

Her aşamada Claude Code’a o aşamaya özgü bir görev veriyoruz. Tek seferde tüm projeyi yazmaya çalışmıyoruz — bu yaklaşım hata oranını artırıyor ve çıktıyı kontrol etmeyi zorlaştırıyor.

Spec aşaması: Gereksinimler netleşiyor. Claude Code belirsiz noktaları soruyor, kısıtları belgeleyor.

Plan aşaması: Görevler atomik parçalara bölünüyor. Bağımlılıklar haritalanıyor.

Implement aşaması: Bir seferde bir modül. Her modül tamamlandığında PROGRESS.md güncelleniyor.

Test aşaması: Unit testler yazılıyor, edge case’ler tanımlanıyor, sonuçlar raporlanıyor.

Neyin İşe Yaradığı

Tekrarlayan kod üretimi mükemmel. CRUD operasyonları, API client boilerplate, migration scriptleri — bunları Claude Code çok hızlı ve hatasız yazıyor. Geliştirici bu tür rutin işlere artık zaman harcamıyor.

Dokümantasyon otomasyonu etkileyici. Kod yazarken eş zamanlı docstring, README ve API dökümanı üretiyor. Bu normalde çoğu ekipte ihmal edilen bir adım.

Hata ayıklama yeteneği güçlü. Stack trace ve hata mesajını aldığında kök nedeni bulmak ve öneriler sunmak konusunda deneyimli bir geliştiriciye benzer performans gösteriyor.

Neyin İşe Yaramadığı

Uzun vadeli bağlam yönetimi zayıf. Proje büyüdükçe ve dosyalar çoğaldıkça Claude Code önceki kararlara atıfta bulunmakta zorlanıyor. DECISIONS.md her seferinde hatırlatılmak zorunda kalınıyor.

Mimari kararlar hâlâ insan gerektiriyor. “Bu servisi Microservice mi yoksa Monolith içinde mi yapmalıyız?” sorusunu yanıtlamak için şirketin altyapısını, ekip kapasitesini ve büyüme planlarını bilmek lazım. Bu bağlamı AI’ya tam aktarmak zor.

Test kapsamı tutarsız. Happy path’i iyi test ediyor ama edge case’leri öngörmek için domain bilgisi gerekiyor.

Yazılım Ekipleri İçin Çıkarımlar

Bu deney bize şunu gösterdi: AI destekli geliştirme bir ikili değil bir spektrum. Araçlar belirli görevlerde insanı geçiyor, bazılarında yanında yürüyor, bazılarında ise henüz yeterince iyi değil.

En verimli mod “AI sürücü, insan yönlendirici” değil “AI yardımcı sürücü, insan kararları veriyor.” Teknik çıktıyı AI üretiyor, ama hangi çıktının üretileceğine insan karar veriyor.

Markdown tabanlı iş akışımız bu dengenin pratikte nasıl çalışacağına dair bir çerçeve sunuyor. Açık kaynaklı hale getirmeyi değerlendiriyoruz.

Sonuç

AI destekli yazılım geliştirme, geliştirici sayısını azaltmıyor — geliştiricilerin değer katma alanını değiştiriyor. Rutin kodlama azalıyor, mimari düşünme ve kalite kontrolü önem kazanıyor.

Ekibinizde AI araçlarını nasıl entegre edeceğinizi planlamak veya geliştirme süreçlerinizi modernize etmek istiyorsanız, bu konuda deneyimlerimizi paylaşmaktan memnuniyet duyarız.