Tìm hiểu Agile và Scrum – Phần 2: Scrum cơ bản

      Chức năng bình luận bị tắt ở Tìm hiểu Agile và Scrum – Phần 2: Scrum cơ bản

Scrum là gì

Scrum là một khung làm việc (framework), dựa trên nguyên lý Agile. Hiện nay, định nghĩa Scrum ghi trong tài liệu Scrum Guide và được cập nhật thường xuyên bởi chính các tác giả tại scrumguides.org. Download hướng dẫn scrum tiếng Việt tại scrumguides.

Với Scrum, sản phẩm được xây dựng trên 1 chuỗi các quy trình lặp lại (gọi là Sprint). Các sprint diễn ra đều đặn. Mỗi một sprint là cơ hội để học hỏi, điều chỉnh nhằm đạt được sự phù hợp và kết quả tốt nhất.

Scrum có tính chất sau:
– Nhẹ nhàng.
– Dễ hiểu.
– Khó để quản lý và làm chủ.

Khái niệm cơ bản trong Scrum

Tạo tác: là các công cụ hoặc kết quả được tạo ra và sử dụng trong quá trình vận hành Scrum. Các tạo tác trong Scrum bao gồm: Product Backlog, Sprint Backlog, Gói tăng trưởng Sản phẩm.

  • User Story: Đây là tóm tắt một chức năng (feature) của sản phẩm đứng từ góc nhìn của người dùng. User story thường được viết trong một hai câu ngắn gọn, đơn giản. Ví dụ: là khách hàng, tôi có thể xem toàn bộ danh sách sản phẩm.
  • Story Point: Là một đơn vị được dùng để đánh giá công sức phải bỏ ra để thực hiện một user story. Story point càng nhiều thì user story đó càng lớn và tốn nhiều thời gian thực hiện.
  • Product Backlog: Đây là danh sách những việc mà team cần phải làm để có thể hoàn thành sản phẩm. Mỗi việc này có thể là việc technical (tạo database, tích hợp API) hoặc là các user story.
  • Sprint (Iteration): Có thể hiểu là một chu kì làm việc kéo dài từ 2 đến 4 tuần. Trong một sprint, team thực hiện các quá trình như thiết kế, code, test để tạo ra sản phẩm vào cuối sprint.
  • Sprint Backlog: Ở đầu mỗi sprint, cả team sẽ có một cuộc họp để lựa chọn những user story quan trọng mà team phải hoàn thành trong sprint này. Những user story này sẽ được bỏ vào Sprint Backlog. Ví dụ ở sprint đầu, team cần một bản demo để người mua sách sử dụng, họ sẽ chọn những user story liên quan đến người mua để thêm vào backlog.
  • Definition of Done (Định nghĩa hoàn thành): Trước khi bắt đầu, cả nhóm phải thống nhất thế nào là “hoàn thành” một công việc. Hoàn thành có thể là user stories đó đã được code và test xong, hoặc module đó đã demo cho khách hàng và được khách hàng duyệt. Định nghĩa này tùy thuộc vào mỗi team.

Các vai trò: là một cá nhân, hoặc một nhóm tham gia vào trong quá trình vận hành của Scrum. Trong Scrum có 3 vai trò chính: Product Owner, Scrum Master và nhóm phát triển ( Development team).

  • Product Owner: chịu trách nhiệm quản lý danh sách những chức năng cần xây dựng (Product BackLog).
  • Scrum Master: chịu trách nhiệm tổ chức cách thức làm việc theo Scrum cho cả nhóm.
  • Development Team: những người có đủ chuyên môn để hoàn thành mục tiêu mà cả nhóm đề ra.

Các sự kiện: là các hoạt động xảy ra trong suốt vòng đời của quá trình phát triển. Các sự kiện chính trong Scrum là: Sprint, Lập kế hoạch Sprint, Scrum Hằng ngày, Sơ kết SprintCải tiến Sprint.

  • Sprint Planning Meeting: Cuộc họp này được bắt đầu mỗi Sprint, kéo dài khoảng 4 tiếng. Cuộc họp giúp xác định mục tiêu cần đạt được trong Sprint và những công việc (user story) cần làm. Trong cuộc họp này, cả nhóm cũng ước đoán story point cho mỗi user story.
  • Daily Meeting: Xuyên suốt Sprint, mỗi ngày cả team sẽ bỏ ra khoảng 15 phút để tổ chức một cuộc họp ngắn. Việc họp này giúp các thành viên nắm được tình hình dự án. Trong cuộc họp, mỗi thành viên trả lời 3 câu hỏi:
    • Hôm qua tôi đã làm được gì?
    • Hôm nay tôi sẽ làm gì?
    • Tôi đang gặp trở ngại, vướng mắc gì?
  • Sprint Review Meeting: Cuộc họp này diễn ra sau khi kết thúc Sprint. Cả nhóm sẽ xem xét lại những việc đã hoàn thành, chưa hoàn thành, sau đó demo những phần đã hoàn thành cho Product Owner. Product Backlog sẽ được cập nhật lại.
  • Retrospective Meeting: Trong buổi họp này, cả nhóm cùng ngồi nhìn lại và đánh giá những điểm được và chưa được trong Sprint vừa qua, đồng thời đề xuất các biện pháp cải tiến

Ví dụ một sprint làm việc của scrum

