HocPMP.Com

Agile là gì? Scrum là gì?

Agile là một từ rất thông dụng trong ngành công nghiệp phát triển phần mềm.  Và một thuật ngữ anh em có thể nghe rất nhiều đó là Scrum. Vậy scrum là gì? Agile là gì? trong bài này Kevin sẽ chia sẻ hiểu biết của cá nhân về Agile và Scrum. Nếu anh em nào có certificate hay có làm thực tế về quản lý dự án theo Agile hay dùng qua Scrum thì chia sẻ ở phần bình luận thêm nhé.

Có thể hiểu một cách đơn giản Agile là một cách phát triển dự án và Project team theo một cách hoàn toàn mới. Nó khác xa với cách làm truyền thống của anh em xưa giờ. Ví dụ trong quản lý dự án phần mềm truyền thống Product requirements cần phải được chốt trước khi vào giai đoạn triển khai (development).

Okay, để hiểu rõ Agile là gì chúng ta cần xem qua một vài phương thức truyền thống trong quản lý dự án.

Waterfall Model

Đây là mô hình được sử dụng nhiều nhất và được giới thiệu rất nhiều trong các bài giảng truyền thống về quản lý dự án.

HocPMP.Com

Ở mô hình Waterfall (Mô hình thác đổ), các công việc cần được thực hiện tuần tự từ lúc lấy yêu cầu, phân tích yêu cầu, thiết kế, coding, và ra sản phẩm. Tuy nhiên mô hình này dần bộc lộ yếu điểm khi giả sử trong qúa trình triển khai có một function mới thêm vào product dẫn đến Requirements lúc ban đầu có thể thay đổi dẫn đến Waterfall model không thích nghi với sự thay đổi này. Và điều này sẽ càng ác mộng khi càng nhiều change request trong sản phẩm tạo ra, điều này có thể dẫn đến Stakeholder không rõ ràng về function của sản phẩm, cái nào trong version1 , cái nào trong version 2…

Interactive Incremental Model

Mô hình này là loại mô hình lặp, đầu tiên Project team sẽ bắt đầu với một số đặc tả về sản phẩm chính, mang tính cốt lõi. Rồi sau đó từ những yêu cầu chính này sẽ được lặp tiếp chẻ nhỏ ra các yêu cầu chi tiết hơn. Điều này sẽ lặp cho tới khi sản phẩm được hoàn thành lấy yêu cầu.

HocPMP.Com

Điểm yếu của mô hình này là user (người dùng) không được tham gia từ đầu vào quá trình lấy yêu cầu, do đó sản phẩm cuối cùng dễ xảy ra tình trạng không đúng function mà họ mong muốn. Và nếu có sự tham gia cũng có thể dẫn đến trì hoãn do có nhiều vòng lặp lấy yêu cầu. Hơn nữa, bất cứ sự thay đổi nào trong một vòng lặp dễ dẫn đến thông tin bị rối và scope creep. Với tiền đề này, khả năng scope creep cũng dễ xảy ra với Agile development.

Agile Development

Agile Development là một mô thức dựa trên Interactive Incremental Development, nơi mà những requirements và solutions sẽ được thực hiện trong qua sự tham gia của cả Project team. Agile Development là một framework mang tính lý thuyết, nó không tập trung vào một công cụ thực tế nào để Project team làm theo. Scrum là một khung quy trình chuẩn agile định nghĩa rõ những bước mang tính thực tiễn cần được tuân theo.

Một vài phương thức thực thi Agile bao gồm:

  • Rational Unified Process (1994)
  • Scrum (1995)
  • Dynamic Systems Development Method DSDM (1995)
  • Crystal Clear, Extreme Programing (1996)
  • Adaptive Software Development, Feature Drive Development (1997)

Tất cả các phương thức trên đều được gọi là Agile Methodologies sau khi Agile Manifesto (Bản tuyên ngôn Agile) được công bố vào năm 2001.

Agile Manifesto

Agile Manifesto được công bố năm 2001 bởi một team phát triển phần mềm, Agile Manifesto nhấn mạnh vào tầm quan trọng trong quản lý dự án thông qua một số nguyên tắc như sau:

  • Con người và sự tương tác quan trọng hơn công cụ hay quy trình (Individuals + Interactions > Process + Tools).
  • Sản phẩm quan trọng hơn tài liệu toàn diện (Working software over comprehensive documentation)
  • Sự cộng tác của khách hàng quan trọng hơn đàm phán hợp đồng (Customer collaboration over Contract Negotiation)
  • Quản trị thay đổi quan trọng hơn chỉ làm theo kế hoạch (Responding change over following plans).

Đây là một cách tiếp cận hoàn toàn mới vì thông thường quản lý dự án sẽ tập trung về mặt quy trình, công cụ quản lý dự án hay các vấn đề như tài liệu hóa, contract negotiation thì chủ nghĩa Agile hay bản tuyên ngôn Agile lại làm một điều hoàn toàn ngược lại.

Agile rất quan trọng sự hợp tác của Project team như khả năng teamwork, khả năng cộng tác giữa các thành viên trong Project team và khách hàng. Yếu tố chính của Agile Manifesto là chúng ta phải tin tưởng con người và khả năng của họ để hợp tác hoàn thành dự án.

