AI ile Yazılım Geliştirme
Deterministik dünyadan gelen geliştirici için: "program mantık çalıştırır"dan "model olasılık dağılımından token üretir"e geçiş — ve oradan iş bitiren agent'lara.
AI Nasıl Çalışır
Zihinsel modeli değiştir: mantık çalıştıran program değil, olasılık üreten model.
Sonraki-token tahmini
LLM = istatistiksel fonksiyon. Girdi: token dizisi. Çıktı: bir sonraki token için olasılık dağılımı. Döngü halinde tekrar — hepsi bu.
Model karakter değil token görür
Token = kelime-altı birim. Tokenizer sabit ve deterministik. Türkçe sondan-eklemeli → aynı anlam daha fazla token = daha pahalı.
Embedding: vektör temsili
Kelimeler "yakınlığa" göre yerleşir. araba → kırmızı ve hızlıya yakındır; bağlam ağırlığı oraya kayar. Bir kelimeye tıkla.
Context penceresi ve sınırı
Modelin tek kısıtı: aynı anda dikkate alabildiği max token. Girdi ve çıktı aynı bütçeyi paylaşır — dolunca bir şey atılır, maliyet boyutla büyür.
Dört frontier sağlayıcı
“Hangi model en iyi?” yanlış soru — üst modeller birkaç puanla ayrılıyor. Doğru soru: hangi iş için hangi katman?
Maliyet · Hız · Yetenek
Üçünü birden alamazsın — ikisini seç. Çözüm routing: basit→küçük, karmaşık→flagship; ve model-agnostik yaz.
Açık ağırlık, self-host, “verimiz çıkmasın”
“Şirket verimiz yurt dışına çıkmasın” — teknik bir mimari kararı, slogan değil. İki uç, bir doğru cevap.
Yüksek yetenek · sıfır altyapı
- + En yetenekli model, kurulum yok
- − Veri sağlayıcı sunucusuna gider (BDDK/KVKK sorusu)
- zero-data-retention riski daraltır — ama “hiç çıkmıyor” garantisi vermez
Veri makineden çıkmaz
- + Hacimde ucuz, tam kontrol, denetlenebilir
- − Yetenek açığı + GPU CAPEX/OPEX
- MLOps yükü + gecikme sizde
Neden Claude?
Tek model standardının gerekçesi pazarlama değil: Haziran 2026 itibarıyla Claude'un konumu + ekip iş akışını tekleştirme.
Kod liderliği
Opus 4.8 SWE-bench tepesinde; Cursor / Windsurf / Claude Code'u besleyen motor.
Agentic güvenilirlik
Asıl fark. Uzun çok-adımlı görevde tutarlı: 200 adımlık refactor'da dağılmaz.
Disiplinli tool-calling
Aracı yerinde, argümanı doğru seçer; gereksiz çağrı yapmaz.
1M token bağlam + iyi dikkat
Büyük repo'yu aynı anda taşır — pencere ortasında bilgiyi kaybetmeden.
Birinci-parti harness
Claude Code aynı laboratuvardan — model + kokpit uyumlu tasarlandı.
Neden terminal? Claude Code
Geçiş: "soru cevaplayan AI"dan "iş bitiren AI"a. Build/test/git/deploy zaten terminalde.
claude.ai
Kopyala-yapıştır; repo'yu görmez, komut/test koşamaz. Düşünmek için iyi, iş bitirmek için kötü.
Copilot tarzı
Satır-içi tamamlama; açık dosyaları görür, her adımı sen sürersin.
Claude Code
Dosya okur/yazar, komut/test koşar, git kullanır — döngüyü kendi kapatır.
Agent · MCP · Harness · Skill
Günlük kararların ortak dili: "burada skill mi, subagent mı? hook mu, MCP mi?"
Dil seçimi ve doğrulanabilirlik
"Hangi dil?" yanlış soru. Daha çok eğitim verisi = daha iyi prior — ama asıl belirleyici başka.
Python · TS / JS
En çok eğitim verisi → en güçlü prior, en az hata.
C# / .NET · Java · Go
Sağlam veri + güçlü tip sistemi → güvenilir üretim.
Legacy & niş
VB.NET · WebForms · WCF · COBOL: seyrek veri, çok hata.
Prompt → RAG → Fine-tune
"Şirket verimizi nasıl öğretiriz?" → üç yöntem, bir karar ağacı. (İç doküman/şema/runbook ≈ RAG.)
Token ekonomisi & maliyet
Faturayı öngörülebilir kıl: girdi/çıktı ayrı ödenir (çıktı ~3–5x), history her tur birikir. Kaldıraçları çevir.
AI ile Kod Yazmak
Zihinsel modelden pratiğe: agent'ı tutarlı çıktı üreten, denetlenebilir bir iş ortağına çevir.
Repo'yu AI'a hazırlamak
Kod yazmadan önce repo'yu, agent'ın tutarlı çıktı üreteceği hale getir — beş katman.
1 · CLAUDE.md kural kitabı
Stack, komutlar (build/test/lint), yapılacak/yapılmayacak, mimari. ~500 token altı, her oturum yüklenir.
2 · Klasör standardı
Öngörülebilir yapı. Agent nereye yazacağını tahmin etmez, bilir.
3 · Ekip hafızası
Kararlar, tuzaklar, kök-nedenler. Bilgi kişide değil repo'da birikir.
4 · Scratch alanı
Deneme/keşif için ayrı alan — üretimden izole, kirletmez.
5 · MCP / skill / hook / subagent
Minimal tut. Sadece kanıtlanmışı kur — erken otomasyon borç yaratır.
Tek kaynaktan dağıt. Her repo'ya temel CLAUDE.md: stack, komut, güvenlik kuralı, isimlendirme.
Araştır → Planla → Uygula → Doğrula → Commit & Push
Tek tekrarlanabilir akış. Regüle değişiklik disipliniyle birebir örtüşür — spec önce gelir.
Araştır
İlgili kodu oku, bağlamı anla, soru sor.
Planla
Koddan ÖNCE brief / spec / plan modu — planı incele.
Uygula
Küçük, artımlı adımlar. Tek dev prompt değil.
Doğrula
Test çalıştır + review. Kanıt göster.
Commit & Push
Atomik commit, PR.
Git / TFS disiplini
Kod nasıl üretilirse üretilsin — kaynak, değişmez versiyon geçmişinde güvende. Vibe-coding yapılsa bile.
Atomik commit
Bir mantıksal değişiklik = bir commit.
Feature branch
main'e asla doğrudan.
Checkpoint / rollback
Riskli AI değişikliğinden önce commit.
History ezilemez
Paylaşılan dala force-push yok.
Greenfield vs Brownfield
Sıfırdan proje ve yaşayan sistem — ayrı disiplinler, ayrı ilk hamleler, ayrı doğrulama koşulları.
- İlk artifact: mimari / spec
- Risk: aşırı mühendislik, yanlış temel
- Doğrulama: spec'i karşılıyor mu?
- İlk artifact: characterization test
- Risk: çalışanı bozmak
- Doğrulama: davranış değişmedi mi? (golden master)
8 senaryo · disiplin + doğrulama
Her senaryoya bir disiplin seviyesi ve bir doğrulama koşulu. Koşul sağlanmadan deploy yok.
Greenfield ürün
Doğrulama: spec'e karşı.
Önce harita
Doğrulama: harita teyidi.
3. parti / API
Doğrulama: gerçek yanıt testi.
Mevcut koda ek
Doğrulama: eski sağlam + yeni çalışıyor.
Önce reproduce
Doğrulama: test geçiyor + regresyon yok.
Migration
Doğrulama: golden master.
Test üret
Doğrulama: mutation düşüncesi.
Tek seferlik
Doğrulama: sonucu doğrula, at/arşivle.
Legacy .NET dönüşümü
Legacy kod = az örnek + zor test → en riskli iş. Yöntem: önce mevcut davranışı testlerle kilitle, sonra dönüştür. Testler, hiçbir şeyin bozulmadığını kanıtlar.
Davranışı dondur
Kod şu an ne yapıyorsa onu teste dök — "doğru mu" diye bakma, mevcut çıktıyı aynen yakala. (buna characterization / golden-master test denir)
AI dönüştürsün
Refactor · .NET sürüm yükseltme · sadeleştirme. Agent, değişen API'larda yardımcı olur.
Testlerle kanıtla
Donmuş testler hâlâ yeşilse davranış değişmemiştir → dönüşüm güvenli.
strangler-fig: parça parça değiştir
Devasa WebForms/WCF'i tek seferde baştan yazma. Eskinin önüne bir katman koy → yeni parçayı modern .NET'te yanında kur → trafiği kademeli yeniye geçir → eski parçayı söndür.
Test ve doğrulama
Doğrulama döngüsü tek başına 2–3x kalite çarpanı. Risk arttıkça merdivende yukarı tırman; finansta sıfır tolerans, tepeye kadar.
Güvenlik ve regülasyon
Finans için sıfır tolerans (BDDK/KVKK). Aşağıdaki set tartışmaya kapalı.
Veri sınırdan çıkmaz
PII / kart / müşteri verisi prompt'a GİRMEZ. İstisnasız — prompt'a konunca sınırdan çıkar.
Secret hijyeni
API key / şifre prompt, kod, log'a girmez → env / secret manager.
Log hijyeni
Hassas veri loglanmaz. Çıktı ve iz kayıtları redakte edilir.
Paket doğrulama
AI paket önerir → var mı / bakımlı mı / kötücül mü. Halüsine paket = slopsquatting.
Deny-hook
PreToolUse: secret redakte, rm -rf engelle, repo-dışı yazım + prod config blokla.
Güvenlik review
SAST + insan review. Otomatik tarama deploy öncesi zorunlu adım.
PostgreSQL & Supabase ile AI
Önce ilişki: Supabase = PostgreSQL + hazır auth/API/realtime — altı yine standart Postgres. AI her ikisinde de şema okur, sorgu yazar, migration üretir; ama hatayı öneri aşamasında blokla.
PostgreSQL
Açık-kaynak veritabanı motoru. Kendi sunucunda → tam kontrol, veri sende kalır (rezidans — regüle finans için kritik). Auth/API katmanını sen kurarsın.
Supabase = Postgres + hazır servis
Aynı Postgres üstünde hazır auth, oto-üretilen REST/realtime API, RLS, depolama, panel. Greenfield'de çok hızlı; yönetilen bulut (veri dışarıda → B8).
Context yönetimi
A1'deki context-penceresi kısıtının operasyonel yüzü. Uzun legacy görevler context'i hızlı doldurur — tanı ve yönet.
Belirtiler
- Önceki kararı unutur, tekrarlar, kendiyle çelişir
- İpi kaybeder, kalite düşer
- Lost in the middle: uzun context'in ortası göz ardı edilir
- Checkpoint: durumu özetle, commit at, özetle TEMİZ context başlat
- Handoff: sonraki oturum/agent'a devir notu — ne bitti, ne kaldı, kararlar
- Geri sarma: daha derine kazma; son sağlam checkpoint'e dön
Kurumsal hafıza
Bilgi kişinin kafasında değil kurumda biriksin. Her oturum sıfırlanır — kalıcı olan tek şey repo'ya yazılandır.
Kararların NEDEN'i
Sadece "ne yapıldı" değil — neden böyle seçildi yazılır. Sonraki agent kararı yeniden tartışmaz.
Bug → kural
Bug düzelince kök nedeni bir kurala/nota çevir → bir dahaki sefere yapısal olarak önlenir.
Devir belgeleri
Ne bitti, ne kaldı, hangi kararlar alındı. Ayrılmaya dayanıklı kurumsal süreklilik.
Bileşik mühendislik
Her hata bir kurala dönüşür (CLAUDE.md / skill) → bilgi zamanla birikir, kaybolmaz.
Tuzaklar ve sorumluluk
Doğrulanmamış kabul
Çıktıyı test/review etmeden "çalışıyor" varsaymak.
Aşırı kapsam
Tek prompt'a koca özellik yükleyip kontrolü kaybetmek.
Context kirlenmesi
Dolmuş/çelişkili context'te akıl yürütmenin bozulması.
Kendinden-emin-ama-yanlış
İkna edici tonlu yanlış devama güvenmek (halüsinasyon).
Planı atlama
Spec/plan adımını atlayıp doğrudan koda dalmak.
Aşırı bağımlılık beceriyi köreltir; kolay diye sorgusuz kabul. Keskin kal, her şeyi incele.
Geliştirme döngüsünde AI
AI tek geliştiricinin aracı değil — tüm geliştirme döngüsünün parçası. Headless/subagent modunda pipeline'a girer.
PR review otomasyonu
Subagent / headless agent diff'i inceler, riskleri işaretler.
Issue triage
Gelen issue'ları sınıflandır, etiketle, doğru ekibe yönlendir.
Commit & changelog
Anlamlı commit mesajı + sürüm changelog'u otomatik üretir.
CI'da headless agent
Tek-seferlik Claude Code: kontrol, düzeltme, güvenlik taraması.
AI = bir pipeline aşaması
PR açılınca headless Claude Code CI'da koşar → review + güvenlik taraması + lint → bulguları doğrudan PR'a yazar. Tıpkı build/test gibi otomatik bir adım olur.
AI ile kod yazmak ≠ içinde AI olan ürün
İleri seviye: artık AI aracın değil, ürünün içinde. Üründen LLM çağırmak, araç vermek, agent döngüsü kurmak.
API entegrasyonu
Üründen LLM API'sini çağır — yanıtı akışa kat.
Araç verme
Ürünün AI'ına gerçek araçlar (fonksiyon) tanımla.
Basit agent
Ürün içinde düşün→araç→gözle döngüsü kur.
Eval & gözlem
Kaliteyi ölç + prod'da izle. Deploy koşulu = eval.
Kurulum ve Saha
Teoriden uygulamaya: herkes çalışır halde ayrılsın, ekip standartlaşsın, dönüşüm ölçülsün.
Ortam kurulumu
Hands-on. Herkes kendi makinesinde kurulu + auth'lu bir ortamla çıkar — saha bundan sonra başlar.
Claude Code
npm i -g @anthropic-ai/claude-code · Node gerekir. Windows: native ya da WSL 2 — projenin yaşadığı yere kur.
Kurumsal hesap
Plan + API key dağıtımı + yetki + geliştirici başına harcama limiti. Tek noktadan yönetilir.
git + Node
Terminal, git ve Node kontrolü. Agent'ın elleri bunlara dayanır — önce hepsi çalışır olmalı.
PostgreSQL
PostgreSQL kurulumu + örnek DB. C2'deki ilk gerçek görev bunun üzerinde çalışır.
VS Code
Eklenti, CLI ile aynı settings.json ağacını okur → izin / hook / MCP tutarlı.
Çıktı
Herkeste Claude Code kurulu + auth'lu; git + Node + psql + VS Code bağlı bir ortam.
Birlikte kod yazıyoruz
Standart döngüyü (B2) gerçek bir mini görevde uçtan uca yaşat: brief → plan → uygula → test → commit.
Gerçek mini iş
Oyuncak değil; küçük ama gerçek bir iç görev seç.
Kodu oku
İlgili kodu oku, bağlamı anla, soru sor.
Planı incele
Plan modu → ilk artifact kod değil; planı sen onayla.
Küçük adımlar
Artımlı uygulama, her hamlede gözle.
Test koştur
Çıktıyı kanıtla; "çalışıyor" değil test sonucu.
Commit et
Atomik commit; git'te incelenebilir diff.
Canlı demo: 10 dakikalık döngü
Gerçek bir repoda ekranda koşan tur. Her faza tıkla: ne yazarsın, AI ne yapar, ekranda hangi kanıt görünür. (B2 iş akışının canlı hali.)
İki uygulamalı egzersiz
Aynı döngüyü iki rotada bizzat uygula: sıfırdan (greenfield) ve mevcut kod üstünde (brownfield). Okuyarak değil yaparak.
Küçük .NET endpoint’i — brief→plan→TDD→doğrula
- Brief: tek cümle + kabul kriteri (“geçersiz IBAN 400 döner”).
- Plan: plan modu; kod yazılmadan adımları onayla.
- TDD: önce başarısız test, sonra geçecek en küçük kod (TDD = test-önce).
- Doğrula: testleri koştur + endpoint’i gerçek istekle dene, çıktıyı gör.
Eski (legacy) fonksiyona karakterizasyon testi yaz
- Önce davranışı testle: karakterizasyon testi (mevcut çıktıyı kilitleyen test) yaz.
- Yeşili al: test mevcut davranışı geçer — güvenlik ağı kuruldu.
- Güvenle değiştir: yeniden düzenleme (refactor); test kırılırsa fark anında görünür.
- Disiplin: brownfield = B4/B6; küçük diff, her adımda doğrula.
Ekip standardizasyonu
Bireysel kullanımdan ortak iş akışına: değer araçta değil, ekibin paylaştığı standartta.
Ortak komut seti
Paylaşılan slash komutları — herkes aynı dili konuşur.
Paylaşılan skills
Ekip playbook'u: yeni endpoint, migration, PR checklist.
PR akışında AI
Review / triage döngüye girer — AI bir pipeline aşaması.
Küçük iç araç
Egzersiz: gerçek, küçük bir iç araç uçtan uca yapılır — döngü kasları çalışır.
Legacy repo haritası
Egzersiz: gerçek KODA legacy reposunun haritasını çıkar (brownfield · B4/B6 disiplini).
Başarı ölçümü & yol haritası
Programı etkinlik değil dönüşüm olarak yönet: benimsemeyi Azure DevOps verisine bağla ve ölç.
Kurulu + akıcı
Ortam hazır, döngü günlük işte.
Standart oturmuş
Ortak skills + PR'da AI yerleşik.
Ölçülen etki
Metrikler trende oturur.
Claude Code Ustalığı
Aracı bir profesyonel gibi sürmek: context'i yönet, devret, hatırlat, otomatikleştir.
Terminal neden daha verimli
A4'te "neden agent" dedik; burada "neden terminalde pratikte daha hızlı". Asıl kaldıraç: tek yerde tüm döngü + otomasyon.
Tek döngü
Oku → yaz → çalıştır → test → git, hepsi tek yerde. Kopyala-yapıştır vergisi yok.
Gerçek araçlar
Dosya · bash · git · web · MCP — agent döngüyü kendi kapatır.
Headless
TTY'siz koşar → CI · cron · pre-commit · GitHub Action.
Composable
Unix pipe / script ile birleşir; bir komutun çıktısı diğerine girer.
Tüm repo context
Sadece açık dosyayı değil, kod tabanının tamamını görür.
İzin + hook
Tehlikeli aksiyon deterministik bloklanır → güvenli otomasyon.
Attention ve O(n²) maliyeti
Context neden tükenir + pahalanır? Attention sekans uzunluğunda ~O(n²) — her token diğer tüm token'lara bakar. Bu yüzden /compact, handoff, memory (D3–D6) şart.
Context'i temizle: /compact
Context kirlenince (tekrarlar · eski tool çıktıları · çözülmüş konular) kalite düşer. /compact geçmişi damıtır: kararlar + durum + sonraki adım kalır, gürültü gider.
Oturum devri: HANDOFF.md
Context dolunca ya da iş duraklarken durumu tek dosyaya yaz → taze oturum kaldığı yerden devam etsin. Her maddenin bir nedeni var — tıkla.
LLM ile empati
Model senin niyetini değil, yalnız context'i okur — stateless, hafızasız. Prompt'u taze bir agent için yaz; kafandakini context'e dök. (compact + handoff bunun için.)
Memory sistemi
AI unutur, repo/vault unutmaz. Bilgi katmanlara yazılır; taze oturum doğru katmanları otomatik yükler, gerisini sen çekersin.
Plugin & skill seti
Skill = tekrar eden uzmanlık playbook'u (ihtiyaç anında yüklenir); plugin = paketlenmiş skill + hook + MCP. Aşağıdaki, fiilen kullandığım set — kendi ihtiyacına göre seç.
- vault-memory — not tabanında ara (MCP)
- handoff — oturum devri
- context-mode — büyük çıktıyı sandbox'ta işle
- superpowers — brainstorm · TDD · debug · plan
- gsd-* — faz: plan→execute→verify
- orkestra — tmux'ta paralel worker
- code-review · simplify
- verify — gerçek app'te doğrula
- security-review
- adven — adventom görev köprüsü
- claude-in-chrome — tarayıcı
- MCP: Gmail · Drive · Canva
Prompt injection & güvenlik
Jailbreak
Guardrail'i aşıp modeli kısıtlı davranışa zorlama.
Data exfiltration
Agent'ı hassas veriyi sızdırmaya kandırma — örn. saldırgan URL'sine tool çağrısı.
Tool-abuse zinciri
Enjekte talimat → agent araçlarını zararlı amaçla kullanır.
AI uygular,
mühendis düşünür.
İş bitiren AI — ama sorumluluk her zaman insanda. Doğrulayamıyorsan gönderme.
Faz 1 · Benimseme
Terminal agent'ı + ekip standardı günlük akışa girer.
Faz 2 · AI'lı ürün
API · tool use · agent · eval — içinde AI olan ürünler.