Agile là gì? Scrum là gì?

January 12, 2019

Hiện nay trong các sản phẩm, người sử dụng luôn đặt ra các tính năng, yêu cầu nhiều hơn so với thực tế của họ. Theo thống kê của Standish group vào năm 2002 thì có đến 45% các tính năng người sử dụng không bao giờ dùng đến. Cũng như khi bạn vào nhà hàng thay vì bạn gọi rất nhiều các món ăn trong khi bạn chỉ sử dụng 30% số đó và vẫn phải trả 100% số tiền thì bạn hãy gọi từng món ăn đến khi nào no thì bạn chỉ phải trả 30%. Có hợp lý không? Agile, Scrum cũng tương tự như vậy.

Agile là gì?

Agile là tập hợp các nguyên lý của các mô hình phát triển phần mềm linh hoạt và nhanh chóng.

Tuyên ngôn của Agile

  • Cá nhân và sự tương tác hơn là quy trình và công cụ: Agile đề cao tính tương tác của con người, tính trách nhiệm của cá nhân hơn là các quy trình và các công cụ khác.
  • Phần mềm chạy tốt hơn là tài liệu đầy đủ: Tập trung tất cả nguồn nhân lực cho sản phẩm chạy được hơn là viết những tài liệu để có các bằng chứng với khách hàng.
  • Cộng tác với khách hàng hơn là đàm phán hợp đồng: Giữ mối quan hệ với khách hàng luôn luôn tôn trọng và đáp ứng nhu cầu của khách hàng hơn là những điểm trong hợp đồng.
  • Phản hồi với các thay đổi hơn là bám sát kế hoạch: Trách nhiệm thay đổi phần mềm theo yêu cầu của người sử dụng quan trọng hơn là chạy theo một kế hoạch đã định ra.

Mặc dù những điều bên phải vẫn còn giá trị nhưng chúng tôi đánh giá cao hơn các mục ở bên trái

Trong agile có nhiều hình thức triển khai dự án, và trong đó có Scrum là một trong những mô hình phù hợp và dễ dàng áp dụng với mọi dự án.

Tuy nhiên vẫn có một số dự án không phù hợp với dự án Scrum đó là những dự án có nguyên tắc cố định và có những luật định không bao giờ thay đổi, không cần sự sáng tạo thì không nên sử dụng agile scrum tỷ dụ như dự án xây dựng phần mềm kế toán, phần mềm nghiệp vụ ngân hàng.

Thế nào là Scrum

Scrum hoạt động dựa trên những giai đoạn bước rút (Sprint), thường kéo dài từ 2 - 4 tuần.

Scrum là mô hình thúc đẩy sự tương tác và gia tăng hoạt động tự quản lý dự án dựa trên việc tổ chức một nhóm nhỏ khoảng 5 - 9 người có khả năng chuyên sâu làm việc phụ thuộc lẫn nhau trong khoảng thời gian cố định.

Scrum framework

Khung làm việc của Scrum rất đơn giản

Scrum framework

Đầu tiên là bạn cần phải có Product backlog gồm tập hợp tất cả các yêu cầu của một sản phẩm, các yêu cầu được viết dưới dạng User Story - người sử dụng mong muốn gì. Tập hợp của product backlog là toàn bộ yêu cầu sản phẩm tuy nhiên product backlog luôn luôn được sắp thứ tự ưu tiên, những User Story nào có thứ tự ưu tiên cao nhất sẽ được triển khai trước, những User Story có thứ tự ưu tiên thấp hơn sẽ được triển khai sau và có khi bỏ qua không cần triển khai nữa!!!

Tiếp theo là cần phải có Sprint Backlog là một tập hợp các User Story sẽ làm trong một Sprint, như đã đề cập ở trên một Sprint sẽ được tiến hành từ 2 - 4 tuần. Và phải cam kết hoàn thành các User Story đã lựa chọn.

Trong quá trình thực hiện Sprint chúng ta sẽ tổ chức một buổi họp Sprint Planing - buổi họp có tất cả thành viên của dự án tham gia và có cả đại diện của khách hàng để trả lời các câu hỏi dự án. Đội dự án thảo luận và đưa ra các task công việc cần làm trong Sprint

Hàng ngày sẽ có buổi daily meetingburn down chart để biết được tiến độ của dự án.

Kết thúc một Sprint sẽ có một buổi họp thứ nhất là demo cho khách hàng và thứ 2 là để rút kinh nghiệm.

Tiếp tục chúng ta tổ chức Sprint tiếp theo. Các Sprint cứ tiếp tục như vậy cho đến khi khách hàng thoả mãn các tính năng của phần mềm.

Khung làm việc của Scrum

Khung lam viec Scrum

Vai trò của scrum: bao gồm

  • Product Owner: là người đại diện của khách hàng, người có tiếng nói quyết định về các tính năng cũng như các yêu cầu thực hiện trong dự án.
  • Scrum master: là người thực hiện các quy trình về scrum trong dự án.
  • Team: tất cả các thành viên của dự án gồm desinger, dev, testing đều có vai trò như nhau.

