Aynı Problem, İki Zihinsel Model:
Claude Code vs ChatGPT Codex

Bir SOAP entegrasyon görevini iki farklı AI coding agent'a verdim. İkisi de "doğru" çözdü — ama birbirinden çok farklı sorular sorarak.

İki popüler AI coding agent'a aynı görevi verdim. İkisi de çalışan kod üretti. Ama biri "Bu yapıyı nerede kullanabilirim?" diye sorarken, diğeri "Bunu nasıl güvenle test ederim?" diye sordu. Ortaya çıkan fark sadece kod kalitesiyle değil — zihinsel modelle ilgiliydi.

Görev: SOAP Entegrasyonunda Yeni Sınıfı Test Et

Projemizde daha önce hiç kullanılmamış bir String, String parametreli sınıf vardı. Bu sınıfı SOAP web servisi çağrısında kullanmadan önce, bağımsız bir test ortamında denememiz gerekiyordu. Yeterince özgün bir görev değil gibi görünebilir — ama iki agent'ın bu göreve yaklaşımı, onların nasıl "düşündüğünü" net biçimde ortaya koydu.

Bağlam
Her iki agent da aynı proje koduna erişti. Aynı bağlam, aynı sınıf, aynı hedef. Fark tamamen agent'ın sormayı seçtiği soruda gizliydi.
α
Claude Code
Haritacı 🗺️
"Bu yapıyı nerede kullanabilirim?"
β
ChatGPT Codex
Risk Yöneticisi 🛡️
"Bunu nasıl güvenle test ederim?"

Ürettikleri Zihinsel Modeller

α — Haritacı: Tüm Senaryoları Kapsıyor

Claude Code önce keşfe çıktı. Sınıfın projedeki tüm potansiyel kullanım senaryolarını haritaladı: kayıt, güncelleme, sorgulama. Her birini bağımsız bir metod olarak yazdı.

Ortaya 3 bağımsız metod çıktı. Her metod kendi bağlantısını açıp kapatıyor, kendi hata yönetimini yapıyor. Nesne oluşturma inline, kurulum kodu metodun içinde. Sonuç: olası tüm kullanım biçimlerini belgeleyen bir referans döküman.

// α yaklaşımı: Her senaryo bağımsız, her metod self-contained
public void testCreateDocument() throws Exception {
    // bağlantı kur, nesne oluştur, çağır, kapat
}

public void testInsertRow() throws Exception {
    // bağlantı kur, nesne oluştur, çağır, kapat
}

public void testQueryDocument() throws Exception {
    // bağlantı kur, nesne oluştur, çağır, kapat
}

β — Risk Yöneticisi: Güvenli Tek Akış

ChatGPT Codex ise tek bir senaryoya odaklandı — ama önce simüle et, sonra gerçek çağrı yap mantığıyla. Canlı servise dokunmadan doğrulama imkânı sundu. Sorumluluklar iki ayrı private metoda bölünmüş.

// β yaklaşımı: Sorumluluklar ayrı, akış kontrollü
private void simulateCall(String param1, String param2) {
    // önce yerel simülasyon
}

private void executeRealCall(String param1, String param2) {
    // doğrulandıktan sonra gerçek çağrı
}

Döküman Yapıları: Ne Yazdıklarını Nasıl Belgelediler?

Her iki agent'tan da yaptıklarını açıklayan bir .md dosyası oluşturmasını istedim. Bu noktada düşünce yapılarındaki fark en net biçimde ortaya çıktı.

α · Claude Code
  1. Çalışma Amacı
  2. İncelenen Proje Konumu
  3. Test Edilecek Sınıf
  4. Web Servisinde Kullanım Akışı
  5. Oluşturulan Test Sınıfı
  6. Çalıştırma Mantığı
  7. Git Durumu & Ek Not
β · ChatGPT Codex
  1. Genel Bakış
  2. Kaynak Sınıflar
  3. Hangi Sınıflarda Kullanılabilir
  4. Web Servis Bağlantısı
  5. Test & Üretim Paketleri
  6. Metodların İncelenmesi
  7. Build & Deploy & Test Ortamı

α'nın dökümanı ne yaptığını anlatıyor — bir uygulama günlüğü gibi. β'nın dökümanı ise sistemi anlatıyor — bir mimari doküman gibi. İkisi de değerli, ama farklı sorulara cevap veriyor.

Asıl Test: Yazdıkları Kodu Çalıştırabildiler mi?

Kodu üretmek bir şey, çalıştırmak başka. Her iki agent'tan da yazdıkları test sınıfını derleme + çalıştırma aşamasına kadar götürmesini istedim.

✅ α · Claude Code — Başardı
Başlangıçta test çalışmadı. Hataları tespit etti, nedenini analiz etti, çözüm üretti ve testi başarıyla çalıştırdı. Birden fazla test case'e sahip kullanılabilir bir sonuç ortaya çıktı.
❌ β · ChatGPT Codex — Başaramadı
Başlangıçta test çalışmadı. Hataları fark etti ve çözüm aradı — ama bir noktada döngüye girdi. Kota tükenmeden önce süreci kesmek zorunda kaldım. Tek bir senaryoya odaklanan yaklaşım, hata giderme aşamasında yeterli esneklik sağlayamadı.

Karşılaştırma Özeti

Kriter α · Claude Code β · ChatGPT Codex
Zihinsel Model Haritacı Risk Yöneticisi
Temel Soru "Nerede kullanabilirim?" "Nasıl güvenle test ederim?"
Kod Yapısı 3 bağımsız metod 1 akış, 2 private metod
Kapsam Kayıt + güncelleme + sorgu Tek senaryo (simüle + gerçek)
Döküman Tonu Uygulama günlüğü Mimari döküman
Test Çalıştı mı? ✅ Evet ❌ Hayır
Not
"Test çalışmadı" sonucu β'nın genel yetersizliğini değil, bu spesifik görevde self-correction döngüsündeki kırılganlığını gösteriyor. Bağlam değiştikçe sonuçlar değişebilir.

Ne Öğrendik?

Bu deneyin asıl çıktısı ne α'nın "kazandığı" ne de β'nın "kaybettiği" sonucu. Asıl çıktı şu:

Agent'lar artık sadece kod üretmiyor.
Zihinsel model üretiyor.
Doğru soru sormak, doğru kod yazmak kadar önemli.

Bir problemi çözmek için kaç farklı zihinsel modelle yaklaşılabilir? Bu deneyin en değerli tarafı cevap değil, sorunun kendisi oldu.

Bir sonraki adımda bu iki yaklaşımı daha karmaşık entegrasyon senaryolarında tekrar test etmeyi planlıyorum. Agent'ların zihinsel modellerinin nasıl evrildiğini takip etmek, bir yazılım mühendisi olarak toolset'imi nasıl kullandığımı şekillendiriyor.

#aiagents #claudecode #chatgptcodex #softwareengineering #llm #aievaluation #javaspring #soapwebservice
R

Remzi Şahbaz

Java & Spring Boot odaklı backend developer. Mikroservisler, kurumsal entegrasyonlar ve AI-assisted engineering üzerine yazıyor.