Üç Farklı Yapay Zeka Aracıyla Bir Ay Boyunca Eşli Programlama Yaptım

İçindekiler
Hızdan Ziyade Bağlam Önemlidir
Yapay zeka kodlama araçları saniyeler içinde yeni bir fonksiyon yazabilir. Ancak yazılım geliştirmede asıl zor soru, bu fonksiyonun mevcut kod tabanına gerçekten ait olup olmadığıdır: Mevcut mimariyi takip ediyor mu? Uç durumları (edge cases) doğru ele alıyor mu? Testler çalışmaya devam edecek mi? Üç dosya sonra bir şeyler kırıldığında, yapay zeka geçici bir yama üretmek yerine sorunun gerçek nedenini bulabiliyor mu?
Bu soruları yanıtlamak için bir ay boyunca Cursor, GitHub Copilot ve Claude Code araçlarını eşli programlama (pair programming) süreçlerimde kullandım. Kod yazma, hata ayıklama, yeniden düzenleme (refactoring), test oluşturma ve birden fazla dosyada değişiklik yapma gibi pratik görevleri test ettim. Buradaki amaç en çok kodu üreten aracı bulmak değil; sonrasında ekstra iş yükü yaratmadan gerçek programlama işini hızlandıran aracı tespit etmekti.
Kısa Yanıt: Mutlak Bir Kazanan Yok
Her üç aracı da gerçek geliştirme görevlerinde kullandıktan sonra tek bir mutlak kazanan belirlemek mümkün değil. Her araç programlamanın farklı bir alanında güçlü yönlere sahip:
- Cursor: Yapay zeka odaklı bir editör içerisinde etkileşimli kodlama ve çok dosyalı değişiklikler yapma konusunda en güçlüsüydü.
- GitHub Copilot: Günlük kodlama, otomatik tamamlama, kalıp kodlar (boilerplate) ve küçük fonksiyonlar için en pratik olanıydı.
- Claude Code: Geniş bir kod tabanını anlama, dosyalar arası hata ayıklama veya terminal üzerinden çok adımlı görevleri tamamlama konusunda en yetenekli araç oldu.
En belirgin fark kod üretme hızları değil, kod üretmeden önce ne kadar faydalı bağlamı (context) kullanabildikleriydi. Yazılım öğrenme ve geliştirme sürecindeki temel çıkarım da budur: Bağlamı doğru kuramayan yapay zeka, hız kazandırmak yerine teknik borç üretir.
Gerçekte Neler Test Edildi?
Yapay zeka araçlarına basitçe "bir yapılacaklar (todo) uygulaması yap" gibi gerçekçi olmayan komutlar vermek yerine, mevcut bir projenin içindeki rutin geliştirme adımları uygulandı.
Görev 1: Yeni Bir Fonksiyon Eklemek
Mevcut bir koda eksik olan getUserById(id) fonksiyonunun eklenmesi istendi. Gereksinim; kullanıcıyı getirmek, başarısız yanıtları ele almak, dönen veriyi doğrulamak ve öngörülebilir bir sonuç dönmekti. Amaç, yapay zekanın kendi tarzını uydurmak yerine projenin kodlama stiline uyup uymadığını görmekti. Üç araç da çalışan bir başlangıç noktası sundu, asıl fark toparlama aşamasında görüldü:
- GitHub Copilot: İlk uygulamayı hızlı bir şekilde üretmede oldukça başarılıydı.
- Cursor: İlgili dosyalara referans vermeyi ve fonksiyonu çevreleyen projeye uyarlamayı kolaylaştırdı.
- Claude Code: Herhangi bir değişiklik yapmadan önce benzer fonksiyonların projede nasıl yazıldığını inceleme konusunda öne çıktı.
Sıfırdan kod yazmak kolaydır; ancak mevcut bir kod tabanına ait hissettiren kod yazmak çok daha zordur.
Hata Ayıklama (Debugging) Daha İyi Bir Testti
En büyük fark kod üretiminde değil, hata ayıklamada ortaya çıktı. "Bu hatayı düzelt" demek yerine bileşen, API fonksiyonu ve veri yapısı verilerek TypeError: Cannot read properties of undefined at UserList.jsx:42 gibi gerçek bir hatanın kök nedeni soruldu.
- GitHub Copilot: Hata, o an üzerinde çalışılan koda yakın olduğunda oldukça başarılı sonuçlar verdi.
Bu konuyu daha derinlemesine öğrenmek ister misin?
Edumints'teki ücretsiz kursları incele ve bugün başla.
Kurslara Göz At →