Artifact

  • Definition of done: định nghĩa ra thế nào là hoàn thành, phải thống nhất với nhau về tiêu chí hoàn thành cho một dự án, cho một sprint để dựa vào đó xác định đã hoàn thành hay chưa.
  • Product backlog: là một tập hợp quản lý các yêu cầu của dự án xuyên suốt từ đầu cho đến cuối của dự án. Cái này sẽ do Product Owner tạo ra và quản lý, sắp xếp thứ tự ưu tiên. Product backlog sẽ được liên tục cập nhật hàng ngày.
  • Release plan: cũng sẽ do Product Owner lập ra, đây là kế hoạch bàn giao sản phẩm, chúng ta sẽ có những chặng bàn giao để kịp tiến độ với khách hàng.
  • Sprint backlog: là các yêu cầu để thực hiện cho từng sprint.
  • Kanban board: là một bảng theo dõi và quản lý công việc, task của dự án.
  • Velocity: chỉ số đo năng suất của dự án, chỉ số này đo bằng User Story Point trên một Sprint.

Event

  • Sprint planning: là buổi lập kế hoạch cho một Sprint.
  • Daily meeting: là buổi họp hàng ngày để theo dõi và báo cáo kết quả của toàn đội dự án.
  • Sprint review: là buổi để giới thiệu và demo sản phẩm với khách hàng khi kết thúc một sprint cũng là để lấy yêu cầu mong muốn thay đổi để thực hiện ở các Sprint tiếp theo.
  • Sprint retrospective: là buổi họp rút kinh nghiệm của toàn đội dự á- để rút kinh nghiệm cho các Sprint tiếp theo.

Giá trị của Scrum

Để hoàn thành dự án một cách nhanh chóng và thành công nhất, chúng ta phải tôn tọng các giá trị sau của Scrum:

  • Comitment: tính cam kết cao trong công việc.
  • Focus: tập trung vào đúng mục tiêu, chiến lược trong một thời điểm nhất định.
  • Openness: mọi thông tin đều minh bạch đối với cả trong và ngoài dự án.
  • Respect: giá trị gắn kết giữa các thành viêc dự án với nhau, với khách hàng cũng như trong tổ chức.
  • Courage: giá trị của sự can đảm, lãnh nhận và cam kết công việc, can đảm công khai minh bạch mọi thông tin.

Trọng tâm của Scrum

Scrum có những trọng tâm, nguyên tắc mà khi sử dụng không được phép phá vỡ nó, đó là những nguyên tắc sau:

  • Timeboxing: các quy tắc về thời gian luôn luôn là cố định.
  • Learning form mistakes and self managin: học hỏi, rút kinh nghiệm từ những sai lầm và sự tự chủ động quản lý.
  • Shippable code: sản phẩm phải chạy được là trọng tâm của dự án. Các yêu cầu phải được làm và hoàn thiện gọn gàng hoàn chỉnh và sản phẩm được đóng gói nhiều lần theo từng giai đoạn để sử dụng thử và cải tiến.
  • Enough to start: vừa đủ để thực hiện - các hoạt động của Scrum được diễn ra khi thông tin vừa đủ để bắt đầu, không chờ đến khi mọi thức được rõ ràng và đầy đủ mới được thực hiện.

Vai trò và trách nhiệm của từng vị trí

Product Owner

  • Xác định lộ trình phát triển sản phẩm.
  • Xác định thứ tự ưu tiên cho các tính năng của sản phẩm.
  • Thiết lập các quy tắc trong việc phát triển sản phẩm.
  • Mô tả và duy trì mức độ chi tiết cho các tính năng của sản phẩm.
  • Sẵn sàng chuẩn bị cho những cuộc đàm phán có thể xảy ra.
  • Định hướng nghiệp vụ trong quá trình phát triển sản phẩm.
  • Chấp nhận và xác định mức độ có thể chấp nhận sản phẩm (xác định thời điểm kết thúc việc phát triển sản phẩm).
  • Vị trí này có thể là: Trưởng phòng sản xuất, trưởng phòng kinh doanh, quản trị dự án... hoặc khách hàng

Scrum Master

  • Bảo vệ nhóm và giữ cho họ tập tủng tới mục tiêu đã định.
  • Loại bỏ các trở ngại đối với nhóm để hướng tới mục tiêu của Sprint.
  • Chấp hành, thi hành các qui tắc đối với nhóm.
  • Là thành viên điều phối của nhóm.
  • Đại diện cho nhóm trước các bên liên quan.

Kỹ năng cần thiết cho Scrum Master

  • Đặt việc phục vụ nhóm lên hàng đấu.
  • Lắng nghe đồng đội cũng như các bên liên quan.
  • Phương pháp làm việc hướng việc tự tổ chức nhomms.
  • Tạo điều kiện (loại bỏ trở ngại).

Team

  • Làm việc đa năng trong dự án (có thể làm nhiều việc khác nhau không phụ thuộc vào chuyên môn).
  • Không phân cấp thứ bậc trong dự án (không ai quản ai).
  • Tất cả cùng chịu trachs nhiệm với sản phẩm bàn giao cho khách hàng.
  • Báo cáo tình hình công việc mình làm cho Scrum master và cả Team.

Hy vọng bạn sẽ áp dụng thành công việc áp dụng Scrum vào dự án của mình!!!