Lovable, Cursor, Claude ve Codex aynı geliştirme sürecinde nasıl konumlanıyor?
Ben bu araçları ‘hangisi en iyi?’ diye sıralamıyorum. Aynı ürün döngüsünde farklı iş tiplerine yerleştiriyorum. En önemli katman model seçimi değil; görev sınırı, kaynak doğrusu ve acceptance sistemi.
AI coding araçlarını karşılaştıran içeriklerin çoğu tek bir soruya odaklanıyor: hangisi daha iyi? Benim gerçek çalışma hayatımda bu soru giderek daha az işe yarıyor. Çünkü Lovable, Cursor, Claude ve Codex'i aynı anda kullanırken asıl problem bir kazanan seçmek değil; hangi işi kime vereceğimi belirlemek.
Aynı görevi dört araca birden verirseniz dört farklı mimari, dört farklı yorum ve dört farklı ‘tamamlandı’ tanımı elde edebilirsiniz. Bu hız değil. Koordinasyon borcu.
AI tool stack'in değeri araç sayısından değil, araçların birbirine basmadığı görev sınırlarından geliyor.
Önce bir yanlışı düzelteyim: bunlar sabit roller değil
Araçlar çok hızlı değişiyor. Bugün bir modelin zayıf olduğu alan birkaç hafta sonra güçlenebilir. Dolayısıyla aşağıdaki dağılım ‘Claude bunu yapamaz’, ‘Codex sadece şunu yapar’ gibi kalıcı bir ürün karşılaştırması değil. Benim mevcut çalışma sistemimde sürtünmeyi azaltan rol dağılımı.
const principle = { chooseBy: "task shape", notBy: "favorite tool",};Benim zihinsel modelim: fikirden production'a dört farklı iş tipi
Bir ürün özelliği genellikle tek bir ‘kodlama işi’ değil. Keşif, tasarım, implementation, review ve acceptance gibi farklı bilişsel işleri var. Araçları bu iş tiplerine göre ayırdığınızda rekabet etmeyi bırakıp pipeline'ın parçalarına dönüşüyorlar.
type WorkMode = | "explore" | "shape" | "implement" | "audit" | "verify";Lovable: fikri görünür hale getirme ve UI üzerinde hızlı iterasyon
Lovable'ı en çok bir fikri konuşmaktan çıkarıp ekranda tartışılabilir hale getirmek istediğimde değerli buluyorum. Landing page, yeni bir ürün kabuğu, component düzeni veya görsel yön gibi konularda hızlı geri bildirim döngüsü sağlıyor.
Bu benim için önemli çünkü bazı ürün kararları kod veya metin üzerinden tartışılamıyor. Ekranı görmek gerekiyor. Hiyerarşi yanlış mı? Çok fazla kart mı var? CTA kayboluyor mu? Mobilde yapı anlamsızlaşıyor mu? Görsel çıktıyı erken görmek ürün kararını hızlandırıyor.
const lovable = { strongestUseForMe: [ "rapid UI exploration", "landing pages", "layout iteration", "visual product shaping", ], danger: "letting a fast prototype silently become architecture",};Tehlike de aynı yerde: hızlı oluşturulan çözümü sırf çalışıyor diye canonical architecture kabul etmek. Ben Lovable çıktısını gerektiğinde production koduna bağlarım, ama önce ürün ve repository gerçekliğiyle uyumunu kontrol ederim.
Cursor: repository içindeki günlük uygulama döngüsü
Cursor benim için özellikle mevcut repository bağlamında dosyalar arasında çalışırken doğal bir uygulama yüzeyi. Küçük ve orta kapsamlı değişiklik, ilgili dosyaları keşfetme, mevcut pattern'i izleme ve hızlı düzenleme döngülerinde kullanışlı.
Ama repo-aware olmak otomatik olarak product-aware olmak anlamına gelmiyor. Agent kodu görebilir; neden o kodun öyle olması gerektiğini bilmiyor olabilir. Bu yüzden prompt'ta yalnızca görev değil korunacak kararları da açık tutuyorum.
const cursorTask = { goal: "fix the current behavior", preserve: ["existing design", "data contracts", "route semantics"], avoid: ["new dependency", "parallel architecture", "unrequested redesign"],};Claude: problemi yeniden çerçeveleme ve zor debugging
Claude'u özellikle problem birkaç başarısız denemeden sonra bulanıklaştığında, mevcut çözümü sorgulatmak veya farklı bir kök neden analizi almak istediğimde değerli buluyorum. Aynı bug'ı üçüncü kez patch'lemek yerine bazen ‘neden bu sistem sürekli buradan kırılıyor?’ diye daha geniş bakmak gerekiyor.
Bu rol implementasyon yapamayacağı anlamına gelmiyor. Yapabilir. Ama benim sistemimde güçlü olduğu noktayı yalnızca kod miktarıyla ölçmüyorum; problemi yeni bir modelle açıklayabilmesi de değer.
const claudePrompt = `Do not patch yet.Inspect the current behavior and previous fixes.Explain the most likely root cause.Show which assumption in the current architecture is wrong.Then propose the smallest durable fix.`;Codex: engineering görevleri, audit ve kontrollü uygulama
Codex'i repository üzerinde daha mühendislik ağırlıklı görevlerde, kapsamı net uygulamalarda, audit'lerde ve değişiklik sonrası doğrulama işlerinde kullanmayı seviyorum. Özellikle görevi preflight, implementation ve acceptance şeklinde bölmek burada iyi çalışıyor.
Benim için değerli taraflardan biri çıktıyı ‘kod yazıldı’ seviyesinde bırakmayıp hangi doğrulamaların gerçekten yapılabildiğini ayırmak. Typecheck geçti mi? Build geçti mi? Browser doğrulandı mı? Production görüldü mü? Gerçek cihaz var mı?
const codexFlow = [ "verify repo and branch", "inspect existing architecture", "make scoped change", "run available checks", "report unverified layers explicitly",];Asıl sistem: hepsinin üzerinde GitHub
Bu dört araç arasında en önemli ‘araç’ aslında bir AI ürünü değil: GitHub. Çünkü farklı agent'lar farklı worktree, local state veya preview üretebiliyor. Kaynak doğrusu olmazsa kimin yaptığı değişikliğin gerçek olduğunu takip etmek zorlaşıyor.
Agent değişebilir. Kaynak doğrusu değişmemeli.
const sourceOfTruth = { repository: "GitHub", canonicalBranch: "explicit", production: "deployed commit",};Neden aynı görevi paralel dört agent'a vermiyorum?
Paralel agent kullanımı bazı araştırma ve alternatif çözüm görevlerinde yararlı olabilir. Fakat implementation'da dört agent'ın aynı kod tabanına farklı yönlerden saldırması merge yükü ve mimari tutarsızlık üretebilir.
Ben paralelliği daha çok bağımsız bilişsel görevlerde kullanmayı mantıklı buluyorum: biri architecture audit yapar, biri mevcut diff'i review eder, biri UI alternatifini araştırır. Ama tek feature'ın canonical implementation'ı için tek bir sorumlu akış tutmak daha temiz.
| Paralel kullanım | Bana göre |
|---|---|
| İki bağımsız audit | İyi |
| UI için alternatif yaklaşım | İyi |
| Aynı dosyayı iki agent değiştirsin | Genellikle kötü |
| Bir agent yazsın, diğeri bağımsız review etsin | İyi |
| Dört agent aynı feature'ı implemente etsin | Gereksiz koordinasyon |
Bir agent'ın çıktısını diğerine nasıl veriyorum?
En kötü yöntem ikinci agent'a ‘Claude bunu yaptı, kontrol et’ demek. Çünkü bu ifade ilk çözümü anchor haline getiriyor. İkinci agent da farkında olmadan aynı varsayımları kabul edebilir.
Daha iyi yöntem requirements ve diff'i bağımsız biçimde verip önce uyuşmazlık bulmasını istemek.
Do not assume the previous implementation is correct.
Compare:1. the requested behavior2. the current code3. the actual diff
Report mismatches before proposing changes.Tool switching'in gizli maliyeti
Bir problemi çözerken her 15 dakikada bir başka AI aracına geçmek iyi bir ensemble sistemi değil. Çoğu zaman sabırsızlık. Her araçta context'i tekrar kuruyorsunuz, repository state'i yeniden anlatıyorsunuz ve farklı cevap stiline adapte oluyorsunuz.
Bu nedenle araç değişimini ‘cevabı beğenmedim’ refleksiyle değil, iş tipi gerçekten değiştiğinde yapmaya çalışıyorum.
function switchTool(currentTask: Task) { return currentTask.modeChanged || currentTool.cannotAccessRequiredContext;}Örnek: bir mobil modal bug'ı
Diyelim Android'de klavye açılınca ekleme modalı eziliyor. Lovable'a ‘daha güzel modal yap’ demek problemi kaçırabilir. Cursor'a dosya seviyesinde birkaç CSS değişikliği yaptırmak semptomu azaltabilir. Claude'a birkaç başarısız fix sonrasında viewport/keyboard modelini analiz ettirmek kök nedeni açabilir. Codex'e de doğrulanmış kök neden üzerinden repository genelinde aynı modal pattern'lerini audit ettirmek mantıklı olabilir.
Burada araçların sırası sabit değil. Önemli olan problemin aşaması değiştikçe kullanılan iş modunun değişmesi.
const bugLifecycle = [ "reproduce", "find shared cause", "fix canonical primitive", "audit affected surfaces", "verify on real device",];Örnek: sıfırdan landing page
Yeni bir kişisel site veya ürün landing'i gibi görevde ise başlangıç ağırlığı değişebilir. Önce Lovable ile görsel direction ve bilgi hiyerarşisini hızlıca test etmek, sonra canonical GitHub repository üzerinden detayları sıkılaştırmak daha mantıklı olabilir.
Burada kritik nokta preview ile production repository arasında görünmez bir ayrışma yaratmamak. Tasarım kararı kabul edildiğinde canonical kodun nerede yaşadığı net olmalı.
Her araç için aynı preflight
Araç değişse bile bazı kurallar değişmiyor. Özellikle repository üzerinde yazma yetkisi olan agent için ilk sorular hep aynı.
pwdgit remote -vgit branch --show-currentgit statusgit log -1 --onelineBu kontroller model zekâsıyla ilgili değil. Operasyon güvenliğiyle ilgili.
Her araç için aynı completion standardı da olmamalı
Lovable'da görsel prototip için başarı kriteri ‘direction doğru mu?’ olabilir. Repository fix'inde typecheck ve build gerekir. Mobil bug'da gerçek cihaz acceptance gerekebilir. Tool değil, task completion standardını belirler.
function requiredVerification(task: Task) { if (task.kind === "visual-exploration") return ["human-review"]; if (task.kind === "web-fix") return ["typecheck", "build", "browser"]; if (task.kind === "native-bug") return ["build", "real-device"];}Benim mevcut görev dağılımım
| İş | İlk düşündüğüm araç / yaklaşım |
|---|---|
| Hızlı UI direction | Lovable |
| Mevcut repo içinde küçük/orta implementation | Cursor veya Codex |
| Kök neden / alternatif sistem analizi | Claude veya Codex |
| Diff / architecture audit | Codex veya bağımsız Claude review |
| Görsel acceptance | Browser + insan gözü |
| Mobil acceptance | Gerçek cihaz |
| Kaynak doğrusu | GitHub |
Bu tablo ürün güncellemeleriyle değişebilir. Değişmemesi gereken şey ise görev rolünü önce tanımlamak.
En önemli ders: AI stack değil, çalışma protokolü kuruyorum
Bir dönem doğru kombinasyonu bulursam sürecin kendiliğinden hızlanacağını düşünmek kolaydı. Aslında araç kombinasyonu ikincil. Repo doğrulama, net scope, küçük diff, bağımsız review ve acceptance yoksa dört güçlü araç yalnızca daha hızlı karmaşıklık üretir.
En iyi AI coding stack, hangi agent'ın ne zaman durması gerektiğini de tanımlar.
Sonuç
Lovable, Cursor, Claude ve Codex benim için birbirini tamamen ikame eden dört ürün değil. Aynı geliştirme sisteminde farklı bilişsel yükleri taşıyabilen araçlar. Bazen roller çakışıyor, bazen biri diğerinin işini daha iyi yapıyor. Bu normal.
Benim sabit tuttuğum şey araç seçimi değil: ürün kararı insanda, kodun kaynak doğrusu GitHub'da, her görev sınırlandırılmış ve ‘done’ kelimesi doğrulama seviyesiyle birlikte söyleniyor.
const aiWorkflow = { productAuthority: "human", codeTruth: "GitHub", toolChoice: "task-dependent", implementation: "scoped", review: "independent-when-needed", done: "verified-not-declared",};AI ile Ürün İnşa Etmek
Vibe coding'den agent orkestrasyonuna, Lovable prototipinden güvenli AI workflow'una: hız kazanırken ürün ve mimari kontrolünü kaybetmemek üzerine bir dizi.