Gần đây tôi đã trở nên quan tâm đến các thực tiễn nhanh trong phát triển phần mềm và từ đó tôi đã thấy rất nhiều bài viết chỉ ra rằng các thực tiễn này cho phép giảm chi phí chung.
Logic đằng sau thường diễn ra như sau: nếu yêu cầu của bạn thay đổi, bạn có thể phản ánh sự thay đổi này trong lần tồn đọng nước rút tiếp theo và điều này sẽ dẫn đến giảm chi phí, vì thiết kế tính năng mới và thực hiện nó gần nhau về mặt thời gian, vì vậy chi phí đi xuống, theo quy tắc nổi tiếng rằng bạn càng cần phải thay đổi yêu cầu của mình thì càng tốn kém để đáp ứng yêu cầu đó.
Nhưng các dự án phần mềm từ trung bình đến lớn rất phức tạp. Thay đổi yêu cầu đột ngột không có nghĩa là bạn sẽ không phải chạm vào các phần khác trong hệ thống của mình để đáp ứng yêu cầu đó. Trong rất nhiều trường hợp, kiến trúc sẽ cần phải được sửa đổi rất đáng kể, điều đó cũng có nghĩa là bạn sẽ cần phải thực hiện lại tất cả các tính năng dựa trên kiến trúc cũ. Vì vậy, toàn bộ điểm giảm chi phí sẽ biến mất ở đây. Tất nhiên, nếu một yêu cầu mới yêu cầu một phần độc lập mới của hệ thống, đó không phải là vấn đề, kiến trúc cũ chỉ phát triển, nó không cần phải được xem xét lại và thực hiện lại.
Và ngược lại. Nếu bạn đang sử dụng thác nước và bạn đột nhiên nhận ra rằng một yêu cầu mới phải được đưa ra, bạn có thể đi và thay đổi thiết kế của mình. Nếu nó yêu cầu kiến trúc hiện tại bị thay đổi, bạn thiết kế lại nó. Nếu nó không thực sự gây rối với nó mà chỉ giới thiệu một phần mới của hệ thống, thì bạn hãy đi và làm tất cả công việc, không có vấn đề gì ở đây.
Như đã nói, dường như đối với tôi, sự phát triển nhanh nhẹn duy nhất là tính năng hoạt động được xây dựng hoàn chỉnh giữa các lần chạy nước rút, và đối với nhiều người và dự đoán điều này không quan trọng. Ngoài ra, agile có vẻ như dẫn đến kiến trúc phần mềm kém về tổng thể, bởi vì các tính năng bị đánh vào nhau, các nhóm nhanh nhẹn chỉ quan tâm rằng một tính năng hoạt động chứ không phải cách nó hoạt động. Điều này có vẻ như khi các hệ thống phát triển phức tạp theo thời gian, các thực tiễn phát triển nhanh thực sự làm tăng sự hỗn loạn trong kiến trúc sản phẩm tổng thể, do đó cuối cùng dẫn đến chi phí cao hơn, vì sẽ ngày càng khó khăn hơn để giới thiệu các thay đổi, trong khi thác nước cho phép bạn hoàn thiện kiến trúc của mình trước khi bạn phát hành bất cứ điều gì.
Ai đó có thể vui lòng chỉ cho tôi biết tôi đang sai ở đâu không, vì rõ ràng rất nhiều người sử dụng nhanh nhẹn trong môi trường sản xuất, vì vậy tôi phải sai ở đâu đó.