Skip to content
projelere açık000%
Tüm yazılar
Ürün kararları7 Ağustos 2026 · 2 dk okuma

Yazı dizisi · Prototipten Production'a · Bölüm 5/6

Bir MVP ne zaman yeniden yazılmalı, ne zaman kurtarılmalı?

Kod çirkin olduğu için rewrite yapmam. Sistem mevcut ürün kararlarını artık güvenilir biçimde taşıyamıyorsa ve küçük düzeltmeler toplam maliyeti azaltmıyorsa rewrite değerlendirmeye başlarım.

Bir ürün birkaç ay hızlı geliştirildikten sonra doğal bir cümle ortaya çıkar: 'Bunu baştan yazsak daha kolay.' Bazen doğrudur. Çoğu zaman değildir. Rewrite yeni bir başlangıç hissi verdiği için çekicidir; ama mevcut ürünün öğrendiği bütün edge case'leri yeniden keşfetme maliyeti de getirir.

Kodun kötü görünmesi rewrite sebebi değildir. Sistemin değiştirilemez hale gelmesi olabilir.

Önce borcun türünü ayırıyorum

BorçRewrite gerekli mi?
Stil / isimlendirmeGenellikle hayır
Duplicate componentGenellikle hayır
Dağınık data accessÇoğu zaman aşamalı düzeltilebilir
Yanlış veri modeliBazen
Çelişen kaynak doğrularıÖnce canonical model kurulmalı
Temel platform yanlışlığıDaha güçlü rewrite adayı

Kurtarılabilir sistemin işaretleri

  • Core data modeli büyük ölçüde doğru.
  • Sorunlar belirli domain'lerde yoğunlaşıyor.
  • Route ve component'ler aşamalı değiştirilebiliyor.
  • Production davranışı ölçülebiliyor.
  • Migration sırasında eski ve yeni sistem bir süre birlikte yaşayabilir.

Bu durumda strangler yaklaşımı daha mantıklı olabilir: en problemli domain'i yeni modele taşı, eski katmanı parça parça emekli et.

txt
old system -> adapter -> new domain -> migrate consumers -> remove old

Rewrite adayının işaretleri

  • Core veri modeli ürünün bugünkü gerçekliğini ifade edemiyor.
  • Her feature aynı global state ve side effect ağına bağımlı.
  • Güvenlik sınırı mimariye sonradan eklenemiyor.
  • Platform seçimi ürünün temel ihtiyacını engelliyor.
  • En küçük değişiklik bile öngörülemez regresyon üretiyor.
  • Sistemin davranışını açıklayacak güvenilir test veya telemetry kurmak aşırı maliyetli.

Rewrite maliyetini eksik hesaplamayın

Yeni repository açmak maliyetin küçük kısmı. Gerçek maliyet auth, migration, eski kullanıcı verisi, ödeme durumu, deep link, SEO URL'leri, mağaza paketleri, analytics, edge case ve operasyon bilgisini yeniden taşımak.

ts
const rewriteCost =  implementation +  dataMigration +  regressionDiscovery +  parallelOperation +  userMigration +  releaseRisk;

Ürün hâlâ doğrulanmadıysa rewrite daha tehlikeli

Henüz product-market fit sinyali zayıfken mimariyi mükemmelleştirmek, bilinmeyen ürünü ikinci kez inşa etmek olabilir. Önce ürün riskini azaltmak gerekir.

Doğrulanmamış bir ürünü yeniden yazmak, belirsizliği daha temiz kodla yeniden üretmek olabilir.

Karar matrisi

ts
function decide({ coreModelWrong, securityBlocked, changeCost, productValidated }: Signals) {  if (!productValidated) return 'stabilize-and-learn';  if (coreModelWrong && securityBlocked && changeCost === 'extreme') return 'rewrite-candidate';  return 'incremental-rescue';}

Benim varsayılanım: kurtar

Rewrite'ı ispatlanması gereken seçenek olarak görüyorum. Önce audit, kaynak doğrusu, domain izolasyonu, performans ölçümü ve gereksiz feature temizliği. Bunlar yapıldıktan sonra sistem hâlâ her değişiklikte direniyorsa rewrite artık duygusal değil, kanıta dayalı karar olur.

  • MVP
  • Rewrite
  • Technical Debt
  • Architecture
  • SaaS

Yazı dizisi · 5/6

Prototipten Production'a

Çalışan bir MVP'yi güvenilir ürüne dönüştürmek: production kontrolü, modüler refactor, veri migration'ı, audit, rewrite kararı ve release gate'leri.

PROJELERE AÇIK · ÜRÜN VE SİSTEM MİMARI · DEVRALMA / STABİLİZASYON / OPERASYON · WEB · ANDROID · WINDOWS · AHMET CANAL

İletişim

Ürününüz sisteminden hızlı mı büyüdü?

Mevcut durumu, en büyük tıkanmayı ve istediğiniz sonucu yazın. Kapsamı birlikte netleştirelim.

Durum

Yeni danışmanlık ve proje işlerine açık.