Çoğu Yazılım Neden Tersten İnşa Edilir
Çoğu yazılım tersten inşa edilir.
Bu, insanların yanlış şeyleri ödüllendirmesi nedeniyle olur.
Özellikler ilgi çeker. Mimari çekmez. Duyurular ilgi çeker. Dokümantasyon çekmez. Yeni yetenekler ilgi çeker. Bakım ilgi çekmez.
Ekipler görünür kısımlarla başlar. Temeli ihmal ederler.
Yaygın yazılım soruları yanlış aşamaya odaklanır:
- Hangi özellikleri geliştirmeliyiz?
- Panel nasıl görünmeli?
- Hangi entegrasyonları desteklemeliyiz?
- Bir sonraki duyurumuz ne olabilir?
Bu sorular çok erken sorulur. Özellikleri geliştirmeden önce sistemi anlamalısınız.
Bir ev inşa ettiğinizi düşünün. Boya renkleriyle başlamazsınız. Şunlarla başlarsınız:
- Temel
- Yapı
- Tesisat
- Elektrik sistemi
Görünür detaylar, görünmez sistemlere bağlıdır. Yazılım da aynı şekilde çalışır.
Kullanıcı arayüzü görünürdür. Mimari değildir. Özellikler görünürdür. Onları destekleyen sistemler değildir.
Yazılımın başarılı olup olmayacağını sistemler belirler.
Özellikler münferit sorunları çözer. Sistemler ise problem kategorilerini çözer. Özellikler işlevsellik sağlar. Sistemler tutarlılık sağlar.
Özelliklere odaklanırsanız karmaşıklık artar. Sistemlere odaklanırsanız karmaşıklık düzene girer.
Dokümantasyon gerçeği ortaya koyar. İyi tasarlanmış bir sistemin net bir dokümantasyonu vardır. Kötü tasarlanmış bir sistem ise uzun, karmaşık açıklamalara ihtiyaç duyar. Eğer bir iş akışı sayfalarca talimat gerektiriyorsa, muhtemelen sorun iş akışının kendisindedir.
Kullanıcılar münferit özellikleri değil, sistemleri deneyimlerler.
Kullanıcılar şunları görmez:
- Kimlik doğrulama
- API'ler
- Veritabanı sorguları
- Dağıtım süreçleri
Kullanıcılar şunları deneyimler:
- Güvenilirlik
- Hız
- Sadelik
- Güven
Bu duygular tüm sistemden gelir.
Tersten inşa etmek anlaşılması kolaydır. Özellikler bir ekran görüntüsüne sığar. Bir özelliği duyurabilirsiniz. Bir sistemi ise kolayca duyuramazsınız.
Görünmez iş, en büyük değeri yaratır.
Yaklaşımımı değiştirdim. Bir projenin hangi özelliklere ihtiyacı olduğunu sormayı bıraktım. Bunun yerine hangi sistemi inşa ettiğimi sormaya başladım.
Bir sistem kısıtlamalar oluşturur. Bir sistem öncelikler belirler. Bir sistem yön tayin eder.
Temel mevcut olduğunda, özellikleri geliştirmek kolaylaşır.
Başarılı ürünler sadece çok sayıda özelliğe sahip değildir. Düşünülmüş sistemlere sahiptirler. İş akışları doğal hissettirir. Deneyim ise planlı hissettirir.
Görünür parçalarla başlamayı bırakın. Önce sistemi inşa edin. Özelliklerin ondan doğmasına izin verin.
Kaynak: https://dev.to/stinklewinks/why-most-software-is-built-backwards-46i