PMA – Professional Management Academy

Tổng quan về Agile (2022)

Agile thumbnail
Click to rate this post!
[Total: 0 Average: 0]

Cập nhật lần cuối vào 28/09/2022 bởi Phạm Mạnh Cường

Agile, một thuật ngữ xuất phát từ ngành phát triển phần mềm, giờ đây đã không chỉ là thế mà còn là một hệ tư duy, một bộ triết lý. Agile đã và đang trở thành xu hướng lan tràn trên mọi ngõ ngách của thế giới.

Giới thiệu về Agile 

Agile là gì?

Agile là khả năng sáng tạo và thích ứng với những thay đổi. Nó là một cách đối phó nhằm đạt được thành công cuối cùng nhất trong một môi trường không chắc chắn và đầy biến động.

Bạn phải suy nghĩ để hiểu những điều đang diễn ra, xác định những thứ đầy biến động mà bạn phải đối mặt và tìm ra cách mà bạn thích ứng với chúng.

Agile có nguồn gốc từ đâu?

Xuất phát từ The Manifesto for Agile Software Development được 17 tác giả đưa ra vào năm 2001. Từ “Agile” được các tác giả chọn vì nó thể hiện được khả năng thích ứng và phản ứng với sự thay đổi, điều mà họ thấy cực kỳ quan trọng với những định hướng của họ. (Trích từ Agile Story của Martin Fowler)

The Manifesto for Agile Software Development (Tuyên ngôn về phát triển phần mềm linh hoạt) được phát triển thành 4 giá trị (values) và 12 nguyên tắc (principles).

4 giá trị trong tuyên ngôn Agile là gì?

Chúng tôi đã phát hiện ra cách phát triển phần mềm tốt hơn bằng cách thực hiện nó và giúp đỡ người khác thực hiện. Qua công việc này, chúng tôi đã đi đến việc đánh giá cao:

  1. Individuals and interactions over processes and tools: Cá nhân và sự tương tác hơn là quy trình và công cụ
  2. Working software over comprehensive documentation: Phần mềm chạy tốt hơn là tài liệu đầy đủ
  3. Customer collaboration over contract negotiation: Cộng tác với khách hàng hơn là đàm phán hợp đồng
  4. Responding to change over following a plan: Phản hồi với sự thay đổi hơn là bám theo kế hoạch

Mặc dù các điều bên phải vẫn còn giá trị, nhưng chúng tôi đánh giá cao hơn các mục ở bên trái.

Agile - 4 values
4 giá trị của Tuyên ngôn Agile

12 nguyên tắc thực hành của Agile là gì?

  1. Ưu tiên cao nhất của chúng tôi là thỏa mãn khách hàng thông qua việc chuyển giao sớm và liên tục các phần mềm có giá trị.
  2. Chào đón việc thay đổi yêu cầu, thậm chí rất muộn trong quá trình phát triển. Các quy trình linh hoạt tận dụng sự thay đổi trong các lợi thế cạnh tranh của khách hàng.
  3. Thường xuyên chuyển giao phần mềm chạy tốt tới khách hàng, từ vài tuần đến vài tháng, ưu tiên cho các khoảng thời gian ngắn hơn.
  4. Nhà 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ó động lực. Cung cấp cho họ môi trường và sự hỗ trợ cần thiết, và tin tưởng họ để hoàn thành công việc.
  6. Phương pháp hiệu quả nhất để truyền đạt thông tin tới nhóm phát triển trong nội bộ nhóm phát triển là hội thoại trực tiếp.
  7. Phần mềm chạy tốt là thước đo chính của tiến độ.
  8. Các quy trình linh hoạt thúc đẩy phát triển bền vững. Các nhà tài trợ, nhà phát triển và người dùng có thể duy trì một nhịp độ liên tục không giới hạn.
  9. Liên tục quan tâm đến các kỹ thuật và thiết kế tốt để gia tăng sự linh hoạt.
  10. Sự đơn giản – nghệ thuật tối đa hóa lượng công việc chưa xong – là căn bản.
  11. Các kiến trúc tốt nhất, yêu cầu tốt nhất và thiết kế tốt nhất sẽ được làm ra bởi các nhóm tự tổ chức.
  12. Nhóm phát triển sẽ thường xuyên suy nghĩ về việc làm sao để trở nên hiệu quả hơn, sau đó họ sẽ điều chỉnh và thay đổi các hành vi của mình cho phù hợp. 
