Bài tập

Waterfall vs Agile vs Scrum - Phần 3: Scrum như thế nào?

Huy Erick

Trên con đường phát triển phần mềm, có nhiều mô hình phổ biến để lựa chọn. Trong seri bài viết "Waterfall vs Agile vs Scrum", chúng ta đã tìm hiểu về Agile và Waterfall. Trong...

Trên con đường phát triển phần mềm, có nhiều mô hình phổ biến để lựa chọn. Trong seri bài viết "Waterfall vs Agile vs Scrum", chúng ta đã tìm hiểu về Agile và Waterfall. Trong phần này, chúng ta sẽ tìm hiểu về Scrum - mô hình phát triển phần mềm phổ biến nhất trong Agile.

Scrum là gì?

Scrum là một dạng của mô hình Agile và là framework phát triển phần mềm lặp đi lặp lại. Scrum phân chia quá trình phát triển thành những khoảng lặp cố định, thường kéo dài từ 1 đến 2 tuần, được gọi là sprint. Cuối mỗi sprint, các stakeholder và thành viên trong nhóm phát triển sẽ tổ chức cuộc họp và lên kế hoạch cho giai đoạn tiếp theo.

Scrum quy định các vai trò, trách nhiệm và các cuộc họp cố định. Ví dụ, Scrum quy định các công đoạn của mỗi sprint như Sprint Planning, Daily Stand-up, Sprint Demo và Sprint Retrospective. Trong suốt mỗi sprint, nhóm sử dụng các công cụ như Task Board hay Burndown Chart để theo dõi tiến độ và nhận phản hồi.

Scrum được Jeff Sutherland giới thiệu vào năm 1993, dựa trên nghiên cứu của Takeuchi và Nonaka tại Harvard Business Review năm 1986. Trong nghiên cứu của mình, Takeuchi và Nonaka đã so sánh những đội làm việc hiệu quả với đội Rugby. Mô hình này ban đầu được áp dụng trong ngành sản xuất, nhưng sau đó đã được áp dụng vào phát triển phần mềm.

Ưu điểm của Scrum

Scrum là một framework quy định chặt chẽ với các vai trò và quy tắc nhất định. Mặc dù có một số khía cạnh cần phải học, nhưng những quy định này mang lại nhiều lợi ích. Dưới đây là một số ưu điểm của Scrum:

Tình trạng dự án rõ ràng

Với việc tổ chức cuộc họp hàng ngày, thường là cuộc họp đứng, cả nhóm sẽ biết rõ ai đang làm gì, tránh được sự hiểu lầm và không rõ ràng. Các vấn đề trong dự án được phát hiện hàng ngày và nhóm có thể giải quyết chúng trước khi trở thành vấn đề nghiêm trọng.

Tăng tính trách nhiệm của toàn bộ nhóm

Trong Scrum, không có một người quản lý dự án giám sát và chỉ đạo công việc cho nhóm. Thay vào đó, nhóm sẽ tự quyết định và cam kết thực hiện công việc trong mỗi sprint. Các thành viên trong nhóm cần làm việc và hỗ trợ lẫn nhau, tăng sự hợp tác và tạo động lực để mỗi thành viên làm việc độc lập.

Dễ dàng thích nghi với thay đổi

Với các sprint ngắn và phản hồi tức thì từ các bên liên quan, thì việc thay đổi và điều chỉnh dễ dàng hơn. Ví dụ, nếu nhóm phát hiện ra một yêu cầu mới trong một sprint, họ có thể dễ dàng thêm yêu cầu này vào backlog và hoàn thành trong sprint tiếp theo.

Tiết kiệm chi phí

Scrum tạo điều kiện cho việc giao tiếp thường xuyên và tức thì, giúp nhóm nhận biết các vấn đề và thay đổi ngay khi chúng xảy ra, từ đó giảm chi phí và tăng chất lượng công việc. Bằng cách mã hóa và kiểm thử các nhóm chức năng nhỏ, nhóm sẽ nhận được phản hồi liên tục và có thể sửa lỗi sớm hơn, trước khi chúng trở thành vấn đề đáng lưu ý.

Nhược điểm của Scrum

Mặc dù Scrum có nhiều ưu điểm, nhưng cũng có một số nhược điểm. Dưới đây là một số nhược điểm của Scrum:

Không kiểm soát được phạm vi phát triển

Một số dự án Scrum gặp khó khăn trong việc kiểm soát phạm vi phát triển do thiếu quy định và một ngày kết thúc cụ thể cho dự án. Vì không có ngày hoàn thành dự án, khách hàng hoặc các bên liên quan có thể tiếp tục thêm các chức năng mới ngay cả khi dự án đã ở giai đoạn cuối.

Yêu cầu kinh nghiệm và cam kết cao

Với các vai trò và trách nhiệm được quy định, cả nhóm cần làm quen với quy trình Scrum. Vì không có vai trò chuyên biệt, tất cả thành viên trong nhóm cần có kinh nghiệm và kiến thức kỹ thuật. Cả nhóm cần tham gia cuộc họp Scrum hàng ngày và cam kết tham gia suốt quá trình dự án.

