Küçük Projelerde “Overengineering” Hataları
Küçük Projelerde “Overengineering” Hataları
Küçük bir projeye başlarsın.
Ama daha ilk günden sanki milyonlarca kullanıcı gelecekmiş gibi davranırsın.
Katmanlar kurulur.
Soyutlamalar eklenir.
Gelecek senaryoları düşünülür.
Ve bir noktada fark edersin:
Proje ilerlemiyor.
İşte bu, küçük projelerde yapılan en yaygın hatalardan biri: overengineering.
Overengineering genelde iyi niyetle başlar
Kimse “gereksiz karmaşa yaratayım” diye yola çıkmaz.
Genelde niyet şudur:
• Doğru yapayım
• Temiz olsun
• Profesyonel dursun
Ama küçük projede “fazla doğru” olmak,
ilerlemeyi yavaşlatır.
Büyük sistemlerin refleksleri küçük projeyi boğar
Microservice mimarisi, event-driven yapılar, ileri seviye design pattern’lar…
Bunlar büyük ölçekli sistemler için güçlü çözümlerdir.
Ama küçük projede:
• Fazla dosya
• Anlaşılması zor yapı
• Geliştirme hızında ciddi düşüş
yaratır.
Küçük projede mimari güç değil, akış kazandırmalıdır.
“İleride lazım olur” en pahalı cümledir
Overengineering’in temel yakıtı budur.
• Henüz olmayan ihtiyaçlar
• Varsayılan senaryolar
• Tahmini problemler
Bunlar için bugünden çözüm üretmek,
küçük projede neredeyse her zaman yanlış yatırımdır.
Çünkü ihtiyaç gelince çözüm de değişir.
Soyutlama erken yapılınca gerçek sorun görünmez
Gerçek sorunlar, kod yazıldıkça ortaya çıkar.
Ama erken soyutlama:
• Gerçek ihtiyacı gizler
• Yanlış noktaya esneklik ekler
• Değişikliği zorlaştırır
Önce çalışan bir yapı,
sonra sadeleştirme çok daha sağlıklıdır.
Overengineering motivasyonu da düşürür
Proje ilerlemediğinde şunlar olur:
• “Bunu bitiremeyeceğim” hissi
• Sürekli refactor ihtiyacı
• Üretimden kaçma
Oysa küçük projeler:
• Hız kazandırmalı
• Öğretici olmalı
• Bitirilebilir hissettirmeli
Overengineering bunların hepsini bozar.
Ne zaman durman gerektiğini bilmek bir beceridir
Küçük projede doğru mimari şudur:
• En az açıklama gerektiren
• Okunabilir
• Tek bakışta anlaşılabilen
Bir şeyi anlatmak için uzun uzun konuşman gerekiyorsa,
muhtemelen fazla karmaşıktır.
Son söz
Küçük projelerde overengineering,
teknik bir hata değil,
kontrol ihtiyacının bir yansımasıdır.
Her ihtimali düşünmek değil,
doğru zamanda düşünmek ustalıktır.
Küçük projeler büyük sistemleri simüle etmek için değil,
öğrenmek, üretmek ve bitirmek içindir.
Bazen en profesyonel tercih,
bilinçli şekilde sade kalabilmektir.
ben de genelde özellikle MVP aşamasında projeleri en basit haliyle kodlama taraftarıyım🤝