12 principles - Agile
12 nguyên tắc trong Tuyên ngôn Agile

Agile được ra đời như thế nào? 

Từ những năm 1950 trở đi, cách phát triển truyền thống theo mô hình thác nước (waterfall) hay theo kế hoạch (plan-driven) đã không còn phù hợp với bối cảnh của ngành phát triển phần mềm.

Bấy giờ thì người ta đưa ra nhiều phương pháp để bổ túc các vấn đề đó, nhưng tất cả chỉ là kinh nghiệm của người quản lý. Càng về sau càng nhiều phương pháp được đưa ra. 

Rốt cục tới năm 2001, đã có 1 cuộc gặp mặt giữa 17 nhà phát triển phần mềm ở Snowbird, Utah. Họ đã đưa ra một tuyên ngôn về phát triển phần mềm nhanh nhẹn (Manifesto for Agile Software Development). 

Sự hình thành Manifesto for Agile Software Development đã trở thành một triết lý tạo ra rất nhiều các phương pháp Agile sau này.

Từ đó thì Agile ngày càng phát triển và trở thành xu thế ngày càng ảnh hưởng tới nhiều ngành nghề hơn, không còn bị gói gọn trong ngành phát triển phần mềm.

Agile đã trở thành một tư duy, một triết lý

Sự phát triển không ngừng của Agile cuối cùng đã trở thành một hệ tương tưởng, một tư duy (Mindset) được dẫn dắt bởi 4 giá trị và 12 nguyên tắc. Các giá trị và nguyên tắc đó cung cấp hướng dẫn về cách tạo ra và ứng phó với sự thay đổi cũng như cách đối phó với sự không chắc chắn. 

Ngay từ câu đầu tiên của Tuyên ngôn Agile gói gọn toàn bộ ý tưởng: “Chúng tôi đang khám phá ra những cách tốt hơn để phát triển phần mềm bằng cách thực hiện nó và giúp những người khác làm điều đó.” 

Khi đối mặt với sự không chắc chắn, hãy thử điều gì đó bạn nghĩ có thể hiệu quả, nhận phản hồi và điều chỉnh cho phù hợp.

Hãy ghi nhớ các giá trị và nguyên tắc khi bạn làm việc này. Hãy để hoàn cảnh của bạn tạo ra các frameworks, phương pháp và kỹ thuật bạn sử dụng để cộng tác với team của mình và mang lại giá trị cho khách hàng của bạn.

Lợi ích khi áp dụng Agile là gì?

Cải thiện chất lượng

Kiểm thử là điều không thể thiếu của các giai đoạn Executing (thực thi) dự án, việc này đảm bảo đầu ra của sản phẩm đạt chuẩn. 

Agile hoàn toàn có thể đáp ứng được sự thay đổi của khách hàng hay thị trường.

Ngoài ra, Agile có thể nói là quy trình vòng lặp liên tục, việc này giúp cho đội nhóm phát triển sau mỗi quy trình và cải thiện liên tục.

Làm hài lòng khách hàng

Thay vì chỉ tham gia giai đoạn lập kế hoạch (Planning) thì khách hàng giờ đây tham gia mọi giai đoạn của dự án. Việc đưa ra những thay đổi dựa trên nhu cầu của khách hàng, mang lại giá trị cho khách hàng sẽ giúp khách hàng cảm thấy hài lòng và sẵn sàng quay lại với dự án sau.

Kiểm soát dự án tốt hơn

Agile cho phép nhà quản lý tích hợp phản hồi và tính chất kiểm tra chất lượng thông qua các công cụ hay kỹ thuật tiên tiến.

Cải thiện khả năng dự đoán (Predictive) của dự án

Đội ngũ Agile làm việc trong một thời gian ngắn (short period) hay còn được gọi là sprints (khoảng 2 tuần). Điều này giúp cho nhà quản lý dễ dàng đo lường, dự đoán các khả năng hơn.

Cải thiện khả năng thích ứng (Adaptive) của dự án

Đội ngũ Agile có thể thích ứng với các sự thay đổi kể cả khi nó diễn ra ở phút chót mà không bị gián đoạn quá nhiều

