Một sinh viên gửi email cho tôi: “Ưu điểm của phương pháp Agile là gì so với các phương pháp khác? Làm sao em so sánh được phương pháp này với các phương pháp khác?”

Đáp: Xin đọc các bài viết trước đây của tôi về phát triển phần mềm Agile. Như tôi đã nhắc tới trước đây, Agile là rất tốt cho dự án nhỏ nơi các yêu cầu không được xác định rõ và có thể thay đổi thường xuyên. Với phương pháp này, bạn phải chia yêu cầu ra thành những nhiệm vụ nhỏ mà có thể dễ dàng quản lí, và được đo. Cũng như ăn một con voi, bạn không thể nuốt được mọi thứ cho nên bạn phải ăn từng miếng mỗi lúc.

Với phương pháp Agile, bạn phát triển phần mềm tăng dần và đưa ra cho khách hàng từng nhiệm vụ mỗi lúc. Bằng việc làm điều đó bạn sẽ không bị chậm và khách hàng sẽ có cái gì đó để dùng nhanh chóng thay vì phải đợi cho tới khi toàn thể dự án hoàn thành. Bằng việc có đưa ra nhỏ, bạn chỉ có thể bị muộn nhiều nhất là vài tuần, điều có thể dễ dàng sửa chữa.

Bởi vì bạn chỉ ước lượng công việc được yêu cầu cho từng lần lặp, ước lượng của bạn chính xác hơn (hầu hết mọi người có thể ước lượng khối lượng công việc trong hai tới bốn tuần). Bởi vì khách hàng phải tham gia vào dự án, người phát triển có thể nói với họ để hiểu nhu cầu của họ cho nên thay đổi có thể được thực hiện nhanh chóng và hiệu quả.

Bởi vì tổ là tự tổ chức, mọi người đều bình đẳng cho nên không có vấn đề “bản ngã” và không có vấn đề “anh hùng” trong kiểu công việc này. Tổ chia công việc trong bản thân các thành viên cho nên điều đó giới hạn việc phân bố không thoả đáng hay bất kì sao lãng nào từ quan liêu. Các thành viên tổ có thể tập trung vào công việc của họ tương ứng theo cam kết giữa bản thân họ.

Với “Lập trình cặp đôi”: Hai người là tốt hơn một người cho nên khi cái gì đó được cần tới, họ có thể đáp ứng nhanh chóng và hiệu quả hơn. Với Agile, mọi ngày tổ đều phải họp trong một thời kì ngắn để thảo luận về tiến bộ và vấn đề để cho mọi sự có thể được giải quyết nhanh chóng và mọi người đều biết về tiến bộ của dự án.

—-English version—-

Benefits of Agile

A student sent email to me: “What are the advantages of Agile method over others? How do I compare this method with others?”

Answer: Please read my previous articles on Agile software development. As I have mentioned previously, Agile is very good for small project where requirements are not well-defined and may change often. With this method, you must break requirements down into small tasks that can be easily managed, and measured. Just like eating an elephant, you cannot swallow everything so you must eat one bite at a time.

With Agile method, you develop software incrementally and release to customer one task at a time. By doing that you will not be late and customer will have something to use quickly rather than have to wait until the entire project complete. By having small release, you can only get late as much as few weeks, which can be easy to fix.

Because you only estimate works required for each iteration, your estimation is more accurate. (most people can estimate the amount of works in two to four weeks) Because customers must involve in the project, developers can talk to them to understand their needs so change can be made quickly and effectively.

Because the team is self-organized, everybody is equal so no “ego” issue and no “hero” issue in this type of work. The team divide the works among themselves so it limit any unfair distribution or any distractions from bureaucracy. Team members can concentrate on their works according to a commitment among themselves.

With “Pair programming”. Two people are better than one so when a something is needed, they can response quickly and more efficiently. With Agile, every day the team must meet for a short period to discuss progress and issues so things can be solve quickly and everybody know about the progress of the project.