5 puan yazan GN⁺ 2025-10-01 | 2 yorum | WhatsApp'ta paylaş
  • 2 hafta boyunca yalnızca yapay zeka destekli geliştirme iş akışı ile bir uygulama geliştirme deneyi yürütüldü, ancak sonuçlar beklendiği kadar tatmin edici olmadı
  • Claude Code ve Remix tabanlı bir stack kullanılarak sorun tanımı → yapay zeka ile uygulama → kod inceleme → dağıtım süreci tekrarlandı
  • Ancak bağlam eksikliği, yeniden kullanılamayan yinelenen kod, akışın bölünmesi, halüsinasyon, Pareto yasası problemi nedeniyle giderek daha fazla hayal kırıklığı yaşandı
  • Sonunda 2 haftanın ardından yapay zeka merkezli geliştirmeden vazgeçilip eski yönteme dönüldü; kodun toparlanması ve kalite iyileştirmeleri daha tatmin edici bulundu
  • Şu anda yapay zeka yalnızca arama, rubber ducking, kod snippet’leri, test, dil düzeltme gibi sınırlı amaçlarla kullanılıyor ve temel bir teknolojik değişim yaşanana kadar bunun genişletilmesi planlanmıyor

Deneyin özeti

  • Son dönemde ilgi gören LLM (büyük dil modeli) tabanlı geliştirme iş akışını doğrudan uygulayan 2 haftalık bir uygulama geliştirme deneyi yapıldı
  • Facebook Ads hesabının karmaşık UI deneyiminden yola çıkılarak, yalnızca Facebook Ads API kullanan sadeleştirilmiş bir reklam yönetim aracı olan adbrew prototipinin geliştirilmesine başlandı
  • Deney, hem yapay zekanın potansiyelini doğrulama amacıyla hem de gerçek bir problemi çözme beklentisiyle yürütüldü

Yaklaşım

  • Yapay zeka ile ilgili çeşitli hesapların takip edilmesi ve iş akışlarının incelenmesinin ardından, teknik stack olarak Remix/React Router v7 seçildi
  • Claude Code aboneliği sonrası; prompt’lar, DX araçlarının kurulumu ve issue tanımları gibi başlangıç ortamı hazırlıklarına zaman ayrıldı
  • Günlük rutin
    • Issue tanımı
    • Yapay zekadan implementasyon isteme
    • Gereksinimleri yapay zeka ile netleştirme
    • Üretilen kodu ayrıntılı biçimde inceleme
    • Kodu commit etme/dağıtma
    • Süreci tekrarlama
    • Kılavuzlar ve otomatik kontrol dosyalarını düzenli olarak iyileştirme
  • Yapay zeka ile geliştirme akışını uyumlu hale getirme yönünde sürekli çaba gösterildi

Sık yaşanan sorunlar

  1. Bağlam her zaman yetersizdi
    • Çok fazla bağlam verilse bile yapay zeka gerekli geri bildirimi istemedi
    • Yapay zeka kendi varsayımlarını yaparak ilerledi ve bunun sonucu olarak sık sık yanlış implementasyonlar ortaya çıktı
  2. Kod yeniden kullanılabilirliği ve bakım zorluğu
    • Soyutlama ve yeniden kullanılabilir kod üretiminde yetersiz kaldı
    • Mevcut component’leri tekrar tekrar oluşturdu, bu da inceleme yorgunluğunu artırdı
    • Kılavuzların yansıtılmasının etkisi sınırlı kaldı
  3. İş akışında kopukluk
    • Yapay zekanın çalışması sırasında sürekli izleme gerekti
    • Her issue bazında verimli odaklanma süresi bulmak zorlaştı, üretkenlik düştü
  4. Halüsinasyon olgusu
    • Karmaşık Facebook API’si, yetersiz dokümantasyon ve hatalı yazılmış SDK ile birleşince, yapay zekanın yanlış özgüveni kafa karışıklığını artırdı
    • Çeşitli framework ve kütüphaneler hakkında tekrar tekrar yanlış bilgiler üretti
  5. Pareto etkisinin büyümesi
    • İşin toplam %80’i yapay zeka tarafından hızlıca ilerletilebildi, ancak kalan %20’nin son tamamlama ve düzeltmeleri için çabanın %80’i harcandı
    • Özellikle hata yönetimi ve özellikler arası etkileşimlerde çok sayıda önemli kusur ve bug ortaya çıktı