11 Nguyên lý trong Agile

  1. Satisfaction and Delivery: Sự thỏa mãn khách hàng cần phải duy trì từ lúc mới triển khai đến lúc sản phẩm đi vào hoạt động.
  2. Welcoming changes: change request luôn không phải điều lo sợ thậm chí nó đến vào sau giai đoạn development.
  3. Deliver Frequently: Bàn giao software hàng tuần thay vì hàng tháng.
  4. Communication is the key: bảo đảo kết nối những developer với end-user thường xuyên (daily).
  5. Environment and Trust: Xây dựng Project dựa trên những thành viên đầy lòng nhiệt huyết (motivational) và cần tin tưởng giao việc cho họ.
  6. Face-to-face communication: Agile yêu thích những cuộc đối thoại trực tiếp vì tin tưởng rằng đó là cách hiệu quả nhất.
  7. Software as Measure of Progress: Sản phẩm là cách thức đo lường chính của tiến độ công việc.
  8. Sustainable Development
  9. Attention to details
  10. The power of less: Đơn giản là hiệu quả.
  11. Self-organizing teams: Chú ý đến những tình huống thay đổi dẫn đến team làm việc hiệu quả.

Agile Methodologies

DSDM (Dynamic System Development Methodology) 

Là một agile framework cho những dự án phần mềm, thường được Project Manager sử dụng nhiều vì thân thiện cách quản lý dự án truyền thống. Phiên bản mới nhất của DSDM (Dynamic System Development Methodology) là Atern.

Scrum

Đây là Agile Framework phổ biến nhất tập trung cách quản lý các công việc trong môi trường phát triển phần mềm dựa trên team. Scrum sử dụng dựa trên mô hình lặp Iterative Incremental Model với thời gian lặp ít hơn. Scrum là methodology tập trung vào 2 yếu tố nhanh và với những dự án mà yêu cầu Delivery có tần suất cao.

Extreme Programing (XP)

Cũng là một Agile Methodology theo nguyên tắc phát triển phần mềm thông qua việc tổ chức con người để đưa ra các sản phẩm chất lượng cao hơn, hiệu năng cao hơn. Nó thường dùng cho các dự án có sản phẩm release thường xuyên trong vòng đời phát triển ngắn.

Test-driven development (TDD)

Nó là quy trình phát triển phần mềm dựa vào sự lặp lại  của vòng đời phát triển rất ngắn. Ví dụ developer viết một test case cho một tính năng mong muốn từ khách hàng, sau đó đưa một đoạn code vào để kiểm thử và sau đó mang đoạn code này xem như tiêu chuẩn để acceptable.

Lean

Lean so sánh việc tiêu tốn nguồn lực cho bất kỳ mục tiêu nào mà lớn hơn giá trị tạo cho khách hàng đều được xem là lãng phí, và như thế mục tiêu đó sẽ bị loại trừ. Lean làm việc dựa trên lợi ích của khách hàng là người hàng ngày sử dụng sản phẩm và họ sẽ định nghĩa bất cứ tính năng hay quy trình nào thực sự cần thiết. Lean tập trung vào giá trị.

Kanban

Kanban là một phương thức dựa theo nguyên lý JIT (Just-in-time) thường được sử dụng là một công cụ trong các doanh nghiệp sản xuất và cũng là một cách tốt để cải tiến chất lượng.

Kết luận

Agile Framework thường được sử dụng trong các dự án phần mềm. Agile ngày càng phổ biến trong giới quản lý dự án phần mềm bởi vì đem lại những lợi ích như:

  • Tập trung vào việc delivery sản phẩm nhanh.
  • Giảm Unidentify risk.
  • Tăng ROI thông qua việc tập trung vào giá trị khách hàng.

Trong tất cả các Agile methodology, Scrum là phương thức được đánh giá mạnh nhất và thành công nhất trong hơn 20 năm qua.

 

Nếu có bất cứ chia sẻ hay góp ý bạn vui lòng chia sẻ ở dưới phần bình luận. Tôi rất vui lòng về điều đó. Cảm ơn..

 

Tagged:

Comments

  1. Ninh Nguyen

    Chào Kevin,

    Mình cũng đang học hỏi về Agile nên mạo muội comment, xin được chỉ giáo thêm.
    Theo như mình đã làm qua nhiều về Scrum và TDD, mình hiểu TDD là một cách implement feature chứ không phải thuần là methodology như Scrum vì nó chỉ focus vào từng particular feature ở mức unit. Nếu nói Scrum là Agile practic là hợp lý vì nguyên lý của Agile là Interactive Incremental, mỗi phase tương ứng từng Sprint nhưng scope nhỏ hơn.
    Như mình thường là áp dụng cả 2, dùng Scrum để giải quyết từng nhóm rqmt trong spirnt backlog, và từng specific rqmt, sẽ dùng TDD để implement.

    Cảm ơn vì đã xem comment và phản hồi (nếu có).

    View Comment

Leave a Reply

Tôi rất vui khi bạn đã quyết định để lại comment, tôi sẽ phản hồi tất cả các comment nhanh nhất khi có thể. Chú ý tất cả comment đều được kiểm duyệt cẩn thận, xin đừng cố gắng spam hoặc quảng cáo. Xin cảm ơn.