Với các bạn trẻ trong nghề IT, hẳn chúng ta không ai chưa từng nghe qua các khái niệm mô hình phát triển phần mềm như Scrum, thác nước, chữ V,... Nhưng có lẽ vẫn tồn đọng những mơ hồ về chúng. Chuỗi bài viết này tôi sẽ cùng các bạn đi hệ thống lại kiến thức về các mô hình phát triển phần mềm qua các phần trong từng bài post. Cùng đón đọc và chia sẻ kiến thức với tôi nhé!
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.
Scrum chia dự án thành các vòng lặp phát triển gọi là các sprint. Mỗi sprint thường mất 2- 4 tuần (30 ngày) để hoàn thành. Nó rất phù hợp cho những dự án có nhiều sự thay đổi và yêu cầu tốc độ cao.
Một sprint hoàn thành một số chức năng, mục đích nào đó trong toàn bộ hệ thống. Các tác vụ trong sprint được chia ra thành các danh mục, đội làm việc sẽ phát triển và đánh giá lại sao cho đạt được mục đích ban đầu trong khoảng thời gian đề ra.
Những vai trò chính quan trọng của scrum là các role (vai trò) và các cuộc trao đổi đánh giá. Có các role chính là:
Product Owner: là người làm những công việc bắt đầu cho dự án, tạo ra các yêu cầu trong quá trình phát triển dự án. Phân tích mục tiêu, giải phóng các kế hoạch.
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
Scrum Master: là người phải đảm bảo các sprint được hoàn thành đúng mục đích, bảo vệ đội làm việc và loại bỏ các trở ngại.
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. Nhóm Phát triển: bao gồm các chuyên gia tham gia vào công việc phát triển sản phẩm. Nhóm phát triển được xây dựng tự tổ chức và quản lý công việc của chính mình.
Nhóm phát triển có những đặc điểm sau:
- Tự tổ chức (self-organizing): Nhóm phát triển 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): Nhóm phát triển 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 Nhóm phát triển 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ề Nhóm phát triển nói chung.
- Một nhóm phát triển 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.