Thứ Năm, 16 tháng 2, 2023

Agile Manifesto – Tuyên ngôn Agile


“Make it work, make it right, make it fast.” – Kent Beck

1.    Tuyên ngôn Agile là gì?  

Tuyên ngôn Agile là một văn bản xác định 4 giá trị chính (key values) và 12 nguyên tắc (principles) mà các tác giả của tuyên ngôn này tin rằng các nhà phát triển phần mềm nên sử dụng để định hướng công việc của họ. Tên chính thức của văn bản là Manifesto for Agile Software Development, được tạo ra vào ngày 11-13 tháng 2 năm 2001 tại khu nghỉ mát trượt tuyết Snowbird ở Utah.


(Nguồn hình: https://www.scrum.org/resources/blog/it-time-evolve-beyond-agile-manifesto)

2.    Ai tạo ra tuyên ngôn Agile?

Tại ở Snowbird, Utah, vào đầu năm 2001, một nhóm 17 nhà phát triển phần mềm đã tập trung để thảo luận về tương lai của sự phát triển của công nghiệp phần mềm. Từ nhóm này, 14 người đã trở thành những người ký kết Tuyên ngôn Agile, bao gồm:

       Mike Beedle, người sáng lập và Giám đốc điều hành của e-Architects Inc., một công ty tư vấn chuyên về phát triển ứng dụng sử dụng các đối tượng phân tán và công nghệ internet.

       Arie van Bennekum, người đã tích cực tham gia vào DSDM và DSDM Consortium từ năm 1997.

       Alistair Cockburn, nhà sáng lập Humans and Technology, người nổi tiếng với những cuộc phỏng vấn sâu và rộng với các nhóm dự án.

       Ward Cunningham, người sáng lập Cunningham & Cunningham, Inc., từng là giám đốc R&D tại Wyatt Software và là kỹ sư chính trong Phòng thí nghiệm Nghiên cứu Máy tính Tektronix.

       Martin Fowler, nhà khoa học trưởng của Thoughtworks, một công ty tư vấn và phát triển ứng dụng.

       Jim Highsmith, nhà phát triển chính của Phương pháp Agile phát triển phần mềm Thích ứng - Adaptive Software Development Agile Method và là tác giả của cuốn sách cùng tên.

       Andrew Hunt, đối tác của The Pragmatic Programmers và đồng tác giả của The Pragmatic Programmer: From Journeyman to Master và Programming Ruby.

       Ron Jeffries, chủ sở hữu của XProgramming.com, cố vấn của Object Mentor, và là đồng tác giả của Extreme Programming Installed.

       Jon Kern, người đam mê giúp khách hàng thành công trong việc mang lại giá trị kinh doanh thông qua các nỗ lực phát triển phần mềm.

       Brian Marick, nhà lập trình và tư vấn kiểm thử phần mềm.

       Robert C. Martin, chủ tịch và người sáng lập Object Mentor Inc., công ty cung cấp dịch vụ tư vấn quy trình XP và Agile, tư vấn thiết kế phần mềm, đào tạo và phát triển cho các tập đoàn lớn trên thế giới.

       Ken Schwaber, chủ tịch của Advanced Development Methods (ADM), người tận tâm với việc cải thiện thực tiễn phát triển phần mềm.

       Jeff Sutherland, giám đốc công nghệ của PatientKeeper, một công ty khởi nghiệp có trụ sở tại MIT cung cấp các ứng dụng di động/không dây cho các bác sĩ lâm sàng.

       Dave Thomas, đồng tác giả cuốn The Pragmatic Programmer.

Câu chuyện của Tuyên ngôn Agile.

Vào những năm 1990, trước cuộc họp về Tuyên ngôn Agile, các nhà phát triển phần mềm bắt đầu tìm kiếm những cách làm việc tốt hơn, nhạy bén hơn, kết hợp những ý tưởng cũ và mới; cố gắng tìm ra sự kết hợp tốt nhất các phương pháp khác nhau . Và họ bắt đầu phát triển các khuôn khổ mà các nhóm khác có thể sử dụng, bao gồm Scrum, Extreme Programing, FDD và DSDM.

Trong cuộc họp Tuyên ngôn Agile năm 2001, những người tham gia đã tìm kiếm những điểm chung trong các cách tiếp cận khác nhau này. Loại bỏ những điều họ không thể đồng ý, những người tham gia đã hệ thống hóa các luận điểm thống nhất thành Tuyên ngôn Agile thành một tập hợp các tuyên bố giá trị và đưa ra thuật ngữ “Phát triển phần mềm Agile - Agile software development”.

Liên minh Agile được thành lập vào cuối năm 2001, hoạt động như một nơi để các nhà phát triển phần mềm khám phá và chia sẻ ý tưởng cũng như kinh nghiệm của họ. Nhóm sáng lập tuyên ngôn Agile là những người đầu tiên sử dụng phương pháp Agile, nhưng sau đó nó đã được nhiều nhóm khác áp dụng, đặc biệt là những người thực hiện các dự án không có phạm vi và yêu cầu rõ ràng ngay từ đầu. Khi Agile được áp dụng rộng rãi, một hệ sinh thái đã hình thành bao gồm những người phát triển phần mềm Agile, và những người tham gia tư vấn, đào tạo, lập khung phân tính và phát triển công cụ.

 

3.    Bốn giá trị chính của tuyên ngôn  Agile

(i).  Các cá nhân và sự tương tác đối với các quy trình và công cụ. (Individuals and interactions over processes and tools.)

Con người là tác nhân chính của quá trình phát triển và đáp ứng nhu cầu kinh doanh một cách nhanh chóng, vì con người cần được ưu tiên hơn các quy trình và công cụ.

(ii).    Sản phẩm phần mềm có giá trị hơn là tài liệu xây dựng lên sản phẩm (Working software over comprehensive documentation) Tuyên ngôn Agile không nhấn mạnh về tài liệu về quy trình phát triển, vốn trước đây làm mất rất nhiều thời gian của người phát triển phần mềm và khiến họ sa lầy. Bằng cách tránh những chi tiết vụn vặt không quan trọng, Agile chuyển trọng tâm của nhóm từ tài liệu quy trình sang kết quả của quy trình – tức là phần mềm hoạt động được.

(iii).  Sự phối hợp với khách hàng ưu tiên hơn những thỏa thuận hợp đồng (Customer collaboration over contract negotiation). Trong các phương pháp quản lý dự án truyền thống,  khách hàng đàm phán rất chi tiết về các yêu cầu của sản phẩm trước khi bất kỳ công việc nào bắt đầu và họ thường chỉ tham gia vào lúc bắt đầu và khi kết thúc. Trong Agile, khách hàng trở thành cộng tác viên quan trọng trong suốt quá trình phát triển, đảm bảo đầu vào của họ được kết hợp và kết quả đáp ứng nhu cầu của họ trong suốt quá trình.

(iv).   Thích ứng với những thay đổi hơn là cứng nhắc theo kế hoạch định trước  (Responding to change over following a plan). Việc thích ứng liên tục trong quá trình phát triển phần mềm cần được ưu tiên hơn là theo những kế hoạch định trước mà những kế hoạch này đôi khi bỏ qua thực tế bên ngoài. Agile chấp nhận sự thay đổi, tập trung vào việc phát hành một sản phẩm khả thi và giảm thiểu những chỉnh sửa lặp đi lặp lại.

(Nguồn hình: https://medium.com/informationartist/agile-manifesto-explained-visually-d2fb07211373)


4.    12 nguyên tắc (12 principals) của tuyên ngôn Agile?

12 nguyên tắc Agile Manifesto, được mở rộng trên bản tuyên ngôn ban đầu, bao gồm:

[1].       Ưu tiên cao nhất là làm hài lòng khách hàng thông qua việc cung cấp phần mềm có giá trị một cách nhanh nhất.

[2].       Nhóm dự án hoan nghênh các yêu cầu thay đổi, thậm chí là muộn trong quá trình phát triển. Các quy trình linh hoạt khai thác sự thay đổi vì lợi thế cạnh tranh của khách hàng.

[3].       Cung cấp phần mềm hoạt động thường xuyên, từ vài tuần đến vài tháng, ưu tiên cho khoảng thời gian ngắn hơn.

[4].       Người kinh doanh và nhà phát triển phải làm việc cùng nhau hàng ngày trong suốt dự án.

[5].       Xây dựng các dự án xung quanh những cá nhân có khả năng và có động lực làm việc, tạo cho họ môi trường và cung cấp sự hỗ trợ họ cần, đồng thời tin tưởng để họ hoàn thành công việc.

[6].       Trò chuyện trực tiếp là phương pháp hiệu quả và hiệu quả nhất để truyền đạt thông tin đến cho nhóm phát triển và trong nội bộ nhóm.

[7].       Phần mềm hoạt động được là thước đo tiến độ quan trọng nhất.

[8].       Các quy trình Agile thúc đẩy phát triển bền vững. Các nhà tài trợ, nhà phát triển phần mềm và người dùng nên duy trì việc phát triển liên tục.

[9].       Quan tâm liên tục đến kỹ thuật và thiết kế để giúp tăng cường sự linh hoạt.

[10].    Đơn giản là điều cần thiết. Cũng chính là nghệ thuật tối đa hóa khối lượng công việc không cần phải làm.

[11].    Nhóm phát triển sẽ tự tạo ra các kết cấu, yêu cầu và thiết kế tốt nhất.

[12].    Theo định kỳ, nhóm sẽ suy nghĩ về cách trở nên hiệu quả hơn và sau đó sẽ điều chỉnh hành vi của các thành viên cho phù hợp.


(Nguồn hình: https://twitter.com/OlgaHeismann/status/1364857111201656835)


5.    Giá trị của tuyên ngôn Agile

Agile đã được áp dụng rộng rãi bởi các nhóm phát triển phần mềm trong toàn ngành công nghệ, cũng như trong các bộ phận công nghệ thông tin của doanh nghiệp. Hơn nữa, Agile đã được ghi nhận là giúp các dự án phần mềm thành công hơn trong việc đáp ứng nhu cầu của người dùng, khách hàng và doanh nghiệp, đồng thời sản xuất phần mềm nhanh hơn và đáp ứng hơn các phương pháp Thác nước truyền thống (traditional waterfall).

Tuy nhiên, một số người cáo buộc Agile là quá cường điệu. Họ cho rằng Agile không phải hữu hiệu trong mọi tình huống; một các phương pháp, thuật ngữ và văn hóa liên quan đến Agile có thể không phù hợp với văn hóa của một số tổ chức và dự án cụ thể.

Tài liệu tham khảo

[1].         https://www.agilealliance.org/agile101/the-agile-manifesto/

[2].         https://www.agilealliance.org/agile101/12-principles-behind-the-agile-manifesto/

[3].         https://www.atlassian.com/agile/manifesto

[4].         https://www.techtarget.com/searchcio/definition/Agile-Manifesto

[5].         https://business.adobe.com/blog/basics/agile-manifesto

 

Không có nhận xét nào:

Đăng nhận xét

Sandbox

Thuật ngữ "sandbox" trong bối cảnh công nghệ được dùng để chỉ một môi trường thử nghiệm an toàn, trong đó các phần mềm, chương tr...