Scrum là gì? Áp dụng Scrum trong phát triển phần mềm như thế nào?

Scrum là gì?

Scrum là một framework về quy trình và quản lý giúp giải quyết các vấn đề phức tạp, nhưng vẫn đảm bảo tính hiệu quả, sáng tạo và sản phẩm được tạo ra phải đạt được giá trị cao nhất. Nó khuyến khích các team học hỏi qua thực nghiệm, tự tổ chức khi giải quyết vấn đề, cũng như phản ánh những mặt đạt được và thiếu sót để từ đó từng bước phát triển.

3 trụ cột của Scrum

Minh bạch (Transparency)

Trong quá trình phát triển, các thông tin liên quan đến dự án phải được minh bạch và thông suốt. Các thông tin có thể là: mục tiêu dự án, yêu cầu khách hàng, tiến độ công việc, các rào cản khó khăn,...

Ngoài ra, các yếu tốt này cần phải được định nghĩa theo một tiêu chuẩn để người quan sát có thể hiểu những gì họ thấy theo cùng một cách.

Giám sát (Inspection)

Các hoạt động trong quá trình thực hiện dự án phải được thường xuyên giám sát và đánh giá tiến độ để phát hiện kịp thời các sự cố không mong muốn.

Thích nghi (Adaption)

Thích nghi trong bối cảnh này chính là phải liên tục phát triển. Tất cả mọi người luôn phải đặt ra câu hỏi trong đầu: "Liệu chúng ta có làm tốt hơn ngày hôm qua hay không?". Các sự điều chỉnh cần phải được thực hiện ngay khi có thể để giảm thiểu tối đa các vấn đề cũng như sự sai lệch của dự án.

5 giá trị cốt lõi của Scrum

Cam kết :

Mỗi thành viên cam kết với các thành viên khác về những điều mình làm & công việc đã được chọn ở buổi lập kế hoạch Sprint.

Tập trung:

Mọi người tập trung vào công việc của Sprint & Mục tiêu Sprint của Nhóm.

Khi Nhóm Phát triển đã cam kết với những việc trong Sprint, họ cần phải tập trung để hoàn thành những gì mà mình đã cam kết. Theo các tác giả của Scrum thì Nhóm Scrum có thể phát triển gấp đôi sản lượng với một nửa thời gian. Nếu không có sự tập trung, nhóm không thể làm được điều này.

Cởi mở:

Mọi thứ cần được cởi mở để các thành viên trong team có thể nắm bắt được công việc cũng như hiểu hết các vấn đề khó khăn đang gặp phải.

Phát triển phần mềm rất phức tạp, một người khác không thể nhìn và hiểu được hết tất cả mọi vấn đề ở một công việc. Do đó nếu mọi người không cởi mở với nhau, thông tin bị che giấu rất nhiều và hiệu quả công việc khó lòng có thể nâng cao.

Tôn trọng:

Các thành viên trong team cần phải tôn trọng lẫn nhau, giúp nhau trở nên tốt hơn và có thể độc lập hoàn thành công việc của mình. Thiếu đi sự tôn trọng các thành viên trong team không thể làm việc với nhau được.

Lòng can đảm:

Thành viên trong team cần có sự can đảm để làm điều đúng đắn cũng như làm việc trong điều kiện khó khăn.

Các vai trò trong Scrum

Trong scrum, đội ngũ phát triển được phân chia theo ba vai trò với trách nhiệm rõ ràng như sau:

Development Team

Development team ở đây không chỉ có kỹ sư phần mềm mà còn bao gồm tất cả mọi thành phần tham gia quá trình phát triển dự án, có thể là designers, programmers, writers,...

Product Owner

Là người chịu trách nhiệm về thành công của dự án, người định nghĩa các yêu cầu và đánh giá cuối cùng đầu ra của bên phát triển phần mềm. Product Owner phải tiếp nhận tất cả yêu cầu và lập ra các trình tự công việc. Việc này vô cùng quan trọng bởi nếu không có thứ tự ưu tiên cũng như chỉ dẫn rõ ràng sẽ dẫn đến việc team làm việc kém hiệu quả.

Product Owner không chỉ hiểu khách hàng, mà còn có tầm nhìn về giá trị mà đội ngũ scrum team có thể mang lại cho khách hàng. Đồng thời product owner còn phải cân bằng về lợi ích của các bên tham gia trong tổ chức.

Scrum Master

Là người có hiểu biết sâu sắc về Scrum.

Scrum Master chịu trách nhiệm tổng hợp mọi thứ lại và đảm bảo team làm việc hiệu quả với Scrum. Ngoài ra, Scrum Master còn giúp Product Owner hiểu rõ hơn về các giá trị, lập kế hoạch và chia nhỏ công việc một cách hiệu quả nhất.

Các công cụ trong Scrum

Sprints

Trong scrum, một sản phẩm được xây dựng dựa trên một loạt các giải đoạn lặp đi lặp lại, chia nhỏ dự án thành các phần gọi là các sprints.

Sprints là khoảng thời gian cố định được lập ra để một team hoàn thành công việc, thường gói gọn trong vòng 1 tháng.

Product Backlogs

Đây là danh sách các công việc được sắp xếp theo thứ tự ưu tiên dành cho đội ngũ phát triển, bao gồm lộ trình và các yêu cầu của nó.

Product Owner sắp xếp công việc dựa trên độ quan trọng của công việc giúp team biết được phần nào cần được hoàn thành và bàn giao trước.

Sprint Backlog

Bản kế hoạch cho một sprint, được hình thành sau buổi họp sprint planning. Các công việc sẽ được phân chia theo thứ tự ưu tiên và được thể hiện dưới dạng Todo List( Danh sách các công việc cần làm)