Scrum Master không thích hợp có thể gây bất ổn

Scrum Master không phải là một người quản lý dự án truyền thống. Vai trò của Scrum Master là hỗ trợ nhóm và không bao giờ chỉ đạo công việc của nhóm. Nếu Scrum Master cố gắng kiểm soát nhóm, dự án có thể gặp khó khăn.

Xác định công việc không rõ ràng

Nếu công việc không được xác định rõ ràng, sẽ dẫn đến sự thiếu chính xác trong việc đánh giá chi phí và tiến độ. Nếu mục tiêu ban đầu của dự án không rõ ràng, việc lập kế hoạch sẽ trở nên khó khăn và các sprint có thể mất thời gian hơn dự tính ban đầu.

Các vai trò trong Scrum

Có ba vai trò chính trong Scrum:

Product Owner:

Product Owner là người biết rõ nhất về việc dự án sẽ tạo ra sản phẩm gì và truyền đạt thông tin lại cho nhóm. Product Owner chủ yếu tập trung vào yêu cầu kinh doanh và thị trường, phân loại các công việc cần hoàn thành. Họ xây dựng và quản lý product backlog (danh sách các yêu cầu chưa được giải quyết), hướng dẫn việc các chức năng nào cần được xử lý tiếp theo và làm việc với nhóm và các bên liên quan để đảm bảo sự hiểu biết chung về nội dung trong product backlog. Product Owner không phải là người quản lý dự án, mà là người tạo động lực cho nhóm để đạt được mục tiêu cuối cùng của dự án.

Scrum Master:

Scrum Master là người hướng dẫn nhóm và hỗ trợ nhóm làm công việc của họ tốt nhất. Vai trò này tổ chức các cuộc họp, giải quyết vấn đề và làm việc với Product Owner để đảm bảo product backlog sẵn sàng cho sprint tiếp theo. Scrum Master cũng đảm bảo nhóm thực hiện theo quy trình Scrum. Mặc dù không có quyền lệnh như các thành viên khác trong nhóm, nhưng Scrum Master có quyền đề xuất thời gian cho một sprint, ví dụ như cho rằng sprint nên kéo dài bao lâu.

Scrum Team:

Scrum Team thường bao gồm 5 đến 7 thành viên. Mọi người trong nhóm làm việc và hỗ trợ lẫn nhau. Khác với các nhóm truyền thống, không có vai trò chuyên biệt như lập trình viên, thiết kế hay kiểm thử. Thay vào đó, mọi người trong nhóm cần hoàn thiện tất cả công việc cùng một lúc. Scrum Team định kế hoạch cho mỗi sprint và quyết định số công việc mà họ có thể hoàn thành trong mỗi sprint.

Các bước trong quy trình Scrum

Scrum có một số bước không thay đổi trong quy trình như sau:

Product backlog:

Product Owner và Scrum Team họp để xác định mức độ ưu tiên của các yêu cầu trong product backlog (các yêu cầu đến từ user stories và các yêu cầu khác). Product backlog không phải là danh sách các công việc cần hoàn thành, mà giống như danh sách các chức năng mong muốn của một sản phẩm. Sau đó, nhóm phát triển sẽ chọn các công việc từ product backlog để hoàn thành trong mỗi sprint.

Sprint planning:

Trước mỗi sprint, Product Owner đưa ra các yêu cầu ưu tiên trong product backlog. Nhóm sẽ lựa chọn các công việc mà họ có thể hoàn thành trong sprint đó và di chuyển chúng từ product backlog sang sprint backlog (danh sách các công việc cần hoàn thành trong sprint).

Backlog refinement/grooming:

Trong quá trình của mỗi sprint, nhóm và Product Owner tổ chức cuộc họp để đảm bảo nội dung backlog cho sprint tiếp theo. Nhóm có thể loại bỏ các user story không liên quan, tạo ra các user story mới, đánh giá độ ưu tiên của các user story hoặc chia nhỏ các user story thành các công việc nhỏ hơn. Mục tiêu của quá trình "chải chuốt" này là đảm bảo backlog chỉ bao gồm các yêu cầu liên quan và chi tiết phù hợp với mục tiêu của dự án.

Daily Scrum meetings:

Cuộc họp hàng ngày là cuộc họp ngắn kéo dài khoảng 15 phút và thường được tổ chức đứng. Trong cuộc họp này, thành viên nhóm chia sẻ mục tiêu và những vấn đề mà họ gặp phải. Cuộc họp hàng ngày được tổ chức trong suốt quá trình sprint để đảm bảo nhóm duy trì sự kiểm soát.

Sprint review meeting:

Khi kết thúc mỗi sprint, nhóm sẽ trình bày công việc mà họ đã hoàn thành trong cuộc họp này. Cuộc họp này nên có phần demo thay vì chỉ là một báo cáo trình chiếu PowerPoint.

