Apakah ada pola anti yang menggambarkan sistem perangkat lunak yang dikembangkan secara historis di mana banyak pengembang baru saja menambahkan fitur baru ke sistem, tetapi tidak ada yang benar-benar mengawasi arsitektur secara keseluruhan atau refactor yang pernah dilakukan?
Saya pikir ini terjadi ketika manajemen / pelanggan meminta fitur baru secara terus-menerus dan tidak ada yang pernah melakukan refactor apa pun selain hanya menambahkan apa yang telah dilakukan pengembang lain sebelumnya.
Alasannya bisa juga karena pengembang hanya kewalahan dengan sistem perangkat lunak dan tidak benar-benar mengerti cara kerjanya saat ini dan kemudian hanya menambahkan / menempelkan kode-nya di akhir (alih-alih refactoring kode dan mengubahnya.)
Jadi seiring berjalannya waktu semakin sulit untuk mempertahankan sistem.
(Saya ingin tahu apakah ada gambar untuk pola anti semacam ini untuk membuatnya lebih jelas bagi siapa pun yang tidak memprogram - seperti mobil yang dibangun dengan hanya menambah lebih banyak fitur tanpa memikirkan desain keseluruhan. Seperti seseorang memiliki kebutuhan untuk menarik trailer saat mengendarai mundur dan kemudian seorang insinyur hanya mengelas bar derek ke bagian depan mobil. Pekerjaan selesai. Tapi sekarang cowl tidak terbuka lagi.)
Jawaban:
Anda mengacu pada hutang teknis .
Kita semua menghasilkan utang teknis dalam produk yang kita kembangkan seiring waktu; refactoring adalah salah satu cara yang sangat umum dan efektif untuk mengurangi utang teknis ini, meskipun banyak perusahaan tidak pernah membayar utang teknis mereka. Perusahaan-perusahaan ini cenderung menemukan perangkat lunak mereka sangat tidak stabil selama bertahun-tahun, dan hutang teknis menjadi begitu mengerikan sehingga Anda tidak dapat membayarnya secara bertahap, karena akan terlalu lama untuk membayarnya dengan cara itu.
Utang teknis memiliki istilah, karena mengikuti perilaku utang yang sama. Anda mendapatkan utang, dan selama Anda terus belanja (membuat fitur) dan tidak membayar utang itu, itu hanya akan tumbuh. Sama seperti utang, ketika terlalu besar, Anda sampai ke titik di mana Anda mungkin ingin menumpahkannya sepenuhnya dengan tugas-tugas berbahaya seperti penulisan ulang penuh. Juga seperti utang nyata, karena bertambah ke titik tertentu, itu menghambat kemampuan Anda untuk menghabiskan (membuat fitur) sama sekali.
Hanya untuk melemparkan istilah lain dalam campuran, kohesi mengacu pada seberapa baik suatu sistem, mikro ke tingkat garis, atau makro ke tingkat sistem, cocok bersama. Sistem yang sangat kohesif akan menyatukan semua bagiannya dengan sangat baik dan terlihat seperti seorang insinyur yang menulis semuanya. Referensi Anda di atas kepada seseorang yang hanya menempelkan kode mereka sampai akhir akan melanggar kohesi sistem itu.
Mengelola Hutang Teknis
Ada banyak cara untuk mengelola utang teknis, meskipun seperti utang nyata, pendekatan terbaik adalah membayarnya sesering mungkin. Sayangnya seperti utang nyata, kadang-kadang lebih baik untuk menambah lebih banyak untuk periode singkat, di mana misalnya waktu untuk memasarkan fitur dapat menggandakan atau melipatgandakan pendapatan Anda. Bagian yang sulit adalah menimbang prioritas yang bersaing ini serta mengidentifikasi kapan ROI utang tidak layak untuk fitur yang diberikan vs ketika itu.
Jadi kadang-kadang layak untuk menambah hutang untuk periode yang singkat, tapi itu jarang terjadi, dan seperti semua hutang, semakin pendek periode semakin baik. Jadi pada akhirnya (lebih disukai cepat ) setelah Anda mendapatkan utang teknis, Anda harus membayarnya, ini adalah pendekatan umum:
sumber
Deskripsi Anda cocok dengan Foote dan Yoder's Big Ball of Mud :
sumber