Sắp tới dự án mình đang tham gia sẽ tiến hành áp dụng Scrum Trong lúc tìm hiểu lại những kiến thức về Scrum mình cũng chia sẽ những khái niệm cơ bản về Scrum để những người mới tiếp cận cũng có thể hiểu theo một cách đơn giản nhất.
Mục đích của scrum
Là một framework áp dụng cho việc phát triển và duy trì sản phẩm có độ phức tạp cao.
Định nghĩa scrum
Scrum giúp con người có thể dễ dàng thích nghi với những vấn đề phức tạp, giúp tăng hiệu quả và sự sáng tạo trong quá trình sản xuất sản phẩm với giá trị cao nhất có thể.
Scrum bao gồm các team và sự liên kết giữa các team về vai trò, sự kiện và các quy tắc trong Scrum. Để sử dụng Scrum thành công trong công việc, mỗi thành phần bên trong nó đều phải hướng tới một mục đích cụ thể.
Scrum sử dụng cách tiếp cận từng bước lặp đi lặp lại để tối ưu hóa khả năng dự báo tình huống và hạn chế rủi ro.
-
3 nguyên tắc để duy trì quá trình kiểm soát thực nghiệm:
- Transparency (Minh bạch): các task trong Scrum phải được khai báo đầy đủ cho những người chịu trách nhiệm về kết quả. Sự minh bạch được xác định bởi 1 tiêu chuẩn chung để những người trong team có thể chia sẻ hiểu biết chung về những gì đang được nhìn thấy.
- Inspection (Theo dõi): người sử dụng Scrum phải thường xuyên kiểm tra tiến độ thực hiện để hướng tới một mục tiêu đã đề ra mà không bị chệch hướng. Việc kiểm tra không nên quá thường xuyên mà hãy tập trung vào những điểm quan trọng.
- Adaptation (Tương thích): nếu QA phát hiện ra quá trình phát triển đang đi chệch hướng. Quá trình đó sẽ phải được điều chỉnh càng sớm càng tốt. Scrum quy định bốn event chính để theo dõi và tương thích: Sprint planning, Daily Scrum, Sprint review, Sprint retrospective.
Scrum Team
Một đội scrum bao gồm: Product Owner, Development team và Scrum Master.
- Product Owner: Là người chịu trách nhiệm cao nhất đối với sản phẩm và Development Team. Chủ sản phẩm có trách nhiệm làm việc với chủ đầu tư để hiểu yêu cầu về sản phẩm, quản lý những yêu cầu đó, tạo ra những User Story đối với sản phẩm và truyền đạt những thông tin đó đến đội phát triển. Product Owner là người duy nhất chịu trách nhiệm quản lý Product Backlog gồm:
- Thể hiện rõ mục Product Backlog
- Thứ tự các mục trong Product Backlog
- Tối ưu hóa giá trị công việc của Development Team
- Đảm bảo Product Backlog là rõ ràng, minh bạch cho tất cả
- Đảm bảo nhóm Development Team hiểu được các mục trong Product Backlog
- Development Team
- Là một tập hợp những kỹ sư đa năng - nghĩa là công việc của họ không cố định ở lập trình, kiểm thử, phân tích hay thiết kế. Tùy theo yêu cầu công việc mà họ sẽ đảm nhận những vai trò tương ứng.
- Development Team được quyền chủ động tổ chức công việc, ước lượng khối lượng công việc và cam kết hoàn thành công việc đã cam kết.
- Trong Sprint, Development Team có tiếng nói lớn nhất và những bộ phận khác có nhiệm vụ hỗ trợ những điều kiện tốt nhất để nhóm làm việc hiệu quả.
- Nên tối ưu kích thước Development Team đủ nhỏ để nhanh nhẹn và đủ lớn để hoàn thành công việc trong vòng Sprint.
- Ít hơn ba thành viên trong Development Team làm giảm sự tương tác và tốc độ tăng năng suất chậm.
- Có hơn chín thành viên đòi hỏi sự phối hợp quá nhiều. Development Team lớn tạo ra nhiều phức tạp cho việc quản lý.
- Scrum Master
- Nhiệm vụ của Scrum Master là giúp mọi người trong nhóm hiểu được Scrum, làm theo Scrum đồng thời hỗ trợ Development Team để họ có thể toàn tâm toàn ý làm việc. Nếu có ai đó thắc mắc về quy trình trong Scrum, ý nghĩa của Scrum hay những vấn đề liên quan đến Scrum khác, hãy tìm gặp Scrum Master.
- Scrum Master tương tác với Product Owner để:
- Tìm kiếm các kỹ thuật để giải quyết Product Backlog hiệu quả.
- Đảm bảo Product Owner biết làm thế nào để sắp xếp Product Backlog để tối đa hóa giá trị.
Scrum event
Các event được sử dụng trong scrum để giảm thiểu các cuộc họp theo cách bộc phát. Tất cả các event đều có một khoảng thời gian cố định. Khi một Sprint bắt đầu, thời gian của Sprint là cố định và không thể rút ngắn hoặc kéo dài. Các event của Sprint thì có thể kết thúc bất cứ khi nào mục đích của event đạt được.
Sprint
-
Có thể ví Sprint là trái tim của Scrum. Sprint đặt sẵn một** khoảng thời gian cố định** tối đa là một tháng hoặc ít hơn để tạo ra phần tăng trưởng cho sản phẩm.
-
Một Sprint mới bắt đầu ngay khi Sprint cũ kết thúc.
-
Mỗi Sprint bao gồm: Sprint Planning, Daily Scrums, Development Work, Sprint Review, Sprint Retrospective.
-
Trong suốt Sprint:
- Không được thay đổi những việc gây ảnh hướng đến mục đích của Sprint.
- Chất lượng mục tiêu đạt được không được giảm.
- Mục tiêu có thể tái đàm phán giữa Product Owner và Development Team để làm rõ hơn.
- Một Sprint có thể được hủy bỏ trước khi thời hạn Sprint kết thúc. Chỉ có Product Owner mới có quyền hủy Sprint.
Sprint Planning
- Các công việc được thực hiện trong một Sprint được lên kế hoạch trong Sprint Planning.
- Kế hoạch này được tạo ra bởi toàn bộ nhóm Scrum. Thời gian tối đa cho Sprint Planning là 8 tiếng/1 tháng. Đối với Sprint ngắn hơn thì thời gian này là ngắn hơn.
- Sprint Planning họp để trả lời 2 câu hỏi:
- Điều gì có thể đưa vào giúp tăng trưởng kết quả trong Sprint sắp tới?
- Làm thế nào để các công việc được đưa vào đó sẽ giúp đạt được việc tăng trưởng?
Daily Scrum
- Daily Scrum là sự kiện kéo dài 15 phút cho Development Team lên kế hoạch hoạt động trong 24 giờ tới.
- Điều này được thực hiện bằng cách kiểm tra các công việc kể từ lần Daily Scrum trước và đề ra các công việc thực hiện trước khi cuộc họp Daily Scrum kế tiếp diễn ra.
- Trong cuộc họp, mỗi thành viên trong nhóm Development đều phải giải thích 3 câu hỏi: -Tôi đã làm gì ngày hôm qua để đáp ứng các mục tiêu Sprint? -Tôi dự định sẽ làm gì ngày hôm nay để đáp ứng các mục tiêu Sprint? -Tôi gặp trở ngại gì khi thực hiện việc đó?
Sprint Review
- Vào cuối mỗi Sprint, nhóm sẽ trình bày những phần mình đã làm được trong Sprint hay còn gọi là demo trên sản phẩm thật.
- Thành phần tham dự là tất cả những ai quan tâm đến sản phẩm.
- Cuộc họp sẽ giúp** đánh giá** xem nhóm có đạt được mục tiêu đề ra ở buổi họp kế hoạch Sprint hay không.
Sprint Retrospective
- Buổi họp này thường diễn ra ngay sau buổi họp sơ kết Sprint và mất tầm khoảng 1-2 giờ thảo luận.
- Trong buổi họp nhóm sẽ đánh giá những việc mình đã làm và cách để làm cho nó tốt hơn.
- Về cơ bản, buổi họp sẽ xoay quanh trả lời những câu hỏi:
- Những việc nào chúng ta nên bắt đầu làm?
- Những việc nào chúng ta không nên làm tiếp?
- Những việc nào chúng ta nên duy trì làm tiếp?
Sau khi có được danh sách những việc “cần bắt đầu làm”, “không nên”, “nên duy trì”, nhóm sẽ thống nhất chọn ra vài thứ mà nhóm sẽ tập trung để cải tiến trong Sprint kế tiếp. Kết quả thực thi những cải tiến này sẽ được thảo luận trong buổi họp cải tiến của Sprint sau.
Scrum Aftifacts
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. Chúng bao gồm bản yêu cầu của chủ sản phẩm được gọi là Product backlog, bản kế hoạch của từng Sprint (Sprint Backlog)
-
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.
- Product Owner chịu trách nhiệm sắp xếp độ ưu tiên cho từng hạng mục (Product Backlog Item) trong Product Backlog dựa trên các giá trị do Product Owner đị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 buổi họp lập kế hoạch (Sprint Planning).
- Với sự kết hợp của Product Owner, 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 (TODO list).