Khả năng thích ứng có nghĩa là các nhóm có thể cung cấp một cách nhất quán và quản lý các yêu cầu thay đổi của khách hàng một cách hiệu quả.

Giảm thiểu rủi ro

Các nhà phát triển thường xuyên đánh giá tiến độ trong thời gian chạy nước rút, có nghĩa là họ có tầm nhìn tốt hơn về dự án và có thể phát hiện ra những trở ngại tiềm ẩn một cách nhanh chóng. Những vấn đề nhỏ này có thể được giải quyết trước khi chúng leo thang, tạo ra một quy trình giảm thiểu rủi ro hiệu quả và mang lại cho dự án cơ hội thành công cao hơn.

Giao tiếp tốt hơn

Đội ngũ Agile thường xuyên duy trì việc họp mặt và giao tiếp face-to-face, điều này giúp họ loại bỏ những hiểu nhầm, hiểu sai hay hiểu thiếu.

Báo cáo của 15th Annual State Of Agile Report năm 2021 thì bạn có thể thấy ngoài các lợi ích chính trên thì Agile còn nhiều lợi ích hơn nữa, và nó ảnh hưởng rất nhiều tới các tổ chức.

15th Annual State Of Agile Report
Những lợi ích của áp dụng Agile vào đội ngũ hoặc tổ chức

Các phương pháp Agile 

Phát triển phần mềm linh hoạt (agile software development) là gì ?

Phát triển phần mềm Agile là một thuật ngữ chung cho một tập hợp các khuôn khổ và thực hành dựa trên các giá trị và nguyên tắc được thể hiện trong Tuyên ngôn về Phát triển Phần mềm Agile và 12 Nguyên tắc đằng sau nó.

Một điều khác biệt giữa Agile với các cách tiếp cận khác để phát triển phần mềm là sự tập trung vào những người thực hiện công việc và cách họ làm việc cùng nhau. Các giải pháp phát triển thông qua sự hợp tác giữa các nhóm chức năng chéo tự tổ chức sử dụng các phương pháp phù hợp với bối cảnh của họ. Cộng đồng phát triển phần mềm Agile tập trung nhiều vào sự cộng tác và nhóm tự tổ chức.

Điều đó không có nghĩa là không cần người quản lý dự án. Điều đó có nghĩa là các nhóm có khả năng tìm ra cách họ sẽ tự tiếp cận mọi thứ. Nó có nghĩa là các nhóm này có chức năng chéo. 

Các nhóm đó không nhất thiết phải có các vai trò cụ thể liên quan đến mức khi bạn tập hợp nhóm lại với nhau, bạn đảm bảo rằng bạn có tất cả các bộ kỹ năng phù hợp trong nhóm. 

Vẫn có một nơi cho các nhà quản lý. Người quản lý đảm bảo các thành viên trong nhóm có hoặc có được bộ kỹ năng phù hợp. Các nhà quản lý cung cấp môi trường cho phép nhóm thành công. Các nhà quản lý chủ yếu lùi lại và để nhóm của họ tìm ra cách họ sẽ cung cấp sản phẩm, nhưng họ sẽ bước vào khi nhóm cố gắng nhưng không thể giải quyết vấn đề. 

Khi hầu hết các nhóm và tổ chức bắt đầu phát triển Agile, họ tập trung vào các phương pháp thực hành giúp cộng tác và tổ chức công việc, điều này thật tuyệt vời.

Có những phương pháp phát triển phần mềm nào theo tư duy Agile? 

Các phương pháp Agile là các quy ước mà một nhóm lựa chọn để tuân theo các giá trị và nguyên tắc Agile.

Theo 15th Annual State Of Agile Report 2021 thì Scrum chiếm tới 66% các phương pháp Agile đang được thực thi trên thế giới.

15th Annual State Of Agile Report
Các phương pháp Agile theo 15th Annual State Of Agile Report năm 2021

Tổng kết

Bài viết trên cung cấp cái nhìn tổng quan về Agile. Kiến thức trong bài viết được trích xuất 1 phần trong khóa học luyện thi chứng chỉ quản lý quốc tế PMI-ACP của PMA. Hy vọng bài viết sẽ giúp bạn có sự nhận thức về Agile.

Xem thêm: So sánh chứng chỉ PMP và PMI-ACP

Xem thêm: Agile: Không chỉ cho ngành IT