55 puan yazan GN⁺ 2025-10-31 | 1 yorum | WhatsApp'ta paylaş
  • Google Chrome ekibinde 13 yıl görev yapan mühendislik lideri Addy Osmani, profesyonel yazılım mühendisleri için yapay zeka tabanlı geliştirme metodolojisini tanıtıyor
  • Vibe coding hızlı prototipleme için faydalı olsa da, prodüksiyon kalitesinde yazılım geliştirme için mühendislik ilkeleri ve insan gözetimi vazgeçilmez
  • Yapay zeka araçlarını kullanırken spesifikasyon odaklı geliştirme, test yazımı ve kodu anlama yoluyla kalite güvence altına alınmalı; modelin düşünme süreci incelenerek üretilen kod tamamen kavranmalı
  • LLM’ler uygulamanın yaklaşık %70’ini hızla üretebilir, ancak kalan %30’un tamamlanma düzeyi, güvenliği ve bakım yapılabilirliği için kıdemli mühendisin uzmanlığı daha da önemli hale geliyor
  • Asenkron arka plan ajanları, paralel kodlama gibi yeni geliştirme iş akışları ortaya çıkarken, mühendislerin eleştirel düşünmeyi ve kodu anlama becerisini koruyarak yapay zekadan yararlanan ömür boyu öğrenenler olması gerekiyor

Vibe Coding ile yapay zeka destekli mühendislik arasındaki fark

  • Vibe coding, yapay zekayla kurulan yaratıcı akışa tamamen dalıp yüksek seviyeli prompt’lara odaklanarak kodun kendisini geri plana atma yaklaşımıdır
    • Yapay zeka önerilerini derinlemesine incelemeden kabul eder ve hızlı yinelemeli denemelere odaklanır
    • Prototip, MVP ve öğrenme amaçları için kullanışlıdır; hız ve keşfi, doğruluk ve bakım yapılabilirliğin önüne koyar
  • Yapay zeka destekli mühendislik, yapay zekayı güçlü bir işbirlikçi olarak kullanırken mühendislik ilkelerinin yerine koymayan bir yaklaşımdır
    • Yapay zeka, yazılım geliştirme yaşam döngüsünün tamamında boilerplate, debugging, deployment gibi işlerde çarpan etkisi yaratan bir yardımcı rol oynar
    • İnsan mühendis, mimari tasarım, model incelemesi ve üretilen tüm kodu anlama sorumluluğunu korur
    • Nihai ürünün güvenliğini, ölçeklenebilirliğini ve bakım yapılabilirliğini garanti etmek mühendisin görevidir
  • Yazılım mühendisliği uzmanlığı arttıkça, LLM kullanılarak elde edilen çıktının kalitesi de yükselir
  • Prodüksiyon kalitesinde programlama için, yalnızca başkalarına tamamen açıklanabilir kod repoya commit edilmelidir

Addy’nin yapay zeka araçlarını kullanma yöntemi

  • Spesifikasyon odaklı geliştirme (Spec-driven development) merkezli yaklaşım
    • Ne inşa edileceğine dair net bir plan oluşturmak kritik önemdedir
    • Vibe coding, kişisel araçlar, tek kullanımlık projeler ve fikir görselleştirme için kullanılır
    • Vizyon prototiple netleştirildikten sonra gerçek gereksinimler belgelenerek LLM’den yüksek kaliteli çıktı alınır
  • Test yazımı ile risk azaltma
    • En yeni modeller bile zaman zaman karmaşık ya da hatalı kod üretebilir
    • Testler, çalışmayı kanıtlar ve sorun çıktığında net biçimde tespit edilmesini sağlar
  • Chrome DevTools MCP kullanımı
    • LLM’ye tarayıcıyla ilgili bir “görüş” kazandırarak render, konsol hataları ve uyarıları tespit etmesini sağlar
    • Tarayıcıyı döngüye dahil ederek geri bildirim döngüsünü iyileştirir
  • Yeni model, araç ve platformlarla ilgili sürekli deney yapma ve ekipler arası içgörü paylaşımı
    • Psikolojik güvenlik oluşturarak birlikte öğrenen bir kültür kurma

