Làm trong ngành phát triển phần mềm, nói đến Scrum chắc hẳn phần lớn ai cũng một hình dung nhất định về Scrum. Tuy nhiên, mỗi người có thể có một góc nhìn, một cách hiểu khác nhau. Ở đây, xin phép viết về Scrum một cách ngắn gọn theo góc nhìn của mình.
Scrum
Scrum là một khung làm việc (framework) dùng để phát triển sản phẩm hoặc giải quyết những vấn đề phức tạp.
Ngày nay, với sự thay đổi liên tục của thị trường và công nghệ, dẫn đến việc đưa ra yêu cầu hoàn chỉnh cho một sản phẩm ngay từ ban đầu gần như là không thể. Vì vậy, Scrum giải quyết bằng cách tập trung phát triển sản phẩm trong 1 khoảng thời gian cố định (time boxes). Cộng với lấy phản hồi (feedback loops) thường xuyên để đảm bảo một dự án không thất bại.
Fail fast, Learn fast
Sprint
Scrum gói tất cả các bước cần thiết để phát triển một sản phẩm như lấy yêu cầu (requirements), phân tích (analyses), thiết kế (design), phát triển (development) và thử nghiệm (testing) vào một khoảng thời gian lặp, cố định được gọi là Sprint.
Ngay từ Sprint đầu tiên, chúng ta sẽ cần cố gắng tạo ra một flow chức năng hoàn chỉnh có thể hoạt động được, ví dụ:
- Nên: Đăng ký – đăng nhập nên làm cùng trong 1 Sprint.
- Không nên: Đăng ký xong rồi tạo post là cùng với nhau.
Đăng ký xong không đăng nhập được thì chức năng post bài, khách hàng không test được hoặc không đúng thực tế nếu đăng bài mà ko cần đăng nhập.
Sau mỗi Sprint, team sẽ demo ngay chức năng đó cho khách hàng – lấy phản hồi. Và sau đó cùng nhau bàn về những gì nên làm tiếp theo. Khách hàng thường chỉ có thể biết được những gì họ thực sự muốn sau khi được xem demo sản phẩm. Các Sprint cho phép phản hồi và cải tiến liên tục. Từ đó, tạo ra được sản phẩm phù hợp với yêu cầu thực tế.
Scrum Team
Một Scrum Team bao gồm 3 vai trò: Product Owner, Developer và Scrum Master.
Product Owner sẽ tạo một danh sách các tính năng (features) được gọi là Product Backlog. Và sau đó sắp xếp chúng theo mức độ quan trọng. Các features quan trọng hơn được ở trên cùng. Khi lập kế hoạch Sprint (Sprint Planning), team sẽ chọn một danh sách các features trong Product Backlog từ trên xuống. Và làm rõ các chức năng đảm bảo:
- Team có thể thực hiện được các chức năng đó trong khoảng thời gian của một Sprint.
- Mọi người trong team đều nắm rõ mục tiêu của Sprint (Sprint Goal). Hiểu các chức năng cần thực hiện và thực hiện như thế nào.
Team sẽ họp hàng ngày (Daily Scrum) để nắm được công việc đã hoàn thành, xác định các vấn đề và công việc tiếp theo sẽ làm trong 24h tiếp theo. Scrum Master là người đảm bảo team tập trung vào mục tiêu của Sprint.
Vào cuối Sprint, Scrum Team cùng với các bên liên quan (khách hàng,...) tiến hành demo, đánh giá chức năng đã hoàn thành trong buổi Sprint Review. Kết thúc một Sprint là họp tối ưu Sprint (Sprint Retrospective) để cùng đưa ra các vấn đề và các cải tiến của thể thực hiện trong Sprint tiếp theo.
Trên đây là tổng quan về Scrum một cách ngắn gọn. Hy vọng bài viết này mang lại một góc nhìn khác, cách lắp ghép các thành phần của Scrum với nhau một cách dễ hiểu hơn cho mọi người.