AI Coding Survival Notes — 6 Ay Claude Code Deneyimimden
8 yıl kisisel yazilimlarimi gelistirdim (backend odakli), son 6-7 ay yoğun Claude Code kullandim. Iste yasadigim deneyimlerim
1. Dil Seçimi: Popüler + Strict
LLM’ler training data’sı çok olan dillerde iyi. Ama aynı zamanda compiler’ı sert olan dili seç.
Neden? Hata runtime’da değil, compile time’da patlasın. Agent hata yaptı → compiler bağırdı → agent düzeltti. Dynamic dillerde hatalar gizleniyor, birikip patlıyor.
Swift 6, TypeScript (strict mode) — bunlar iyi çalışıyor.
2. Feedback Loop Her Şey
Her değişikliği anında test ediyorum. Compiler geçmeden ilerleyemiyorum.
“Çalışıyor gibi görünüyor” tuzak.
Gerçek ilerleme: Çalışıyor + compiler geçiyor + test geçiyor.
Swift 6’nın concurrency kontrolü burada çok işe yarıyor — hataları otomatik yakalıyor. Runtime’da gizlenen hata = production’da crash demek. O yüzden mümkün olduğunca compile time’a çekiyorum.
Önemli: Olay sadece type kontrolü değil, uygulamanın çalışması. Misal, TypeScript’te çok fazla type hatası gelince süreç yavaşlıyor. Önce çalıştır, sonra type’ları düzelt.
3. Discriminated Union > Optional
Optional koyunca “null olabilir” diyorsun, ama sistem patlamıyor. Sonra yeni feature ekliyorsun, optional olduğu için eski yerler güncellenmeden devam ediyor. Unutuluyor.
Discriminated union + switch kullanınca yeni case eklediğinde compiler her yerde patlatıyor. “Coupling kötü” derler ama compiler-level coupling iyi gorebildigin iliski iyidir.
4. Shared Helper Tuzağı
Ortak helper değiştirince 5 feature patlıyor. Maintenance kabusuna dönüyor.
Benim yaklaşım: feature-isolated. Her feature kendi helper’larını taşısın. Tekrar var mı? Evet. Ama bir yeri değiştirince sadece o yer etkileniyor.
Sembol amaca odaklı olsun. Her sembolün net bir amacı olsun — aracı şeyler, buffer’lar değil. Bazen gerekiyor, ama force etmiyorum.
5. Workflow: Ses + Referans + Protocol-Firstå
- Feature’ı sesli anlatıyorum (kendi yaptığım dictation aracı — AI + SPM Swift ile, Xcode kullanmadan, Swift bilmeden)
- “Alfred gibi olsun, Raycast’ın şu kısmı gibi” diyorum
- Önce protocol/interface yazıyorum, implementation sonra
- AI’a bütün context’i tek seferde veriyorum
- AI’a diagram çizdiriyorum — koddan görsel çıkarıyor, ben oradan anlıyorum “tamam anladı beni”
Kendi context’imi saklıyorum. Neden? Sonra “bak ben şunu söylemiştim, nasıl yapmamız lazımdı?” diye sorabilmek için. Düşünce sürecimi aktarıyorum ki sonra geri dönebilmek kolay olsun.

6. UI: Tasarlamıyorum, Tarif Ediyorum
Figma yok. “Şunun gibi, bunun gibi, birleştir” diyorum. Güzel çıkarsa devam, çıkmazsa yeni deneme.
Fixing’e saatler harcamak tuzak. Eskiden çok denerdim, çok vakit kaybettim.
UI’ı birine (ya da AI’a) bağlamak bana rahatsız edici geliyor. Elimle çizeyim tarzı değilim — daha çok sesli tarif ediyorum, referans gösteriyorum.
Bu şekilde konuşarak tarif ediyorum, AI brief çıkarıyor, ben bakıyorum “anladı mı?”. Anladıysa devam.


