What is Scrum? How it works?

Scrum là gì?

Scrum là là một quy trình phát triển phần mềm theo phương pháp Agile. Nói rõ hơn: Scrum được xây dựng dựa trên lý thuyết quản lý tiến trình thực nghiệm (empirical process control), lý thuyết này chỉ ra rằng tri thức đến từ kinh nghiệm và việc ra quyết định được dựa trên những gì đã biết. Scrum sử dụng cơ chế lặp (iterative) và tăng trưởng (incremental) để tối ưu hóa tính hiệu quả và kiểm soát rủi ro.

Khung làm việc Scrum có gì?

Ba yếu tố nòng cốt tạo thành một mô hình quản lý tiến trình thực nghiệm gồm: transparency (tính minh bạch), inspection (kiểm duyệt) và adaptation (tính thích nghi).

Transparency

Trong Scrum, tính minh bạch được đề cao như là giá trị cốt lõi cơ bản nhất. Muốn thành công với Scrum, thông tin liên quan tới quá trình phát triển phải minh bạch và thông suốt. Các thông tin đó có thể là: tầm nhìn (vision) về sản phẩm, yêu cầu khách hàng, tiến độ công việc, các khúc mắc và rào cản v.v. Từ đó mọi người ở các vai trò các nhau có đủ thông tin cần thiết để tiến hành các quyết định có giá trị để nâng cao hiệu quả công việc. Các công cụ và cuộc họp trong Scrum luôn đảm bảo thông tin được minh bạch cho các bên.

Inspection

Công tác kiểm duyệt liên tục các hoạt động trong Scrum đảm bảo cho việc phát hiện các vấn đề cũng như giải pháp để các thông tin đến được với các bên tham gia dự án. Kiểm duyệt kĩ càng và liên tục là cơ chế khởi đầu cho việc thích nghi và các cải tiến liên tục trong Scrum.

Adaptation

Scrum rất linh hoạt như các phương pháp phát triển agile khác. Nhờ đó nó mang lại tính thích nghi rất cao. Dựa trên các thông tin minh bạch hóa từ các quá trình kiểm duyệt và làm việc, Scrum có thể phản hồi lại các thay đổi một cách tích cực, nhờ đó mang lại thành công cho dự án.

Các vai trò trong Scrum

Trong Scrum, đội ngũ tham gia phát triển phần mềm được phân chia ra ba vai trò bao gồm: Product Owner (PO), Scrum Master (SM) và Development Team.

Product Owner

Là người chịu trách nhiệm về sự 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 các nhà phát triển phần mềm.

Scrum Master

Là người có hiểu biết sâu sắc về Scrum và đảm bảo nhóm có thể làm việc hiệu quả với Scrum.

Development Team

Một nhóm các developer phát triển các chức năng trong Product Backlog thành chức năng của hệ thống hay sản phẩm.

Các sự kiện trong Scrum

Scrum định nghĩa quy tắc cho 4 sự kiện chủ chốt nhằm tạo môi trường và quy cách hoạt động và cộng tác cho các thành viên trong dự án.

Sprint Planning

Nhóm phát triển gặp gỡ với PO để lên kế hoạch làm việc cho một Sprint. Công việc lập kế hoạch bao gồm việc chọn lựa các yêu cầu cần phải phát triển, phân tích và nhận biết các công việc phải làm kèm theo các ước lượng thời gian cần thiết (estimate) để hoàn tất các tác vụ. Scrum sử dụng cách thức lập kế hoạch từng phần và tăng dần theo thời gian, theo đó, việc lập kế hoạch không diễn ra duy nhất một lần trong vòng đời của dự án mà được lặp đi lặp lại.

Daily Scrum

SM tổ chức cho Development Team hằng ngày trong khoảng 15 phút để các thành viên trong nhóm chia sẻ tiến độ công việc cũng như chia sẻ các khó khăn gặp phải trong Sprint.

Sprint Review