Sonuçlar ve değerlendirme

  • 2 haftanın sonunda kod giderek dağınık ve kontrol edilemez bir hale geldi
  • Geliştirme sürecinde keyif kaybı ve kalite sorunları nedeniyle eski iş akışına geri dönüldü
  • Kodu yeniden elle toparlarken, yapay zeka incelemesinin kaçırdığı noktalar fark edildi ve sonuçta daha iyi bir kod tabanı elde edildi

Yapay zekanın şu anki kullanım biçimi

  • Güçlü bir arama motoru: karmaşık bilgi arayışı ve bağlama uygun yanıtlar için verimli; başarısız olduğunda geleneksel yönteme hızlıca dönmek mümkün
  • Rubber ducking (fikir beyin fırtınası): alternatifler sunma, keşif alanını genişletme ve ilgili anahtar kelimeleri bulma konusunda özellikle etkili
  • Kod snippet asistanı: tekrarlayan utility function üretimini otomatikleştirerek geliştirme yorgunluğunu azaltıyor
  • Test kodu desteği: testlerle ilgili yeni senaryolar keşfetmek için yapay zekadan yararlanılıyor
  • Dil ile ilgili işler: commit mesajları, issue’lar, PR’lar gibi metin düzenleme işlerinde faydalı
    • Son dönemde yapının tersine döndüğü, yani yapay zekanın yazması yerine geliştiricinin yazdığını yapay zekanın gözden geçirdiği görülüyor

Sonuç ve öngörü

  • Günlük işlerde yardımcı olarak yapay zeka kullanılmaya devam edilse de, bunun geliştirme sürecinin tamamını devretmeye genişletilmesine şu an için olumsuz bakılıyor
  • Öncelik yerel LLM kullanımı ve veri kontrolünü koruma yönünde
  • Gelecekteki teknolojik değişimler yakından izlenirken, şu aşamada yapay zekanın kullanım kapsamı sınırlı tutulacak

2 yorum

 
shakespeares 2025-10-06