Google’daki yapay zeka araçlarına dair gözlemler ve öğrenimler

  • Google’ın kanıtlanmış yazılım mühendisliği ilkeleri, yapay zeka çağında da geçerliliğini koruyor
    • Kaliteye ve gerekli özenin gösterilmesine odaklanmak hâlâ önemli
  • Prompt engineering ve context engineering önemini koruyor
    • LLM’den en iyi sonucu almak için doğru “büyüleri (incantations)” kurmak gerekiyor
    • Context window’u optimize etmek, yüksek kaliteli sonuç alma olasılığını artırıyor
    • Projeye özgü açıklamalar, ayrıntılar, dosyalar ve örnekler gibi LLM eğitim verisinde bulunmayan içeriklerin dahil edilmesi önemli
  • AI native mühendis dönüşümünü hızlandırma
    • Bir problemi çözmeye başlamadan önce önce yapay zekanın denemesini sağlayan bir düşünce biçimi geliştirme
    • Değerlendirme benchmark’ları, RAG vs. fine-tuning gibi alanlarda yapay zeka uzmanlığı oluşturma
  • İnsan gözetiminin önemi
    • Yapay zeka hem kodu yazıp hem de incelemeyi yaparsa, gerçekte neyin dağıtıma çıktığı konusunda belirsizlik oluşur
    • PR hızının artmasıyla insan incelemesi darboğaz haline gelir
    • Kod inceleme en iyi uygulamaları hâlâ evrim geçiriyor

Addy’nin tercih ettiği araçlar

  • Ağırlıklı olarak Klein in VS Code kullanıyor
    • Cursor ve GitHub Copilot da pek çok özellik sunuyor
  • Araçların gösterdiği düşünme sürecini (thinking log) inceleme
    • Çözüm oluşturulurken modelin kararlarını ve ürettiği kodu gözden geçiriyor
    • PR öncesinde kodu inceleyerek gelecekte bakım yapılabilirliği güvence altına alıyor
  • LLM problem çözmede başarısız olduğunda bizzat debugging yapabilme yetkinliğini koruma
    • Kodun nasıl çalıştığını anlamadan kalmak, kendini ormana bırakılmış gibi hissettiriyor
  • Profesyonel mühendis ile genel kullanıcı arasındaki fark
    • Sadece prompt girmek herkesin yapabileceği bir şey
    • Kodun çalışma mantığını anlama, model başarısız olduğunda düzeltebilme ve toplantılarda net açıklayabilme becerisi asıl farkı yaratıyor

%70 probleminin özü

  • LLM’ler çalışan bir uygulamanın yaklaşık %70’ini çok hızlı üretebilir, ancak kalan %30’da zorlanır
  • Son %30’un bileşenleri
    • “Two steps back” paterni: Tek bir prompt’un arayüzü ya da işlevi tamamen yeniden yazması gibi yanlış yöne gitme durumları
    • Gizli bakım maliyeti: Net olmayan spesifikasyonlarla sorumluluğun LLM’ye devredilmesi verimi düşürebilir
    • Güvenlik açıkları: API anahtarlarının sızması, XSS sorunları gibi bütüncül düşünce eksikliğinden doğan problemler
  • Vibe coding ile oluşturulan PoC’lerin prodüksiyona çıkmadan önce yeniden yazılması gerekir
    • Gerçek kullanıcı tabanına hizmet veren kod tabanlarında güvenlik ve kalite zorunludur
  • Deneyimli mühendisler, son %30’u çok daha kolay tamamlar
    • Junior mühendisler çoğu zaman LLM’ye tekrar tekrar prompt vermenin ötesindeki sonraki adımı bilemeyebilir
    • Eleştirel düşünme ve problem çözme zihniyetinin önemi burada öne çıkar
  • Kodu okumak, sistemi anlamak ve tüm parçaların nasıl bağlandığını kavramak için gösterilen özen hâlâ vazgeçilmezdir

LLM’leri verimli kullanmak için taktikler

  • Proje yöneticisi zihniyeti benimseme
    • İşi küçük ve doğrulanabilir parçalara ayırma
    • Tüm gereksinimleri tek seferde yüklemek etkili değildir
    • Net beklentiler belirlemek ve yapay zekayla yinelemeli çalışmaya hazır olmak gerekir
  • Modüler ve test edilebilir kod yazma
    • Kod incelemesi gibi yazılım mühendisliği en iyi uygulamaları yapay zeka çağında da geçerli
  • Girdi/çıktı kısıtlarını dikkate alma ve yeterli bağlam sağlama
    • Bu yeni bir alışkanlık olsa da iyi sonuçlar verebilir
  • İnsanların döngüde kaldığı özeni sürdürmek başarının anahtarıdır
    • Sorumluluk LLM’ye ne kadar çok devredilirse sorun çıkma riski o kadar artar

