Tổng quan về Scrum (Phần I)

Nếu đã từng tìm hiểu về quy trình phát triển phần mềm, hẳn là bạn đã từng biết đến rất nhiều mô hình phát triển phần mềm như Waterfall, V model, mô hình xoắn ốc hay mô hình tiếp cận lặp... Và gần đây chúng ta thường nghe tới thuật ngữ như Scrum. Vậy Scrum là gì? mô hình phát triển phần mềm Scrum có gì hay mà hiện nay nhiều công ty phần mềm áp dụng đến thế? Để giải đáp được những thắc mắc trên, chúng ta sẽ cùng nhau tìm hiểu về Scrum trong 2 phần. Và ở phần 1 này, mình xin được giới thiệu những khái niệm cơ bản về Srum, các lĩnh vực áp dụng, tính chất cũng như các vai trò trong một scrum team.

1. Scrum là gì?

Scrum là một framework giúp mọi người giải quyết các vấn đề thích nghi phức tạp, đồng thời giúp mang lại giá trị cao nhất có thể cho một sản phẩm theo cách hiệu quả và sáng tạo.

Scrum không phải là một quy trình, kỹ thuật hay một phương pháp. Scrum là một framework mà trong đó chúng ta có thể sử dụng các quy trình và kỹ thuật khác nhau. Scrum làm rõ hiệu quả tương đối của quản lý sản phẩm và kỹ thuật làm việc của bạn để bạn có thể liên tục cải tiến sản phẩm, nhóm và môi trường làm việc.

Trong một scrum framework có Scrum team cùng các vai trò, sự kiện cũng như nguyên tắc liên quan. Mỗi thành phần đều có mục đích cụ thể và cần thiết cho sự thành công của việc sử dụng Scrum.

2. Scrum được sử dụng trong những lĩnh vực nào?

Chúng ta thường biết đến scum trong phát triển phẩn mềm. Nhưng trên thực tế ngoài phát triển phần mềm, Scrum còn được áp dụng trên rất nhiều lĩnh vực như phát triển phần cứng, phần mềm nhúng, mạng lưới các chức năng tương tác, xe tự động, trường học, chính phủ, tiếp thị, quản lý hoạt động của các tổ chức...

3. Tính chất của Scrum

Bằng việc sử dụng phương pháp lặp đi lặp lại và tăng dần, Scrum giúp tối ưu hóa khả năng dự đoán và kiểm soát rủi ro. Scrum có 3 tính chất rõ ràng: tính minh bạch, tính kiểm tra và tính thích ứng. Đó chính là 3 trụ cột giúp kiểm soát quá trình thực hiện.

  1. Tính minh bạch: Các khía cạnh quan trọng của quy trình được xác định bởi một quy chuẩn chung và phải được hiển thị minh bạch, rõ ràng cho những người chịu trách nhiệm về kết quả.
  2. Tính kiểm tra: Để phát hiện những sai sót không mong muốn, việc kiểm tra thường xuyên là vô cùng quan trọng.
  3. Tính thích ứng: Sau khi kiểm tra, nếu một hoặc nhiều khía cạnh được xác định là sai, đi chệch hướng so với mục tiêu của sprint và có thể sản phẩm không được chấp nhận thì các khía cạnh cần được thay đổi càng sớm càng tốt.

4. Scrum team

Nếu như ở các mô hình phát triển phần mềm khác có các vai trò như BA, Developer, QA, Tester, Project manager... thì ở Scrum team chỉ có 3 vai trò: Product owner, Development team và Scrum master.

Trong Scrum, mô hình nhóm được thiết kế để tối ưu hóa tính sáng tạo, linh hoạt và năng xuất. Bởi vậy Scrum team có 2 đặc điểm nổi bật là tự tổ chức (self-organizing) và hoạt động chéo (cross-functional).

4.1 Product owner

Product owner là người có tầm nhìn về sản phẩm, chịu trách nhiệm về giá trị cao nhất của kết quả sản phẩm được làm từ development team.