Cuối Sprint, Dev Team với PO sẽ rà soát lại các công việc đã hoàn tất trong Sprint vừa qua và đề xuất các chỉnh sửa hoặc thay đổi cần thiết cho sản phẩm.

Sprint Retrospective

Dưới sự trợ giúp của SM, Dev Team rà soát lại toàn diện Sprint vừa kết thúc và tìm cách cải tiến quy trình làm việc cũng như bản thân sản phẩm.

Một số công cụ trong Scrum

Scrum sử dụng các công cụ rất đơn giản nhưng hiệu quả để trợ giúp công việc. Một số trong số đó là:

Product backlog

Đây là danh sách ưu tiên các tính năng hoặc đầu ra khác của dự án, có thể hiểu như là danh sách yêu cầu của dự án. PO chịu trách nhiệm sắp xếp độ ưu tiên cho từng hạng mục trong Product Backlog dựa trên các giá trị do PO định nghĩa (thường là giá trị thương mại – business value).

Sprint backlog

Đây là bản kế hoạch cho một Sprint, là kết quả của Sprint Planning. Với sự kết hợp của PO, nhóm sẽ phân tích các yêu cầu theo độ ưu tiên từ cao xuống thấp để hiện thực hóa các hạng mục trong Product Backlog dưới dạng danh sách công việc.

Burndown Chart

Đây là biểu đồ hiển thị xu hướng của dự án dựa trên lượng thời gian cần thiết còn lại để hoàn tất công việc. Burndown Chart có thể được dùng để theo dõi tiến độ của Sprint hoặc của cả dự án.

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

PO tạo ra Product Backlog chứa các yêu cầu của dự án với các hạng mục được sắp theo thứ tự ưu tiên. Development Team (DT) sẽ thực hiện việc hiện thực hóa dần các yêu cầu của PO với sự lặp đi lặp lại các giai đoạn từ 1 đến 4 tuần làm việc (Sprint) với đầu vào là các hạng mục trong Product Backlog, đầu ra là các gói phần mềm hoàn chỉnh có thể chuyển giao được. Trước khi bắt đầu một Sprint, DT cùng họp với PO để lập kế hoạch cho Sprint. Kết quả của buổi lập kế hoạch là Sprint Backlog chứa các công việc cần làm trong Sprint. Trong suốt quá trình phát triển, nhóm sẽ phải cập nhật Sprint Backlog và thực hiện công việc họp hằng ngày để chia sẻ tiến độ công việc cũng như các vướng mắc trong quá trình làm việc cùng nhau. DT được trao quyền để tự quản lí và tổ chức lấy công việc của mình để hoàn thành công việc trong Sprint. Khi kết thúc Sprint, nhóm tạo ra các gói phần mềm có chức năng hoàn chỉnh, sẵn sàng chuyển giao cho khác hàng. Buổi họp Sơ kết Sprint (Sprint Review) ở cuối Sprint sẽ giúp khách hàng thấy được DT đã có thể chuyển giao những gì, còn những gì phải làm hoặc còn gì phải thay đổi hay cải tiến. Sau khi kết thúc việc đánh giá Sprint, SMDT cùng tổ chức họp cải tiến Sprint (Retrospective) để tìm kiếm các cải tiến trước khi Sprint tiếp theo bắt đầu, điều này sẽ giúp nhóm liên tục học hỏi và trưởng thành qua từng Sprint.

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 PO quyết định có thể dừng dự án căn cứ tình hình thực tế. Do sử dụng chiến thuật “có giá trị hơn làm trước” nên các hạng mục mang lại nhiều giá trị hơn cho chủ dự án luôn được hoàn tất trước. Do đó Scrum luôn mang lại giá trị cao nhất cho người đầu tư cho dự án. Do quy trình luôn luôn được cải tiến, nhóm Scrum thường có năng suất lao động rất cao. Đây là hai lợi ích to lớn mà Scrum mang lại cho tổ chức.