Scrum là gì?
Scrum là một phương pháp Agile dùng cho phát triển sản phẩm, đặc biệt là phát triển phần mềm. Scrum là một khung quản lý dự án được áp dụng rất rộng rãi, từ những dự án đơn giản với một nhóm phát triển nhỏ cho đến những dự án có yêu cầu rất phức tạp với hàng trăm người tham gia, và kể cả những dự án đòi hỏi khung thời gian cố định.
Trong Scrum, công việc được thực hiện bởi Nhóm Scrum thông qua từng phân đoạn lặp liên tiếp nhau được gọi là Sprint. Để hiểu được Scrum thì cần hiểu nguyên lý của Scrum, các Vai trò, Tạo tác, Sự kiện và sự vận hành của một vòng đời Scrum.
Ba trụ cột của Scrum
Ba trụ cột (hay ba chân) của Scrum là Tính minh bạch, Sự thanh tra và Sự thích nghi. Đây chính là phần lõi của khung làm việc Scrum, thiếu bất cứ trụ cột nào trong số này đều khiến khung Scrum không còn hoạt động đúng nữa.
- Minh bạch (transparency): Đầu tiên, 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 rào cản,… Từ đó mọi người ở các vai trò khác nhau có đủ thông tin cần thiết để tiến hành các quyết định có giá trị nhằm 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.
- Thanh tra (inspection): Công tác thanh tra liên tục các hoạt động trong Scrum đảm bảo cho việc phát lộ các vấn đề cũng như giải pháp để thông tin đa dạng và hữu ích đến được với các bên tham gia quá trình phát triển. Truy xé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.
- Thích nghi (adaptation): Dựa trên các thông tin minh bạch hóa từ các quá trình thanh gia và làm việc, Scrum có thể phản hồi các thay đổi một cách tích cực, nhờ đó mang lại thành công cho sản phẩm. Các nỗ lực minh bạch và thanh tra đều hướng tới hành động thích ứng nhanh chóng và hiệu quả.
Hai đặc điểm của Nhóm Scrum
Nhóm Scrum có 2 đặc điểm đó là tự quản (self-managing) và liên chức năng (cross-functional).
- Tự quản (self-managing): Đây là một thuật ngữ mới thay thế cho thuật ngữ cũ (self-organizing) được cập nhật trong tài liệu Hướng dẫn Scrum mới nhất năm 2020. Điều này có nghĩa là nhóm sẽ cùng ra quyết định sẽ làm gì, ai sẽ làm và làm như thế nào mà không bị sự chỉ đạo bởi ai đó bên ngoài nhóm. Các Nhóm Scrum được trao quyền để quản lý công việc của họ nhằm hướng tới một mục tiêu chung là giúp tổ chức giải quyết các vấn đề phức tạp nhanh nhẹn hơn và tạo ra kết quả chất lượng hơn.
- Liên chức năng (cross-functional): Một nhóm liên chức năng bao gồm nhiều cá nhân với các chuyên môn khác nhau đủ năng lực được kết hợp lại cùng làm việc hướng tới một mục tiêu chung. Trong dự án, các cá nhân có thể đến từ nhiều phòng ban chức năng khác nhau, cũng có thể xuất phát từ bên ngoài.Nhưng khi đã thành một nhóm (team), thì các cá nhân làm việc tập trung cho đội như là một đơn vị (unit) để hoàn tất mục tiêu chung. Bên trong nhóm liên chức năng không có các nhóm nhỏ khác.
Ba vai trò trong nhóm Scrum
Trong Scrum, có ba vai trò: Product Owner, Nhà Phát triển, và Scrum Master. Tất cả hợp thành Nhóm Scrum.
- Product Owner: là một trong ba vai trò trong nhóm Scrum. Vai trò này chịu trách nhiệm tối ưu hóa lợi nhuận trên đầu tư (ROI – Return On Investment) thông qua việc quyết định các tính năng của sản phẩm, đánh giá và sắp xếp độ ưu tiên của từng hạng mục, những hạng mục có độ ưu tiên cao thì sẽ được đưa vào phát triển trước, những hạng mục có độ ưu tiên thấp hơn thì sẽ được phát triển sau. Product Owner thường khác với một Giám đốc Sản phẩm truyền thống ở chỗ đó là Product Owner tham gia tích cực vào quá trình phát triển sản phẩm, thay vì chỉ quản lý và ủy quyền cho những người khác thực hiện các quyết định liên quan đến sản phẩm.
- Scrum Master: là một vai trò then chốt giúp nhóm Scrum làm việc hiệu quả bằng cách tuân thủ nguyên lý, các kỹ thuật và quy tắc của Scrum. Scrum Master không phải là người quản lý của Nhóm mà là một lãnh đạo theo phong cách phục vụ (Servant Leader). Scrum Master làm tất cả những gì trong thẩm quyền phục vụ Product Owner, Nhóm Phát triển, và Tổ chức đi đến thành công.
- Nhà phát triển: là đội ngũ trực tiếp làm ra sản phẩm, họ bao gồm các chuyên gia có nhiệm vụ chuyển giao phần tăng trưởng ở cuối mỗi Sprint. Các Nhà phát triển không có sự phân chia các chức danh chuyên môn đặc thù cho từng thành viên, ví dụ như: kiểm thử viên, lập trình viên, chuyên gia thiết kế, chuyên gia cơ sở dữ liệu,… mà tất cả đều được gọi chung là Nhà phát triển. Việc này giúp nâng cao tính sở hữu tập thể, trách nhiệm tập thể và bình đẳng giữa các thành viên.
Năm sự kiện trong Scrum
Sprint: Có thể nói Sprint là trái tim của Scrum và là khoảng thời gian cố định mà ở đó các Nhà Phát triển thực hiện công việc phát triển sản phẩm. Sprint được đóng khung thời gian không dài hơn 1 tháng và thường thì không ngắn hơn một tuần. Các Sprint có độ dài như nhau và diễn ra liên tiếp nhau mà không bị gián đoạn. Sprint kết thúc khi thời gian đóng khung kết thúc, bất kể các công việc trong đó đã được hoàn thành hết hay chưa.
Lập kế hoạch Sprint (Sprint Planning): Là sự kiện diễn ra đầu Sprint để lên kế hoạch làm việc cho toàn bộ Sprint. Sự kiện này được chia làm 3 phần với 3 mục đích rõ ràng:
- Phần 1: nhằm trả lời câu hỏi Why – “Tại sao chúng ta làm những thứ này?” – điều này được trình bày bởi Product Owner và sau đó cả nhóm sẽ thống nhất để xác định rõ Mục tiêu của Sprint (Sprint Goal)
- Phần 2: trả lời cho câu hỏi What – “Chúng ta sẽ hoàn thành những gì?“. Thông qua việc trao đổi với Product Owner, các Nhà phát triển sẽ lựa chọn những hạng mục từ Product Backlog để phát triển trong Sprint hiện tại.
- Phần 3: sẽ trả lời câu hỏi How – “Chúng ta sẽ làm như thế nào?“. Đối với mỗi hạng mục được lựa chọn, các Nhà phát triển sẽ lên kế hoạch các công việc cụ thể để hoàn thành được mục tiêu Sprint (Sprint Goal).
3 câu hỏi Why – What – How sẽ giúp 1 Sprint diễn ra hiệu quả và rõ ràng hơn. Các Nhà Phát triển có quyền quyết định lựa chọn những hạng mục mà mình sẽ làm, không ai được phép can thiệp và gán công việc cho nhóm, kể cả Product Owner hay các lãnh đạo khác. Kết quả của buổi Lập kế hoạch Sprint là: Mục tiêu Sprint và Sprint Backlog.
Scrum Hằng ngày (Daily Scrum): Là buổi gặp mặt ngắn 15 phút hằng ngày của tất cả các thành viên Nhóm Phát triển để thanh tra và tái lập kế hoạch cho nhóm. Để giữ đơn giản và tạo thói quen thì các buổi Scrum Hằng ngày phải diễn ra tại cùng một địa điểm vào cùng một khung thời gian. Scrum Master không bắt buộc tham dự nhưng phải đảm bảo Nhóm Phát triển đang thực hiện tốt sự kiện này.
Sơ kết Sprint (Sprint review): Là sự kiện diễn ra ở cuối Sprint nhằm thanh tra và thích nghi sản phẩm đang được xây dựng. Toàn bộ Nhóm Scrum (bao gồm Product Owner, Scrum Master và Nhóm Phát triển) tham dự sự kiện này. Product Owner có thể mời thêm những người khác cùng tham gia. Sự kiện này bao gồm 2 hoạt động chính đó là dùng thử sản phẩm và thảo luận về tình hình của sản phẩm, hướng đi tiếp theo và những điều chỉnh đối với sản phẩm nếu cần thiết. Product Backlog và Kế hoạch Phát hành có thể được điều chỉnh sau sự kiện này.
Cải tiến Sprint (Sprint Retrospective): Diễn ra sau sự kiện Sơ kết Sprint nhằm thanh tra và thích nghi quy trình làm việc. Nói ngắn gọn, sự kiện này là để cải tiến cách làm việc. Nhóm Phát triển và Scrum Master bắt buộc tham gia sự kiện này. Product Owner có thể tham gia hoặc không. Nhóm Phát triển có thể mời thêm những người khác tham dự. Kết quả của buổi làm việc này là một danh sách các thay đổi về cách làm việc được đưa vào áp dụng ngay trong Sprint tiếp theo.
Các tạo tác trong Scrum – Scrum Artifact
- Product Backlog: là nơi lưu trữ danh sách các tính năng mong muốn của sản phẩm và liên tục được cập nhật trong suốt vòng đời của sản phẩm. Mỗi Product Backlog sẽ được gắn với mục tiêu (Product Goal) mô tả đích đến của sản phẩm mà mỗi hạng mục trong Product Backlog phải hỗ trợ mục tiêu này. Product Owner là người chịu trách nhiệm quản lý và bảo trì Product Backlog. Việc này bao gồm xác định nội dung (các hạng mục cần phát triển), đánh giá độ ưu tiên và sắp xếp các hạng mục, làm mịn các hạng mục, làm rõ và giải thích tất cả mọi thắc mắc liên quan đến sản phẩm.
- Sprint Backlog: Sprint Backlog là bảng công việc được các Nhà Phát triển sử dụng để quản lý quá trình phát triển trong một Sprint và được cập nhật trong suốt Sprint. Sprint Backlog chứa danh sách các hạng mục và các công việc cần làm tương ứng với từng hạng mục để hoàn thành mục tiêu của Sprint đó
- Incremental (Phần tăng trưởng): là phần sản phẩm các Nhà Phát triển tạo ra cuối mỗi Sprint. Đây là một khái niệm quan trọng trong Scrum tạo ra sự khác biệt lớn về mặt sản phẩm so với các phương pháp truyền thống. 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ải chuyển giao một phần tính năng “hoàn chỉnh” 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 đã được thống nhất trước đó.Có thể nói, việc chuyển giao được một Phần tăng trưởng ở cuối mỗi Sprint là nhiệm vụ cốt lõi và không hề dễ dàng đối với các Nhà Phát triển.
Bên cạnh những khái niệm đề cập ở trên, các nhóm Scrum một khái niệm cũng thường xuyên xuất hiện trong Scum đó là biểu đồ Burndown Chart. Đây là biểu đồ hiển thị khối lượng 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 (được gọi là Sprint Burndown Chart) hoặc của cả dự án (Project Burndown Chart).
Các giá trị của Scrum
Để áp dụng Scrum và tận dụng hiệu quả những lợi ích mà Scrum mang lại phụ thuộc rất nhiều vào mức độ theo đuổi và sống với những giá trị sau đây:
- Tập trung: Mọi người tập trung vào công việc trong Sprint và 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.
- Dũng cảm: Để một người dám nói ra vấn đề của mình và chấp nhận rất nhiều loại rủi ro khi thay đổi, cam kết, họ cần là người dũng cảm. Về cơ bản, những giá trị khác không thể có nếu bạn không có sự dũng cảm.
- Cam kết: Ngoài ra, chúng ta liên tục cải tiến tức là thay đổi để trở thành một cá nhân tốt hơn, nhóm tốt hơn và tổ chức tốt hơn. Chúng ta luôn phải thay đổi để giữ vững lợi thế cạnh tranh và phục vụ khách hàng. Thực hiện thay đổi bao giờ cũng rất khó khăn, do đó chỉ với sự cam kết của chúng ta mới có thể làm được.
- Cởi mở: Mọi thứ cần phải rõ ràng, minh bạch để mọi người có thể làm việc hiệu quả.Công việc phát triển sản phẩm ngày nay rất phức tạp, một người không thể nhìn và hiểu được hết tất cả mọi vấn đề. 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ó có thể nâng cao.
- Tôn trọng: Khi thiếu tôn trọng, mọi người khó thành thật trong chia sẻ. Ví dụ, khi một người không biết một điều gì đó và đi hỏi lại người khác. Người trả lời thay vì mong muốn giúp đỡ để người hỏi trở nên tốt hơn, độc lập hơn lại phàn nàn, đánh giá người hỏi thì lần sau người hỏi sẽ khó mà cởi mở và nói sự thật được. Không có tôn trọng, khó có sự cởi mở. Những công ty có văn hóa đổ lỗi khó có sự cởi mở.
Theo hocvienagile.com
Japan IT Works