Mesela sesli anlattığımda AI bana şöyle bir brief çıkarıyor:
╔══════════════════════════════════════════════════════════════════════════════╗
║ CLAUDE SESSIONS - FEATURE BRIEF ║
╠══════════════════════════════════════════════════════════════════════════════╣
║ MODÜL: Sources/Modules/ClaudeSessions/ ║
║ BOYUT: Clipboard gibi büyük, bağımsız modül ║
║ KAYNAK: Lokal JSONL session dosyaları (Claude Code) ║
╠══════════════════════════════════════════════════════════════════════════════╣
║ UI LAYOUT: ║
║ ┌───────────────────────────────────────────────────────────────────────┐ ║
║ │ ① Search Sessions... ③ ? │ ║
║ │ ② @p project @d today >10 turns <1h recent │ ║
║ ├─────────────────────────────┬─────────────────────────────────────────┤ ║
║ │ ④ [Session Title/First Msg] │ ⑩ PREVIEW PANEL (DEĞİŞEN VIEW) │ ║
║ │ ⑧ optionOS • 30 min ago ⑦ │ │ ║
║ │ ⑤ [Session 2...] │ View 1: Conversation │ ║
║ │ ⑧ claude-code • 1h ago │ ┌─────────────────────────────────┐ │ ║
║ │ ⑥ [Session 3...] │ │ [User] Mesaj içeriği... │ │ ║
║ │ ⑧ web-app • 2h ago │ │ [Agent] <thinking>...</thinking>│ │ ║
║ │ │ │ [Agent] Yanıt... │ │ ║
║ │ │ │ [Tool: Read] file.swift │ │ ║
║ │ │ └─────────────────────────────────┘ │ ║
║ │ │ │ ║
║ │ │ View 2: File Changes │ ║
║ │ │ (Git diff style - touched files) │ ║
║ │ │ │ ║
║ │ │ ⑪ User: 5 | Agent: 8 | Total: 13 │ ║
║ │ │ ⑫ Last updated: 31 seconds ago │ ║
║ ├─────────────────────────────┴─────────────────────────────────────────┤ ║
║ │ ⑨ ↑↓ navigate ⇧↑↓ highlight Tab batch ⌘C copy ↵ paste ▾ │ ║
║ └───────────────────────────────────────────────────────────────────────┘ ║
╠══════════════════════════════════════════════════════════════════════════════╣
║ NAVIGATION: ║
║ ↑↓ → Session listesinde gezinme (sol panel) ║
║ → → Preview panel'e focus (sağ panel) ║
║ ← → Session listesine geri dön ║
║ ⇧↑↓ → Multi-select (highlight range) ║
║ Tab → Batch'e ekle (conversation items) ║
║ ⌥1/2/3/4 → View değiştir (Conversation/FileChanges/TBD/TBD) ║
║ ⌥Space → Preview panel büyüt/küçült ║
║ ⌘C → Seçili item(lar)ı kopyala ║
║ ↵ → Paste (strategy ile) ║
╚══════════════════════════════════════════════════════════════════════════════╝
Sonra AI dosya yapısını çıkarıyor — ben buna placement diyorum:
PLACEMENT
Sources/Modules/ClaudeSessions/
├── Features.swift ← TÜM USER-FACING (protocols, types, state, keyboard)
├── Core.swift ← Session parsing, JSONL reader, search engine
├── Module.swift ← Feature protocol, MenuBar registration
└── UI/
├── Browser.swift ← AllFeatures conform, business logic
├── Panel.swift ← FloatingPanel (NSPanel wrapper)
├── Native.swift ← NSViewRepresentable bridges
└── Views.swift ← SwiftUI Views
Doğru anladım mı? Features.swift'e başlayayım mı?
Tek atışta yazıyor. Placement onaylandıktan sonra AI 3-4 dosyayı paralel yazıyor. Her biri ~900 satır. Tek seferde. Context window hızla doluyor ama iş bitiyor.

7. Hooks/Slash Commands: Tarzına Bağlı
Ben sürekli mimari değiştiriyorum, deneme yanılma yapıyorum. Hooks benim için maintenance yükü.
Ama mimarin sabit, “çalışıyorsa dokunma” kafasındaysan → hooks mükemmel.
Olay teknolojinin gücü değil, senin tarzınla eşleşmesi.
Ben burst çalışıyorum — bir anda hype’lanıyorum, ilk 2-3 saat inanılmaz yüksek verimli flow döngüsü. O yüzden o anlarda ses kaydı açıp bütün feature’ı anlatıyorum, resme noktalar koyuyorum, detayları topluyorum. Hepsini tek seferde AI’a veriyorum.
8. İçgüdü ve Taste
8 yıldır yazılım geliştiriyorum. Architecture’da judgment, taste, içgüdü — bunlar valid.
Görünce hissediyorum artık: “ha burada bir şey uyumsuz.” İçgüdüme belli kısmı salıyorum. Keskin kurallar olmaması lazım.
AI çıktısına bakınca da aynı şey — kötü çıktı, kötü kullanıldı anlamına gelmiyor. Ama içgüdü sana “dur bir dakika” diyorsa, dur.
Son Söz
Burst çalışan için farklı, methodical için farklı. Kendi rhythm’ini tanı, tool’u ona göre kullan.
Bu post benim deneyimim. Senin için farklı çalışabilir. Ama umarım bir şeyler işe yarar.
6-7 ay, günde ortalama 8-10 saat Claude Code. Dictation, hooks, slash commands, hepsini denedim. Bu çıktı.