Karmaşık işler yaparken bunun dezavantajını çok sık hissediyorum.
Keyif kaybı + kod darmadağın..
Gerçekten de çoğu zaman kod refactoring'i ve fikir amaçları dışında kullanıma pek uygun görünmüyor.

 
GN⁺ 2025-10-01
Hacker News görüşü
  • Geçenlerde ChatGPT'ye çok basit bir rsync komutu sormaya bir saatten fazla uğraştım, ama elimdeki Mac'teki rsync sürümünde çalışmayan komut parametrelerini vermeye devam etti; başarısızlığın yaklaşık yarısında sürekli saçma sapan troubleshooting'e saplandı, kalanında da kendi hatasını “fark ettiğini” söyleyip yine yanlış sürüm için cevap verdi. Parametreleri bende olan sürüme göre doğrulamasını söyledim ama bunu açıkça yapamadı. Aslında tek başıma olsam 5 dakikada bitecek bir işti, ama bu ilginç teknolojinin zamanımı boşa harcamasını durduramadan izleyip durdum. Profesyonel bir geliştirici değilim ama bunun geliştiriciler arasında da yaygın bir deneyim olup olmadığını merak ettim. Muhtemelen LLM'in ana eğitim setiyle uyumlu yazılım sürümlerinde kod yazarsanız bu sorunu yaşamayabilirsiniz; ayrıca bunun prompt ile önlenip önlenemeyeceğini de merak ediyorum. Şu an için LLM'lerin kodlama işlerinde gerçekten zaman kazandırdığını düşünmüyorum; aksine tuhaf doğaları yüzünden daha çok zaman kaybettirdiklerini düşünüyorum.

    • LLM'den kendi sürümüme uygun parametreleri doğrulamasını istesem de bunu doğru düzgün yapmıyor. Bu konuda bir yapay zeka uzmanının görüşünü merak ediyorum. Ben de bunu çok yaşıyorum. Sonuçta LLM benim ne dediğimi gerçekten anlamıyor. Matematiksel açıdan bakınca bunun sebebi de açıklanabiliyor. Yine de transformer gibi teknolojilerin ya da ek bazı hilelerin, harf sayma gibi utanç verici olmayan görevlerde devreye girmiş gibi göründüğü oluyor. Gözden kaçırdığım bir şey olup olmadığını merak ediyorum.

    • Geliştiriciler arasında da bu deneyim çok yaygın. Biri çıkıp “ben hiç yaşamadım” diyebilir ama bu son derece nadir bir istisnadır; çoğu insan benzer şekilde şikayet ediyor. Bunu prompt ile önlemenin mümkün olup olmadığını da sormuşsunuz; eğitim verisinde yoksa bunun hiçbir faydası yok. Birçok dilde LLM'ler gerçekten berbat. CLI araçlarında, macOS ya da BSD sürümü olduğunu söyleseniz bile çoğu zaman GNU flag'leri vermeye devam ediyor. Özellikle macOS'ta son zamanlarda rsync ile ilgili bir değişiklik oldu, bu yüzden internette de pek bilgi yok. İlgili bağlantı: rsync değişimi hakkında yazı. Ayrıca LLM'lerin kodlamada zaman kazandıracağı fikri zaten en iyi senaryo. Hatta LLM koduna körü körüne güvenip commit ederek bug ya da güvenlik açığı üreten çok kişi de var. Kaynaklar: ai-coding-slowdown blogu ve arxiv makalesi

    • Bunun prompt ile önlenip önlenemeyeceği kısmını çok bilmiyorum ama Claude Code doğrudan komut çalıştırabiliyor. Yani LLM'in kafasından bir şeyler uydurmasına izin vermek yerine ! man rsync ya da ! rsync --help gibi komutların gerçek çıktılarını bağlama ekleyebilirsiniz.

    • Belli bir aracın kılavuzuna bakmak için neden özellikle LLM kullandığınızı merak ediyorum.

    • ChatGPT'den basit bir rsync komutu almak için bir saatten fazla uğraşmış olmanız hakkında şunu söyleyebilirim: ortam bilgisini ve hata mesajlarını yeterince ekleyerek birkaç kez deneyin; yine olmazsa Claude, Gemini gibi başka modelleri deneyin. Önceden belirlediğiniz kadar denemenize rağmen çözülmüyorsa, LLM'den yardım almak zor olacaktır; bırakıp kılavuzlar, forumlar gibi klasik yöntemlerle bilgi aramak çok daha hızlıdır. Genelde 10-20 dakika deneyip sonra geçmek gerçekçi bir ölçüttür. LLM ne kadar uzun süre denese de çözemeyeceği sorunlar vardır; sadece dönüp dolaşır.

  • Ben de bunu çok yaşadım. AI'nın gerçekten faydalı olduğu an, zaten yapmayı bildiğim işleri ona yaptırdığım zaman. Problemi LLM'in anlayabileceği kadar doğru tarif edebilirsem iyi bir sonuç verebiliyor ve çıkan kodun istediğim şey olup olmadığını hemen kontrol edebiliyorum. Tamamen bilmediğim bir şeyi ona bırakınca ise işler daha da karmaşıklaşıyor.

    • Bu yazının (başlık hariç) oldukça dengeli bir bakış sunduğunu düşünüyorum. “Her şeyi LLM'e bırakın!” yaklaşımı sorun dolu. “Zaman kazandırmak için tekrarlı kodu ya da test kodunun bir kısmını ona bırakmak ise gayet iyi olabilir.” Sadece, “AI bazen işe yarıyor bazen yaramıyor” gibi sıradan bir başlıkla asla tıklanma gelmez.

    • AI, bir contractor'dan çok bir intern gibi hissettiriyor.

  • “Bağlamsal bilgi yeterli değil” sözüne çok katılıyorum. Ne kadar çok bağlam verirsek verelim, AI çoğu zaman geri bildirim istemeden kendi kafasına göre tahmin yürütüp başarısız oluyor. Bir TV programında, cin'den dilek dileyen birinin tüm koşulları tek tek garantiye almak için avukat gibi konuştuğu bir sahne aklıma geliyor. LLM ile konuşmak da biraz öyle hissettiriyor.

    • AI, sanki çok zeki ama aklından geçeni asla söylemeyen o iş arkadaşı gibi. Her şeyi yapabilecekmiş gibi duruyor ama takım çalışması olmuyor; “Burada ne istediğini anlayamadım, biraz daha açıklar mısın?” gibi bir cümle AI'dan asla gelmiyor.

    • (Az önce bahsedilen TV sahnesini bildiğimi sanıyorum.) O sahnede sonuçta işler yoluna girmişti ama bence LLM kendi “sözünü” tutma ihtiyacı hiç hissetmiyor. Hatta cin, kural ve düzenlemelere sıkı sıkıya bağlı klasik bilim kurgu tipi bir AI'ya daha yakın. LLM ise tamamen farklı.

  • Gerçek kodlamadan çok, AI ile iletişim kurmaya dayalı vibe coding'i pek sevmiyorum. Onun yerine en çok değiştirdiğim şey, geliştirme sürecini daha erken aşamada daha yapılandırılmış hale getirmek oldu. Önce bir spec dosyası yazıyorum, sonra LLM'den kod tabanı ve çevrimiçi bilgileri temel alarak gereksinimlerde netleştirilmesi gereken noktaları açıklamasını ve uygulama adımlarını adım adım checklist'lere bölmesini istiyorum. Her adım bittikten sonra ancak bir sonraki oturuma geçip işi olgunlaştırıyorum. AI ile konuşmak yorarsa, ben ya da ekipten biri spec'e göre doğrudan uygulayabiliyor; yani esnek biçimde kullanılabiliyor.

  • Yakın zamanda bir projede AI coding kullanmaya başladım. Vibe coding'in tam olarak ne olduğunu bilmiyorum ama benim seçtiğim yöntem, sakin ve tekrarlı bir etkileşim. Gemini AI Studio kullandım ve sonuçtan çok memnun kaldım; sürecin tamamını belgelendirip açık kaynak bir proje olarak yayımladım. Üretkenliğime gözle görülür bir boost sağladı. Tek can sıkıcı yanı AI'nın fazla kibar konuşmasıydı. Bana göre AI, istediğiniz sonucun net olduğu ve süreç içinde seçenekler arasında karşılaştırma yapılması gereken durumlarda en yüksek ROI'yi sağlıyor. Projedeki tüm çıktılarda kullandım: çekirdek kod, test senaryoları, build script'leri, dokümantasyon, örnek uygulama, yardımcı araçlar. Geliştirme konuşmalarının tamamı burada, proje kaynağı ise burada.

  • AI'yı aşağı yukarı benim kullandığım şekilde kullanıyorum. Devrimsel soyutlamalar üretmesini beklemek AI'dan fazla şey beklemek olur. Binlerce geliştiricinin zaten geçtiği son derece sıradan yollarda iyi çalışıyor. Bu açıdan çok güçlü bir arama motoruna benziyor.

    • ChatGPT'nin aslında Google'ın yapması gereken arama motoru olduğunu düşünüyorum. Google'ın kendi mevcut iş modeline dokunmak istemediği için bunu ertelediğini sanıyorum.
  • Benim tercih ettiğim yöntem, LLM'den ilk çözümü ya da ilk kod örneğini kısa biçimde almak; sonrasında ise prompt'u tekrar tekrar düzeltmek yerine doğrudan kendim devam etmek. En sonda gerekirse LLM'e kendi kodumu inceletiyorum. En büyük avantajı, prompt düzeltme döngüsünü atlamak. Bu döngü gerçekten çok sıkıcı ve inanılmaz zaman yiyor; uzun vadede de iş verimini düşürebiliyor.

  • AI'nın geri bildirim vermeden ya da net sorular sormadan kendi başına ilerlemesi gerçekten çok sinir bozucu.

  • “Şimdilik AI'yı tam o noktaya kadar kullanıyoruz; ileride teknoloji temelden değişirse durumu yeniden değerlendiririz” şeklindeki ekip görüşünden söz ediliyor. LLM'in bundan fazlasını yapıp yapamayacağını merak ediyorum. Şu anda bile doğru kullanılırsa çok faydalı olduğunu düşünüyorum.

    • LLM'lerin daha fazla iş yapıp yapamayacağına dair kuşkuyu anlamıyorum. Ben her gün LLM tabanlı araçları iyileştirecek birkaç yeni fikir buluyorum ve bunların çoğu basit mühendislik işi; istersem hepsini kendim yapabilirim. Tanrı gerçek LLM model eğitimini tamamen durdursa bile, yalnızca birkaç on yıl boyunca agentic wrapper'lar ya da pipeline iyileştirmeleri ve düzgün yazılım geliştirme ile QA süreçleri sayesinde onlarca kat üretkenlik artışı elde edilebileceğine eminim.
  • Facebook ads optimizasyonu için AI kullanmak, sanki Dark Tower serisindeki breakers'ı kullanmak gibi.