Burndown chart

Burndown chart là biểu đồ thể hiện xu hướng của dự án dựa trên thời gian cần thiết còn lại để hoàn thành công việc.

Burndown chart có thể dùng để theo dõi tiến trình của sprint hoặc của cả dự án.

Increment

Increment là tổng hợp tất cả các product backlog được hoàn thiện trong suốt một sprint và giá trị tăng trưởng của tất cả các sprints trước đó.

Scrum không chỉ đơn giản tách quá trình phát triển thành các Sprint nhỏ liên tiếp nhau, mà cuối mỗi Sprint đòi hỏi nhóm phát triển phải chuyển giao một phần tính năng “hoàn chỉnh” (done) của sản phẩm. Hoàn chỉnh ở đây được hiểu theo nghĩa được Product Owner chấp nhận dựa theo Định nghĩa hoàn thành ( Definition of Done ) đã được thống nhất trước đó.

Định nghĩa của "Done": Thành quả của Nhóm Phát triển sau mỗi Sprint là Phần tăng trưởng Sản phẩm Có khả năng Chuyển giao được. Tức là những hạng mục trong Product Backlog đã “Hoàn thành”. Tuy nhiên những thành viên khác nhau có cách hiểu khác nhau.

Ví dụ cách hiểu về “Hoàn thành” ở một nhóm:

  • Một nhà phát triển mới vào nghề: đã lập trình xong, tính năng chạy được
  • Một nhà phát triển có 2 năm kinh nghiệm có thêm: mã nguồn đã được kiểm tra chéo
  • Một nhà phát triển dày dặn có thêm: được tích hợp, vượt kiểm thử chấp nhận người dùng và vượt qua kiểm thử hồi quy.

Các buổi họp trong Scrum

Sprint Planning

Thời điểm : bắt đầu của một sprint

Thời lượng : thường trong khoảng 1h đối với kick off sprint trong 1 tuần

Mục tiêu:: Sprint planning là buổi họp chuẩn bị cho cả team để đem đến thành công xuyên suốt sprint. Đến với buổi họp, Product Owner sẽ có danh sách thứ tự ưu tiên công việc (product backlog) và cùng với đội ngũ phát triển thảo luận cũng như ước lượng thời gian cần thiết để hoàn thành các task đó.

Daily Stand-up

Thời điểm: Mỗi ngày một lần, thường vào buổi sáng bắt đầu ngày làm việc

Thời lượng: Không dài hơn 5 phút, chỉ cần đứng tại chỗ họp

Mục tiêu: Stand-up là buổi họp giúp mọi người nắm được điều gì đang xảy ra trong team. Mỗi thành viên phải trả lời các câu hỏi sau:

  • Hôm qua đã làm được gì?
  • Hôm nay sẽ làm gì?
  • Có gì vướng mắc không?

Sprint Review

Thời điểm: Kết thúc một sprint

Thời lượng: 30-60 phút

Mục tiêu: rà soát lại công việc đã hoàn thành, lấy ý kiến đánh giá từ các bên liên quan, đề suất chỉnh sửa cũng như các thay đổi cần thiết cho sản phẩm.

Retrospective

Thời điểm: Kết thúc một chu kì

Thời lượng: 60 phút

Mục tiêu : Giúp team hiểu được những việc đã đạt được và những việc chưa đạt được, từ đó tìm ra phương pháp cải tiến cũng như những kế hoạch, hành động phát triển.

Quy trình vận hành Scrum như thế nào?

Product Owner tạo ra một product backlog chứa các yêu cầu của dự án chứa các chức năng được sắp xếp theo thứ tự ưu tiên.

Trước khi bắt đầu sprint, các thành viên họp buổi họp Sprint Planning Meeting để lập kế hoạch cho từng sprint, kết quả là một bản sprint backlog.

Development Team sẽ thực hiện các yêu cầu của Product Owner và dưới sự chỉ dẫn, giám sát của Scrum Master với các chu kì sprint kéo dài từ 1-4 tuần. Từ việc nhận các phần trong product backlog, team members sẽ bàn giao các gói phần mềm tương ứng.

Trong suốt quá trình phát triển, team sẽ phải cập nhật backlog và thực hiện Daily Stand-up để cập nhật tiến độ công việc cũng như chia sẻ những vướng mắc, khó khăn gặp phải trong quá trình làm việc cùng nhau.

Khi kết thúc sprint, team tạo các gói phần mềm có chức năng hoàn chỉnh, sẵn sàng bàn giao cho khách hàng. Buổi họp Sprint Review sẽ giúp team thấy được đã làm được những gì, có thể chuyển giao những gì và điều gì còn phải làm, cải tiến,..

Sau khi kết thúc Sprint Review, Scrum Master tổ chức họp Sprint Retrospective để tìm kiếm cải tiến trước khi sprint mới bắt đầu.

Các Sprint sẽ được lặp đi lặp lại cho tới khi nào các hạng mục trong Product Backlog đều được hoàn tất hoặc khi Product Owner quyết định có thể dừng dự án căn cứ tình hình thực tế.

Lợi ích của Scrum

  • Chất lượng tốt hơn
  • Giảm thời gian đưa ra thị trường
  • Lợi nhuận từ đầu tư cao hơn
  • Khách hàng hài lòng hơn
  • Tinh thần nhóm cao hơn
  • Cải thiện sự minh bạch và tiến độ dự án
  • Giảm thiểu rủi ro

Source

https://www.atlassian.com/agile/scrum

https://www.scrum.org/resources/what-is-an-increment

https://www.scrumguides.org/scrum-guide.html#values

https://www.scrum.org/resources/blog/5-scrum-values-take-center-stage

All Rights Reserved