Otonom ajanlar ve yeni iş akışları

  • Asenkron arka plan kodlama ajanlarının ortaya çıkışı
    • Jewels, Devin, Codex gibi araçlar ve GitHub’ın deneyleri
    • Backlog’un bir bölümünü devredip bunun asenkron biçimde uygulanmasını sağlama fikri
  • Mevcut durum
    • Test yazma/güncelleme, kütüphane sürüm geçişleri gibi işler için şimdiden etkili
    • Dark mode eklemek gibi küçük değişiklikleri devretmek için uygun
  • Yönetim zorlukları
    • Bir orkestranın şefi gibi tüm işleri yönetmek için uygun bir arayüze ihtiyaç var
    • Aynı anda yönetilebilecek gerçekçi görev sayısını hesaba katmak gerekiyor
    • İnsan dikkati sınırlı olduğundan, kapsamlı kod incelemesi için aynı anda yalnızca birkaç iş yürütülebilir
  • Vibe designing’in evrimi
    • Figma’nın MCP’si üzerinden tasarımcı ve geliştirici işbirliğini güçlendiriyor
    • Tasarımcıların vizyonu işlevsel prototiplere dönüştürerek prodüksiyona uygun koda yaklaşmasını sağlıyor

EM ve PM rollerinin değişimi

  • PM rolü
    • Problem çerçevelendirme, metrikler ve ajan politikalarına daha fazla zaman ayırma
  • EM rolü
    • Evals, güvenlik incelemeleri ve ekibin yapay zekayı güvenle kullanabilmesini destekleme
  • Sonuçlara dair sorumluluk değişmiyor
  • Ürün mühendisliğinde zevkin (taste) önemi
    • Herkes prompt’larla benzer özellikler geliştirebildiği için ayırt edici unsur zevk oluyor
  • Junior vs. senior
    • Yapay zeka taban çizgisini yükseltirken tavanı da birlikte yükseltiyor
    • Junior’lar daha hızlı başlayabilir
    • Spesifikasyon yazma, işi parçalara ayırma, sistem mimarisini anlama ve etkili inceleme becerisine sahip senior’lar daha da değerli hale geliyor
    • Son %30, basit bir iş değil; gerçek bir kaldıraç noktasıdır

Yeni roller ve geliştirici eğitiminin değişimi

  • Forward deployed engineers gibi yeni rollerin yükselişi
    • Müşterilerle daha yakın çalışarak yapay zekayla hızlıca özellik geliştirip gereksinim geri bildirimi alırlar
    • Geliştirici, PM ve tasarımcı rolleri arasındaki sınırların bulanıklaşması mümkün
  • Yapay zeka mühendisliği eğitimi
    • Liselerde ve üniversitelerde prompt ve context engineering en iyi uygulamalarının öğretilmesi gerekiyor
    • Sistem tasarımı ve mühendislik düşünce biçimini korumanın yolları aranmalı
  • Trio programming
    • Junior, senior ve yapay zeka birlikte çalışır
    • Senior, yapay zekanın ürettiği kodu açıklamasını ya da sistemin diğer parçalarıyla nasıl bağlandığını anlatmasını isteyebilir

Yapay zeka ile çalışırken eleştirel düşünmenin önemi

  • Yapay zeka araçlarını kullanırken kabullenmenin kolaylığı nedeniyle eleştirel düşünmenin zayıflama riski
    • Özellikle önemsiz görülen işlerde Tab/Accept’a basıp her şeyi kabul etme eğilimi oluşabilir
    • Güven arttıkça eleştirel inceleme azalabilir
  • Kod inceleme darboğazı
    • Yapay zekanın ürettiği kodun hızı arttıkça insan incelemesi darboğaz olur
    • LGTM(Looks Good To Me) ifadesinin aşırı kullanılma riski doğar
  • Karşı stratejiler
    • Belirli özelliklerde ya da haftanın bazı günlerinde bilerek yapay zeka olmadan çalışarak eleştirel düşünmeyi canlı tutmak
    • Tüm büyük LLM sağlayıcıları kapansa ne yapılacağını düşünmek
  • Kod yazmak vs. kod okumak
    • Kodu bizzat yazarken doğal bir özdenetim oluşur ve başkaları yazarı bilerek inceleme yapar
    • Yapay zeka çağında okuma ve inceleme daha büyük pay alıyor
  • Kod incelemede yapay zekadan yararlanma
    • Yapay zekanın “onayı” yalnızca bir işarettir
    • CI/CD’den geçmesi, testlerin başarılı olması gibi şeylere ek olarak kaliteye dair kişisel bakış açısı hâlâ gereklidir
  • İşin %20-30’luk kısmı hâlâ yapay zeka olmadan yapılmalı ki zihin aktif kalsın

