Saya baru-baru ini tertarik pada praktik lincah dalam pengembangan perangkat lunak dan sejak itu saya telah melihat banyak artikel menunjukkan bahwa praktik ini memungkinkan untuk mengurangi biaya keseluruhan.
Logika di balik itu biasanya seperti ini: jika kebutuhan Anda berubah, Anda dapat mencerminkan perubahan ini di sprint backlog berikutnya dan ini akan menyebabkan pengurangan biaya, karena merancang fitur baru dan mengimplementasikannya berdekatan dalam hal waktu, sehingga biaya turun, menurut aturan terkenal bahwa nanti Anda perlu melakukan perubahan pada kebutuhan Anda semakin mahal untuk memenuhi persyaratan itu.
Tetapi proyek perangkat lunak menengah hingga besar itu rumit. Perubahan mendadak pada persyaratan tidak berarti Anda tidak perlu menyentuh bagian lain dari sistem Anda untuk memenuhi persyaratan itu. Dalam banyak kasus, arsitektur perlu dimodifikasi secara signifikan, yang juga berarti Anda harus mengimplementasikan kembali semua fitur yang bergantung pada arsitektur yang lebih lama. Jadi inti dari pengurangan biaya agak hilang di sini. Tentu saja jika persyaratan baru memerlukan bagian independen baru dari sistem, itu bukan masalah, arsitektur lama hanya tumbuh, tidak perlu dipikirkan kembali dan diterapkan kembali.
Dan sebaliknya. Jika Anda menggunakan air terjun dan tiba-tiba Anda menyadari bahwa persyaratan baru harus diperkenalkan, Anda dapat pergi dan mengubah desain Anda. Jika mengharuskan arsitektur yang ada diubah, Anda mendesain ulangnya. Jika tidak benar-benar mengacaukannya tetapi hanya memperkenalkan bagian baru dari sistem, maka Anda pergi dan melakukan semua pekerjaan, tidak ada masalah di sini.
Dengan itu, menurut saya sepertinya satu-satunya keuntungan pengembangan tangkas adalah fitur kerja yang lengkap dibangun di antara sprint, dan bagi banyak orang dan prjects ini tidak kritis. Selain itu, agile sepertinya menghasilkan arsitektur perangkat lunak yang buruk secara keseluruhan, karena fitur-fitur agak saling menampar satu sama lain, tim tangkas hanya peduli bahwa suatu fitur berfungsi, bukan bagaimana kerjanya. Ini tampak seperti itu ketika sistem tumbuh dalam kompleksitas dengan waktu, praktik pengembangan lincah sebenarnya meningkatkan kekacauan dalam arsitektur produk secara keseluruhan, sehingga akhirnya menghasilkan biaya yang lebih tinggi, karena akan semakin sulit untuk memperkenalkan perubahan, sedangkan air terjun memungkinkan Anda untuk menyempurnakan arsitektur Anda sebelum Anda melepaskan apa pun.
Dapatkah seseorang tolong tunjukkan saya di mana saya salah di sini, karena jelas banyak orang menggunakan gesit dalam lingkungan produksi, jadi saya pasti salah di suatu tempat.