- Bir staff engineer, Claude Code kullanarak yapay zekayla birlikte çalışan bir geliştirme iş akışını 6 hafta boyunca denediği deneyimini paylaşıyor
- Yapay zekayı ‘öğrenmeyen bir junior geliştirici’ olarak görme yaklaşımı, başarılı entegrasyonun anahtarı
- İlk denemeler çoğunlukla %95 başarısız oluyor; ancak tekrarlar sayesinde kod giderek işe yarar hale geliyor
- Proje bazlı bağlam dosyaları (
Claude.md) ve MCP tabanlı araç entegrasyonu ile yapay zekanın bağlam eksikliği sorunu çözülebiliyor - Geliştiricinin rolü kod yazmaktan problem çözme ve mimari tasarıma kayıyor; bu da yapay zeka çağında yeni bir üretkenlik modeli anlamına geliyor
Arka plan ve yaklaşım
- Yazı sahibi eskiden tüm kodu kendisi yazarken, son dönemde kodun %80’ini yapay zekaya yazdırıyor ve kendisi mimari, inceleme ve çok iş parçacıklı geliştirme yönetimine odaklanıyor
- Bu yazı, “yapay zeka devrimi yönlendiriyor” gibi pembe bir anlatı değil; yapay zekayı gerçek üretim geliştirme iş akışına entegre ederken yaşanan karmaşa ve gerçekçi yöntemleri paylaşıyor
- Yapay zekaya “öğrenmeyen bir junior geliştirici” gibi yaklaşmak, başarılı kullanımın kilit noktası
Geliştirme paradigmasının değişim süreci
- İlk 5 yılda kitaplara ve SDK dokümantasyonuna dayalı geliştirme biçimi sürdü
- Sonraki 12 yılda arama (google) tabanlı kolektif bilgi kullanımı dönemine geçildi
- Son 18 ayda Cursor üzerinden yapay zeka destekli kodlama denemeleri yapıldı
- Hemen önceki 6 haftada ise Claude Code ile bütünsel yapay zeka delegasyonu sayesinde keskin bir değişim yaşandı
- Claude Code’a uyum sağlamak, yalnızca birkaç saat içinde üretkenlik artışını hissettirdi
Gerçek yapay zeka tabanlı üretim iş akışı
- Üretime girecek kod üzerinde çalışırken, yapay zeka çoğunlukla “düşünmek için” kullanılıyor
- Tek seferde kusursuz kod üretmek mümkün değil. Bir mühendisin görevi, probleme en iyi çözümü bulmak
- İlk deneme (%95 başarısız): Yapay zeka sistem bağlamını toplamaya başlıyor, geliştirici de problemi netleştiriyor; ancak kod neredeyse tamamen yanlış oluyor
- İkinci deneme (%50 başarısız): Bağlam anlayışı gelişiyor ve yaklaşım somutlaşıyor; ama hâlâ yarısı işe yaramıyor
- Üçüncü deneme (kullanılabilir kod): Tekrar ve inceleme sonrası gerçekten kullanılabilir bir temel kod ortaya çıkıyor ve sonrasında iyileştirilebiliyor
- Bu süreç başarısızlık değil; bilinçli olarak planlanmış deneyler ve yinelemeli optimizasyon süreci
Bağlam sorunu ve çözümler
- Yapay zeka oturumlar arasında belleği koruyamadığı için aynı açıklamaları her seferinde yeniden vermek gerekiyor
- Çözüm olarak
Claude.mddosyası kullanılıyor; burada mimari kararlar, kalıplar ve doküman bağlantıları tutuluyor - MCP entegrasyonu sayesinde Linear, Notion, GitHub, kod tabanı ve veritabanına bağlanarak bağlam otomatik sağlanabiliyor
- Linear ile ticket bağlamı sağlanıyor
- Notion veya Canvas üzerinden dokümanlara erişiliyor
- Üretim dışı veritabanı ile veri yapısı kontrol ediliyor
- GitHub üzerindeki geçmiş PR’ların arka plan bilgileri kullanılıyor
Paralel Claude örnekleri kullanımı ve temel stratejiler
- Birden fazla Claude örneği paralel yürütülüyor; yaklaşım, “her gün hafızasını kaybeden küçük bir geliştirme ekibini” yönetmek gibi
- Aynı problem alanında paralelleştirmeden kaçınma, tüm işleri Linear gibi proje yönetim araçlarına kaydetme ve insanın doğrudan düzenlediği kodu net biçimde işaretleme gibi stratejiler uygulanıyor
- Sadece kod yazımında değil, kod incelemesinde de yapay zeka yoğun biçimde kullanılıyor: eksik testler, açık hatalar ve iyileştirme noktaları hızla bulunarak tekrar eden işler azaltılıyor
- Yazarın şirketi Sanity’nin politikası gereği, yapay zekanın ürettiği kodda bile nihai kalite sorumluluğu mühendise ait
- Yapay zeka ve insanın ayırt edilmediği bir kod üretim ortamında, duygusal bağlılık azalıyor ve daha eleştirel, daha nesnel kod incelemesi mümkün oluyor
3 aşamalı kod inceleme süreci
- Kod yazmak işin bir parçasıysa, kodu incelemek de aynı ölçüde işin parçası
-
- inceleme: Claude’un ilk kontrolü
- Test kapsamı eksikleri ve bariz hataların tespiti
- İyileştirme önerileriyle ekip arkadaşlarının inceleme süresinden tasarruf sağlanması
-
- inceleme: Benim incelemem
- Bakım kolaylığı, mimari, iş mantığı ve entegrasyon kontrolü
- Kod yapay zeka üretimi olsa bile nihai sorumluluk mühendiste
-
- inceleme: Ekibin standart incelemesi
- Hangi bölümlerin yapay zeka üretimi olduğu bilinmiyor. Aynı kalite standardı uygulanıyor
- Duygusal bağlılık olmadan nesnel inceleme yapılabiliyor
- Yapay zekanın yazdığı koda karşı duygusal bağlılığın azalması, daha nesnel incelemeyi mümkün kılıyor
Slack tetiklemeli agent ve iş otomasyonu denemeleri
- Cursor ile Slack bağlantılı bir agent pilot olarak denendi: basit iş mantığı değişikliklerinde başarılı oldu, karmaşık CSS yerleşimlerinde ise başarısız kaldı
- Şu anda özel NPM paketlerini desteklememe, imzasız commit’ler, resmi takip mekanizmalarını baypas etme gibi sınırlamalar bulunuyor
- Yine de gelecekte agent’ların gece saatlerinde basit ve tekrar eden ticket’ları çözebileceği bir senaryo heyecan verici görülüyor
Maliyet ve ROI
- Claude Code kullanım maliyeti, şirketin mühendise ödediği ücret içinde kayda değer bir kalem
- Buna karşın bu yatırımın üretkenlik getirisi var
- Özellik yayınlama hızı 2-3 kat artıyor
- Birden fazla geliştirme akışı aynı anda yönetilebiliyor
- Tekrarlayan ve boilerplate kodu elde yazma ihtiyacı ortadan kalkıyor
- Yapay zekaya geçişin ilk döneminde senior mühendis başına aylık $1000-1500 bütçe gerekebiliyor; beceri arttıkça maliyet verimliliğinin iyileşmesi bekleniyor
Yapay zeka destekli geliştirmenin süregelen sorunları ve sınırları
- Öğrenme sorunu: Yapay zeka hatalarından ders çıkaramadığı için aynı yanlış anlamaları tekrarlayabiliyor; çözüm, zengin dokümantasyon ve açık talimatların güçlendirilmesi
- Güven sorunu: Yapay zeka yanlış kodu bile özgüvenle sunabiliyor; bu yüzden özellikle karmaşık durum yönetimi, performans ve güvenlik alanlarında mutlaka doğrulama gerekiyor
- Bağlam sınırı sorunu: Büyük kod tabanları yapay zekanın bağlam penceresini aştığı için problemi küçük parçalara bölmek ve net bağlam vermek şart
Koddan probleme duygusal geçiş
- Koda takılı kalmak yerine problem çözme odaklı düşünceye geçiş
- Hatalı kodu hızla silme, daha nesnel inceleme ve refactoring konusundaki yükün azalması = olumlu değişim
- Daha iyi yapay zeka araçları çıkarsa bunları hemen değiştirmeye istekli
- Esas mesele “kodun kendisi” değil, çözülmesi gereken problemin değeri
Mühendis bakış açısından yapay zeka benimseme önerileri
- 1. Farklı yapay zeka çözümlerinin denenmesine izin verin: Ekiplerin çeşitli araçları bizzat kullanarak pratik yetkinlik kazanması gerekir
- 2. Yapay zekayı tekrar eden ve basit işlerden başlatarak uygulayın: Hızlı etki görmek mümkün
- 3. Deneme-yanılma için bütçe ayırın: İlk ayın kaotik geçeceğini kabul etmek gerekir
- 4. İnceleme sürecini yeniden tasarlayın: Yapay zeka koduna uygun denetimleri güçlendirin
- 5. Titiz dokümantasyon yapın: Güçlü bağlam üretkenliği katlıyor
- Yeni yapay zeka iş akışına uyum sağlayan mühendisler, araç kutularına yeni ve çok keskin bir bıçak eklendiğini fark edecek
- Yapay zeka iş akışını benimseyen mühendisler, birden fazla yapay zeka agent’ını orkestre edip mimari, inceleme ve karmaşık problem çözümüne odaklanan yeni bir role evriliyor
Sıradaki adımınız
- Küçük ama iyi tanımlanmış tek bir özellik seçin,
- Yapay zekaya bu özelliği uygulaması için üç şans verin,
- Ve sonucu, tıpkı junior bir geliştiriciye mentorluk yapıyormuş gibi inceleyin
- Hepsi bu. Büyük bir değişime ya da süreç dönüşümüne gerek yok
- Sadece tek bir özellik, üç deneme ve dürüst bir inceleme yeterli
- Gelecek, yapay zekanın geliştiricilerin yerini alması değil
- Geliştiricilerin daha hızlı çalışması, daha iyi çözümler geliştirmesi ve en iyi araçları kullanması
5 yorum
"Böyle incelikli bir prosedürse, kişinin kodu doğrudan kendisinin yazmasının daha iyi olacağını düşünüyorum"
Takım üyelerine iş vermeyip işi bizzat halleden ekip liderinin tavrı hahaha
Öyle gibi görünse de hiç de öyle değil.
Son 6 ayda küçük ve büyük ölçekte bunu defalarca denedim.
Hacker News görüşleri
Ajanların bilişsel sınırlarını hesaba katarak komut vermenin önemli olduğu hissediliyor; örneğin büyük değişiklikler istemek yerine önce bir plan yapıp küçük adımlarla ilerlemesini söylemek ve her adımı test ederek devam etmek gerekiyor. Karmaşık aşamalarda problem ile çözüm yolunu görselleştiren kod yazdırmak faydalı olabiliyor. Bir adımda başarısız olursa koda logging ekletip logları kaydettirdikten sonra test edip logları inceleyerek sebebi bulma sürecini tekrarlamak etkili oluyor. Mevcut kodun tasarım yaklaşımı üzerinden modelin nereleri değiştirmesi gerektiğini anlamasını sağlarsanız, yapay zekanın her şeyi tek dosyaya yığmasını önleyebilirsiniz. Birçok kişinin bu tür ipuçlarını paylaştığı bloglar gördüm; hâlâ kusursuz değil ama en azından sonuçların %95’i çöp çıkmıyor
Artık bu tür yazıların sadece basit refactoring işleri ya da React boilerplate’leri değil, gerçekten "ajanın dağıtık şekilde iş yaptığı" somut görev örneklerini içermesi gereken bir noktadayız gibi geliyor. Sanity’de uzun süredir istenen bazı özellikler olduğu söyleniyor ve ajanların önemli miktarda işi paralelleştirdiği iddia ediliyor. Ama "kodun %80’ini öğrenmeyen bir junior developer yazdı" tarzı iddialara inanmak zor
Yazar üretkenlik artışı olduğunu söylemiş olsa da, sık dile getirilen sınırlamaları da aynen tekrar ettiği için pratikte çok şey söylememiş gibi geldi; kimsenin temel ürün özelliklerinin geliştirilmesini Claude Code’a emanet edeceğine inanmıyorum
Boilerplate’ten kaçınmak geliştiricinin işidir; bu aynı zamanda gelecekteki kendinize kolaylık sağlayan bir abstraction’dır. AI ile boilerplate üretirseniz, ileride tüm örnekleri tek tek değiştirmeniz gerektiğinde işler daha da zorlaşır; üstelik farklı yerlere dağılmış boilerplate kodlar tutarsızlaşırsa sorun daha da büyür
İlginç olan şu ki bu kişi yapay zekayla temel implementasyonu deniyor, ben ise tam tersine temeli mutlaka önce kendim kuruyorum. Böylece yapıyı ve çalışma mantığını tam olarak anlayabiliyorum; sonrasında yapay zekaya sadece tekrar eden boilerplate işleri bırakıyorum. Yapay zeka taklit ederek yazmakta iyi ama mimari tasarımda oldukça zayıf
Zaten maaşlar yüksekken, üstüne aylık 1.000-1.500 dolar daha harcayıp verimliliği artıp artmayacağı bile belli olmayan ufak sorunlara yatırım yapılması gerektiği iddiası bana şüpheli geliyor; en azından benim yöneticim bundan hoşlanmazdı
Metinde geçen MCP(Multi-Channel Processor) kullanım biçimini pek anlamadım. Claude Code ile
curlveyaghgibi araçlarla shell içinden neredeyse tüm üçüncü taraf servisler çağrılabiliyor; MCP kullanınca hatta sorun çıkabilir (örneğin linear MCP server, issue çok uzunsa kesiyor ama API’yi doğrudan çağırınca böyle bir sınırlama yok). Acaba benim kaçırdığım bir nokta mı var?Anthropic, Boris Cherny (Claude Code’un yaratıcısı) ile bir röportaj yayımladı; Claude Code’un ajan tabanlı kodlamadaki geleceği ve kullanım yöntemlerine dair fikirler de paylaşıyor https://youtu.be/iF9iV4xponk
"Aylık $1000-1500 bütçe" ifadesini görünce, acaba sadece API key kullanıp claude MAX gibi sabit ücretli planları bilmiyor olabilir mi diye düşündüm; ayda $100-200, sorguları kontrolsüzce tekrar tekrar atmıyorsanız, bence yeterince karşılar
Claude ya da başka ajanlar kullanacaksanız logging’i kesinlikle tavsiye ederim. Tüm log dosyasını yapay zekaya verdiğinizde, sorunu toparlayıp yanıt üretme ya da bir sonraki adıma geçme olasılığı yükseliyor; logging gerçekten her şeydir