Öğrenme aracı olarak LLM

  • Yeni bir kod tabanını anlamak için güçlü bir araç
    • İlk görev, değer üretmek için yeni özellikler prompt’lamak değil; kod tabanının nasıl çalıştığını öğrenmek olmalı
  • Programlama kavramlarını, framework’leri ve mimari kalıpları anlamakta faydalı
  • Farklı bir dilde yazılmış kod tabanları arasında özellik taşırken vazgeçilmez
  • Ekip kültürü oluşturma
    • Yapay zekayı bir öğrenme aracı olarak kullanmanın normal olduğu algısını yaymak
    • Deney yapmayı ve en iyi uygulamaları paylaşmayı düzenli olarak teşvik etmek
  • Yeni çalışanların hızlı onboarding’i
    • Yapay zeka araçları 24/7 erişilebilir, güvenilir bir mentor rolü oynayabilir
    • Senior mühendislere gün boyu soru sormadan daha rahat öğrenme sağlar
  • Claude Code’un öğrenme modu
    • Açıklama modu ve öğrenme modu sunar
    • Duraklayıp kullanıcıdan belirli bölümleri bizzat yapmasını isteyebilir

Yapay zeka araçlarının evrimi ve beklenti belirleme

  • Araç evriminin tarihi
    • Şablon indirme → CLI ve scaffolding → yapay zeka tabanlı bootstrapping
    • Her aşamada geliştirici deneyimi biraz daha iyileşti
  • Eğitim verisinin sınırlarını kabul etme
    • GitHub’daki permissive lisanslı kodlara ya da açık web’deki kalıplara dayanır
    • En düşük ortak payda (lowest common denominator) kalıplarını yansıtma ihtimali vardır
    • En üst düzey güvenlik, performans ya da erişilebilirlik garanti edilmez
  • Stack Overflow kopyala-yapıştır pratiğine benzerlik
    • Geçmişte: e-posta doğrulama regex’i gibi şeyler Stack Overflow’dan kopyalanırdı
    • Bugün: LLM benzer kalıpları üretir ama edge case ya da güvenlik sorunları içerebilir
  • Üçüncü taraf kütüphane vs. kendin uygulama
    • LLM ile küçük bir sürümünü doğrudan geliştirmek mümkün olsa da bakım sorumluluğu yük getirir
    • Kütüphaneler, güvenlik sorunları gibi konularda merkezi düzeltme sağlayabilir
    • Her seçeneğin trade-off’larını değerlendirmek gerekir
  • Düşük beklenti ve yüksek kontrol seviyesini korumak kilit önem taşır

İyi bir yazılım mühendisinin tanımının değişimi

  • Ömür boyu öğrenen (Lifelong learner) olmanın önemi değişmiyor
    • Framework’ler, araçlar ve sektör değişse de yeni şeyler öğrenmeye açık olmak şart
  • Growth mindset
    • Yeni model, araç ve platformları denemeye istekli olmak
    • Başarısızlıktan öğrenmek ve kısıtları anlamak
  • Liderliğin rolü
    • Liderin öğrenmeye açık olduğunu göstermesi, ekipte psikolojik güvenlik oluşturur
    • Addy her pazartesi ekip içi bülten yazıyor
      • Kişisel projelerini, yazılarını ve düşüncelerini paylaşıyor
      • Yapay zeka ve AI engineering alanındaki önemli güncellemeleri derliyor
      • Diğer yöneticiler de bunu faydalı buluyor
  • Bilgi fazlalığı çağında kürasyon
    • Sosyal ağlarda her saat köklü bir değişim oluyormuş gibi hissediliyor
    • Liderlerin gerçekten önemli olanı seçip ekibe yön göstermesi gerekiyor
  • Teknik keskinliği koruma
    • Makaleleri, whitepaper’ları, blogları, videoları ve dersleri sürekli okumak ve izlemek
    • Ekibin zamanını nereye ayırması gerektiği konusunda rehberlik etmek
  • Ürün geliştirmeyle bağlantı
    • Kodlama iş akışlarını iyileştirme çalışmaları, ürün müşteri deneyimini iyileştirmeye de katkı sağlar

En sevdiği araçlar ve öneriler

  • En sevdiği programlama dili: JavaScript
    • Kişisel tercihten çok, herkesin web üzerinde bir şeyler inşa edip dağıtabilmesini sağlayan açıklığı nedeniyle
    • Gatekeeper olmadan özgürleştirici bir his sunuyor
  • Şu an en sevdiği araç: Bolt
    • Bir vibe coding scaffolding aracı
    • Kısa süre önce custom agent desteği eklendi (Claude Code vb. kullanılabiliyor)
    • Yüksek kaliteli çıktılar ve harika tasarım sunuyor
    • Supabase, kimlik doğrulama sağlayıcıları gibi entegrasyon otomasyonu özellikleri var
    • Kurulum sürtünmesini ortadan kaldırmaya odaklanıyor
  • Önerilen kitaplar
    • "The Software Engineer's Guidebook"
    • Chip Huyen’den "AI Engineering" - AI engineering’in temel yönlerini öğrenmek için bir kitap

1 yorum

 
riddler 2025-10-31

Aynı başlıklı kitabın kasım ayında yayımlanacağı söyleniyor~
https://x.com/TeeDDub/status/1983150672205041823