Giả sử mình là một thành viên trong Development Team đang thực hiện một dự án website bán hàng trực tuyến. Một Sprint làm việc của mình sẽ trông như sau:

Đầu tháng, bắt đầu Sprint. Mình tham dự Sprint Planning Meeting. Trong cuộc họp này, anh Product Owner xác nhận mục tiêu là “cho phép người mua xem và bình chọn sản phẩm trong hệ thống”. Những user story được chọn cho Sprint Backlog là:

  • Là một người mua, tôi muốn xem toàn bộ sản phẩm trong hệ thống (3 points)
  • Là một người mua, tôi muốn tìm sản phẩm theo ngành hàng (5 points)
  • Là một người mua, tôi muốn bình chọn cho sản phẩm (8 points)
  • Là một người mua, tôi muốn xem những sản phẩm được bình chọn cao nhất (8 points)
  • ….

Sau buổi họp, mình và các bạn trong nhóm chọn những user stories sẽ làm. Mỗi sáng, mình tham dự họp Daily Meeting từ 8h tới 8h15. Mình trả lời các câu hỏi (không dài dòng, nếu cần bàn luận chuyên môn hãy tổ chức cuộc họp khác):

  • Hôm qua mình đã dựng xong giao diện cho chức năng bình chọn.
  • Hôm nay mình sẽ thiết kế database và bắt đầu viết code cho chức năng này.
  • Khó khăn: Database trên máy mình không truy cập được, có thể tốn thời gian sửa.

Giữa tháng, kết thúc Sprint, mình tham dự Sprint Review Meeting. Cả team demo chức năng đã làm xong (chọn sản phẩm, bình luận). Sau khi xem demo, Product Owner đưa ra nhận xét, cập nhận lại requirement, thêm yêu cầu mới.

Sau đó, cả nhóm tham gia Retrospective Meeting. Team đã làm tốt việc giao tiếp với nhau, làm đúng yêu cầu khách hàng, đúng hẹn. Tuy vậy, do chưa có chuẩn chung nên mọi người code và thiết kế một kiểu. Cả nhóm đề xuất biện pháp “tạo ra coding và design convention để mọi người tuân theo” nhằm cải tiến qui trình.

Ba trụ cột của scrum

Tính minh bạch (Transparency)

Các khía cạnh quan trọng của tiến trình phải được hiển thị rõ ràng cho những người có trách nhiệm với thành quả của tiến trình đó. Sự minh bạch yêu cầu các yếu tố này cần được định nghĩa theo một tiêu chuẩn để những người quan sát có thể hiểu những gì họ thấy theo cùng một cách.

Tính thanh tra (Transparency)

Người sử dụng Scrum phải thường xuyên thanh tra các tạo tác và tiến độ đến đích để phát hiện các bất thường không theo ý muốn. Tần suất thanh tra không nên quá dày để khỏi ảnh hưởng đến công việc. Công tác thanh tra có ích nhất khi được thực hiện bởi người có kĩ năng tại các điểm quan trọng của công việc.

Tính thích nghi (Adaptation)

Nếu một người thanh tra xác định được rằng có vấn đề nào đó vượt quá giới hạn cho phép, và hậu quả của vấn đề đó đối với sản phẩm là không thể chấp nhận được, thì quy trình hoặc các vật liệu được xử lý (processed material) phải được điều chỉnh. Sự điều chỉnh phải được tiến hành càng sớm càng tốt để giảm thiểu các sai sót khác có thể xảy ra.

Để đảm bảo việc triển khai Scrum mang lại lợi ích cao nhất thì bạn phải đảm bảo cả ba trụ cột trên trong một thể thống nhất. Thiếu một trong số đó sẽ gây ra hậu quả nghiệm trọng và dễ dẫn đến thất bại.

5 giá trị của scrum

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.

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.

Cam kết: Mỗi thành viên cam kết với các thanh viên khác về những điều mình làm và công việc đã được chọn ở buổi Lập kế Hoạch Sprint. Ngoài ra chúng ta liênc tục cải tiến tức là thay đổi để trở thành một các nhân tốt hơn, nhóm tốt hơn và tổ chức tốt hơn. Chúcng 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ó kahwn, do đó chỉ với sự cam kết chung 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ả. Phát triển phần mềm rất phức tạp, một người không thể nìn và hiểu được hết tất cả nhiều mọi vấn đề. Do đó nếu mọi người không cở mở với nhau, thông tin bị che giấu rất nhiều và hiệu quả công việc khó lòng 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ụ một người không biết một điều gì đó, khi hỏ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ố 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ở mở và nói sự thật được. Không tôn trọng, khó có sự cở mở.

Kết luận

Ở phần 2 của chuỗi bài Scrum cho người mới bắt đầu, chúng ta đã đi tìm hiểu về khung làm việc của Scrum, lợi ích cũng như các giá trị của Scrum. Trong phần sau, chúng ta sẽ đi sâu vào từng vai trò trong Scrum để tìm hiểu rõ hơn họ làm gì trong đó, tổ chức với nhau như thế nào.

Bài viết có tham khảo và sử dụng nội dung từ các nguồn sau:

  • https://viblo.asia/p/agile-scrum-phan-1-khai-niem-agile-scrum-YmjvoLQYGqa
  • https://agilebreakfast.vn/huong-dan-scrum-2016-scrum-guide-co-gi-moi
  • https://toidicodedao.com/2017/05/02/ung-dung-scrum
  • https://scrumguides.org