Product owner chịu trách nhiệm quản lý product backlog:

  • Miêu tả rõ ràng từng backlog item
  • Sắp xếp mức độ ưu tiên của backlog item hợp lý
  • Tối ưu hóa giá trị mà Development team thực hiện
  • Đảm bảo product backlog rõ ràng, minh bạch
  • Đảm bảo Development team hiểu product backlog

4.2 Development team

Development team bao gồm các chuyên gia tham gia vào công việc phát triển sản phẩm. Development team được xây dựng tự tổ chức và quản lý công việc của chính mình.

Development team có những đặc điểm sau:

  • Tự tổ chức (self-organizing): Development team tự lên kế hoạch, ước lượng và quản lý công việc của mình.
  • Hoạt động chéo (cross-functional): Development team có đầy đủ các kỹ năng cần thiết của một team cho sự gia tăng của sản phẩm.
  • Trong Scrum, chúng ta không nhận ra được các sub team trong Development team, bất kể những việc cần được giải quyết như kiểm thử, thiết kế cấu trúc, vận hành hoặc phân tích kinh doanh.
  • Mỗi thành viên trong Development team có thể có các kỹ năng chuyên môn riêng và chỉ tập trung vào một số việc nhất định như chỉ code hoặc chỉ test, nhưng trách nhiệm thuộc về Development team nói chung.

Một Development team tối ưu nên có từ 3 đến 9 người. Không nên nhỏ hơn 3 hoặc vượt quá 9 thành viên.

4.3 Scrum master

Scrum Master chịu trách nhiệm hỗ trợ Scrum team bằng cách giúp mọi người hiểu lý thuyết, thực hành, các quy tắc và những giá trị của Scrum.

Scrum Master giúp tổ chức bên ngoài Scrum team hiểu được những tương tác nào của họ với Scrum team là có ích và tương tác nào thì không. Scrum Master giúp mọi người thay đổi những tương tác đó để tối đa hóa giá trị được tạo bởi Scrum team.

Scrum master hỗ trợ product owner

  • Đảm bảo rằng mục tiêu, phạm vi và lĩnh vực sản phẩm được các thành viên trong Scrum team hiểu rõ nhất có thể.
  • Tìm kiếm các kỹ thuật để giúp Product owner quản lý Product Backlog hiệu quả
  • Giúp Scrum team hiểu được các mục Product Backlog rõ ràng và ngắn gọn.
  • Hiểu quy hoạch sản phẩm trong môi trường thực nghiệm.
  • Đảm bảo Product owner biết cách sắp xếp Product Backlog để tối đa hóa giá trị.
  • Hiểu và thực hành linh động.
  • Tạo điều kiện cho các Scrum event diễn ra thuận lợi theo yêu cầu.

Scrum Master hỗ trợ Development Team

  • Huấn luyện đội ngũ phát triển tự tổ chức (Self-organizing) và hoạt động chéo (Cross-functional).
  • Giúp Development team tạo ra các sản phẩm có giá trị cao.
  • Loại bỏ các trở ngại ảnh hưởng tới tiến độ của Development team.
  • Tạo điều kiện cho các Scrum event cần thiết diễn ra suôn sẻ theo yêu cầu.
  • Huấn luyện đội ngũ phát triển trong môi trường của tổ chức, nơi mà Scrum chưa được chấp nhận và hiểu đầy đủ.

Scrum Master hỗ trợ cho Tổ chức

  • Dẫn dắt và huấn luyện tổ chức trong việc áp dụng Scrum.
  • Lập kế hoạch triển khai Scrum trong một tổ chức.
  • Giúp nhân viên và các bên liên quan hiểu, ban hành Scrum và phát triển sản phẩm thực tế theo Scum.
  • Tạo ra sự thay đổi trong tổ chức để làm tăng năng suất của Scrum team.
  • Làm việc với các Scrum Master khác để làm tăng hiệu quả trong việc áp dụng Scrum trong một tổ chức.

Trên đây, mình đã giới thiệu về những khái niệm cơ bản về Srum, các lĩnh vực áp dụng, tính chất cũng như các vai trò trong một scrum team. Các scrum event, scrum rule và cách áp dụng scrum trong quy trình phát triển phần mềm sẽ được giới thiệu trong phần sau.

Tài liệu tham khảo:

http://www.scrumguides.org/scrum-guide.html