Sprint retrospective meeting:

Cũng vào giai đoạn kết thúc mỗi sprint, nhóm sẽ tổ chức cuộc họp để đánh giá và phản hồi về quá trình Scrum và đề xuất cải tiến cho sprint tiếp theo. Nhóm cũng có thể nêu ra những điểm tốt, những điểm chưa tốt và những điều mà họ có thể làm khác trong quá trình của mỗi sprint.

Công cụ, tài liệu và phương pháp trong Scrum

Ngoài các vai trò và lễ nghi, các dự án Scrum cũng sử dụng các công cụ, tài liệu và phương pháp cụ thể. Ví dụ, nhóm sử dụng Scrum board để trực quan hóa backlog hoặc burndown chart để hiển thị công việc còn lại. Một số công cụ, tài liệu và phương pháp phổ biến nhất bao gồm:

Scrum board:

Bạn có thể trực quan hóa sprint backlog của mình bằng một Scrum task board. Board có thể có nhiều hình thức khác nhau, thường bao gồm các thẻ chỉ mục, ghi chú Post-It hoặc bảng trắng. Scrum board thường được chia thành ba phần: cần làm, đang thực hiện và đã hoàn thành. Nhóm Scrum cần cập nhật board trong suốt toàn bộ sprint. Ví dụ, nếu ai đó đề xuất một công việc mới, họ sẽ viết một thẻ mới và đặt nó vào cột phù hợp.

User stories:

Một user story mô tả một tính năng phần mềm từ góc nhìn của khách hàng. Nó bao gồm loại người dùng, những gì họ muốn và tại sao họ muốn. Các user story có cấu trúc tương tự: "Là một , tôi muốn để đạt được mục tiêu>". Nhóm phát triển sử dụng các user story này để tạo mã đáp ứng yêu cầu của chúng.

Burndown chart:

Một burndown chart biểu thị tất cả các công việc còn lại. Backlog thường nằm trên trục dọc, với thời gian trên trục ngang. Công việc còn lại có thể được biểu thị bằng điểm story, ngày lý tưởng, ngày công việc của nhóm hoặc các phương pháp khác. Burndown chart có thể cảnh báo nhóm nếu việc không đi theo kế hoạch và giúp hiển thị tác động của quyết định.

Large-Scale Scrum (LeSS):

Nếu bạn muốn mở rộng thành phần Scrum lên hàng trăm nhà phát triển, framework Large-Scale Scrum (LeSS) giúp mở rộng quy tắc và hướng dẫn mà không mất bản chất của Scrum. Các nguyên tắc được trích dẫn trực tiếp từ Scrum, nhưng tập trung vào việc mở rộng mà không thêm quá nhiều quy trình hoặc vai trò.

Timeboxing:

Timeboxing là một khoảng thời gian cố định trong đó nhóm làm việc để hoàn thành mục tiêu. Thay vì cho phép nhóm làm việc cho đến khi mục tiêu được đạt, phương pháp timeboxing ngừng công việc khi hết thời gian quy định. Thường sử dụng các phiên hạn thời gian trong Scrum và Extreme Programming.

Icebox:

Bất kỳ user story nào được ghi lại nhưng chưa được đưa vào phát triển được lưu trữ trong icebox. Thuật ngữ "icebox" đã được tạo ra bởi Pivotal Tracker, một công cụ quản lý dự án Agile.

Scrum và RUP:

Dù Scrum và Rational Unified Process (RUP) đều tuân theo framework Agile, RUP đi kèm với việc xác định cụ thể về phạm vi, các mốc quan trọng và các ngày cụ thể (Scrum sử dụng backlog dự án thay vì phạm vi cụ thể). Ngoài ra, RUP bao gồm bốn giai đoạn chính trong vòng đời dự án (khởi đầu, phác thảo, xây dựng và chuyển giao), trong khi Scrum cho rằng "vòng đời truyền thống" thích hợp cho một vòng lặp.

Lean và Scrum:

Scrum là một framework phát triển phần mềm, trong khi Lean giúp tối ưu quá trình đó. Mục tiêu chính của Scrum là trọng tâm vào con người, trong khi Lean tập trung vào quy trình. Cả hai đều được coi là các kỹ thuật Agile, tuy nhiên Lean giới thiệu hai khái niệm chính: loại bỏ lãng phí và cải thiện quy trình.

Ảnh:

Trong bài viết này, chúng ta đã tìm hiểu về Scrum là gì, những ưu điểm và nhược điểm của mô hình này, các vai trò trong Scrum và các bước quy trình Scrum. Chúng ta cũng đã khám phá các công cụ, tài liệu và phương pháp phổ biến trong Scrum. Scrum là một lựa chọn phổ biến cho việc phát triển phần mềm theo hướng Agile, và hi vọng rằng bạn đã có cái nhìn sâu sắc hơn về nó sau bài viết này.

Nguồn: https://www.smartsheet.com/agile-vs-scrum-vs-waterfall-vs-kanban

1