Agile – Scrum

Lý Thuyết Scrum

Scrum là một khung làm việc trong đó con người có thể xác định các vấn đề thích nghi phức hợp, trong khi vẫn giữ được năng suất và sáng tạo để chuyển giao các sản phẩm có giá trị cao nhất.

Scrum có các tính chất:

  • Nhẹ nhàng
  • Dễ hiểu
  • Rất khó để tinh thông

Scrum là khung làm việc đã được sử dụng để quản lý quá trình phát triển các sản phẩm phức tạp từ đầu những năm 1990. Scrum không phải là một quy trình hay một kĩ thuật cụ thể để xây dựng sản phẩm hơn thế, nó là một khung làm việc cho phép bạn sử dụng nhiều quy trình và kĩ thuật khác nhau. Scrum làm sáng rõ mức độ hiệu quả tương đối của công tác quản lý và phát triển sản phẩm, từ đó cho phép bạn cải tiến nó.

Khung làm việc Scrum bao gồm một Nhóm Scrum với các vai trò được phân định rõ ràng, các sự kiện, các tạo tác 1 (artifact) và các quy tắc. Mỗi thành phần trong khung làm việc phục vụ một mục đích rõ ràng và nòng cốt trong việc sử dụng và thành công của Scrum.

Các quy tắc của Scrum gắn kết các yếu tố sự kiện, vai trò, tạo tác với nhau, điều khiển các mối quan hệ và tương tác giữa chúng

Scrum được xây dựng dựa trên lý thuyết quản lý tiến trình thực nghiệm (empirical process control), hay “thực nghiệm luận” (em.piricism). Lý thuyết này chỉ ra rằng tri thức đến từ kinh nghiệm và việc ra quyết định được dựa trên những gì đã biết. Scrum sử dụng các tiếp cận lặp (iterative), tăng trưởng (incremental) để tối ưu hóa tính khả đoán (predictability) và kiểm soát rủi ro.

Ba yếu tố nòng cốt tạo thành một mô hình quản lý tiến trình thực nghiệm gồm: sự minh bạch (transparency), thanh tra (inspection) và thích nghi (adaptation).

Minh bạch

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.

Ví dụ:

  1. Một ngôn ngữ chung về quy trình cần phải được chia sẻ cho tất cả các bên tham gia
  2. Một định nghĩa chung về “Hoàn thành” phải được chia sẻ bởi những người đảm đương công việc và những người tiếp nhận sản phẩm của công việc đó

Thanh tra

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.

Thích nghi

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.

Scrum cung cấp bốn cơ hội chính thức cho việc thanh tra và thích nghi trong các sự kiện Scrum, bao gồm:

  1. Họp Kế hoạch Sprint (Sprint Planning Meeting)
  2. Họp Scrum hằng ngày (Daily Scrum)
  3. Sơ kết Sprint (Sprint Review)
  4. Họp Cải tiến Sprint (Sprint Retrospective)

Nhóm Scrum

Nhóm Scrum bao gồm Product Owner (Chủ Sản phẩm), Nhóm phát triển (Development Team) và Scrum Master. Các Nhóm Scrum là các nhóm tự quản (self-organizing) và liên chức năng (cross-functional). Các nhóm tự quản tự mình chọn cách thức tốt nhất để hoàn thành công việc của họ, chứ không bị chỉ đạo bởi ai đó bên ngoài nhóm. Các nhóm liên chức năng có đủ kĩ năng cần thiết để hoàn thành công việc mà không phụ thuộc vào bất kì người ngoài nào khác. Mô hình nhóm trong Scrum được thiết kế để tối ưu hóa sự linh hoạt, sáng tạo và năng suất.

Các Nhóm Scrum chuyển giao sản phẩm theo phân đoạn lặp đi lặp lại và tăng dần, tối đa hóa cơ hội cho các phản hồi. Việc chuyển giao tăng dần (incremental) các gói sản phẩm đạt tiêu 2 Xem thêm “Định nghĩa Hoàn thành”, chuẩn “Hoàn chỉnh” đảm bảo một phiên bản có thể sử dụng được của sản phẩm luôn luôn sẵn sàng.

Product Owner

Product Owner (Chủ sản phẩm) chịu trách nhiệm tối đa hóa giá trị của sản phẩm và công việc của Nhóm Phát triển. Cách thức để đạt được điều đó có thể rất khác nhau giữa các tổ chức, các Nhóm Scrum và các cá nhân.

Product Owner là một người chủ yếu chịu trách nhiệm về việc quản lý Product Backlog. Đây là công cụ quản lý chứa:

  1. Mô tả các hạng mục Product backlog
  2. Trình tự của các hạng mục trong Product Backlog để đạt được mục đích và hoàn thành các nhiệm vụ
  3. Sự đảm bảo giá trị của các công việc của Nhóm Phát triển
  4. Sự đảm bảo cho Product Backlog là luôn luôn hiện hữu, thông suốt và rõ ràng tới tất cả mọi người và chỉ ra những gì mà Nhóm Scrum sẽ làm việc
  5. Sự đảm bảo cho Nhóm Phát triển hiểu rõ các hạng mục trong Product Backlog với các mức độ cần thiết

Product Owner có thể tự mình thực hiện công việc trên hoặc để Nhóm Phát triển làm. Tuy nhiên, Product Owner vẫn phải chịu trách nhiệm chính.

Product Owner là một người, không phải là một ủy ban. Product Owner có thể cần tới một ủy ban tham gia vào Product Backlog, nhưng những người trong ủy ban muốn thay đổi trình tự các hạng mục trong Product Backlog phải thuyết phục được Product Owner.

Để Product Owner thành công, cả tổ chức phải tôn trọng các quyết định của người này. Các quyết định đó được hiển thị trong nội dung và thứ tự trong Product Backlog. Không ai ngoài Product Owner được phép yêu cầu Nhóm Phát triển làm gì khác và Nhóm Phát triển cũng không được phép làm gì theo lời bất cứ người nào khác.

Nhóm Phát triển

Nhóm Phát triển (Development Team) gồm các chuyên gia làm việc để cho ra các phần tăng trưởng có thể phát hành được (potentially releasable) cuối mỗi Sprint. Chỉ các thành viên của Nhóm Phát triển mới tạo ra các phần tăng trưởng này (Increment).

Nhóm Phát triển được cấu trúc và trao quyền để tổ chức và quản lý công việc của họ. Sự hợp lực sẽ tối ưu hóa nỗ lực và hiệu quả tổng thể của Nhóm Phát triển. Nhóm Phát triển có các đặc trưng sau:

  1. Đó là nhóm tự tổ chức. Không ai (kể cả Scrum Master) có quyền yêu cầu Nhóm Phát triển làm thế nào để chuyển Product Backlog thành các phần tăng trưởng có thể chuyển giao được
  2. Đó là nhóm liên chức năng, với tất cả các kĩ năng cần thiết để tạo ra phần tăng trưởng của sản phẩm
  3. Scrum không ghi nhận một chức danh nào trong Nhóm Phát triển ngoài Nhà phát triển (Developer), theo tính chất công việc của người này, không có ngoại lệ cho quy tắc này
  4. Các thành viên Nhóm phát triển có thể có các kĩ năng chuyên biệt và các chuyên môn đặc thù, nhưng họ phải chịu trách nhiệm dưới một thể thống nhất là Nhóm Phát triển
  5. Nhóm Phát triển không chứa các nhóm con nào khác với các chức năng đặc thù như ‘nhóm kiểm thử’ hay ‘phân tích nghiệp vụ’.

Độ lớn tối ưu của Nhóm Phát triển là đủ nhỏ để giữ được sự linh hoạt và đủ lớn để hoàn thành công việc. Ít hơn ba người có thể làm giảm sự tương tác và dẫn đến năng suất thấp. Các Nhóm Phát triển nhỏ hơn có thể phải đối mặt với các ràng buộc kĩ năng trong suốt Sprint, dẫn đến Nhóm Phát triển khó có thể chuyển giao gói tăng trưởng phát hành được. Một nhóm nhiều hơn chín người cần nhiều sự điều phối hơn. Các Nhóm Phát triển lớn phát sinh quá nhiều phức tạp để thực hiện việc kiểm soát tiến trình thực nghiệm. Các vai trò Product Owner và Scrum Master không được tính vào kích thước của Nhóm Phát triển, trừ khi họ cũng kiêm luôn vai trò là thành viên của Nhóm Phát triển.

Scrum Master

  • Scrum Master chịu trách nhiệm đảm bảo mọi người hiểu và dùng được Scrum. Scrum Master thực hiện việc này bằng cách đảm bảo Nhóm Scrum tuân thủ lý thuyết, các kĩ thuật thực hành và các quy tắc của Scrum.
  • Scrum Master là một lãnh đạo, nhưng cũng là người phục vụ Nhóm Scrum. Scrum Master giúp đỡ những người ngoài Nhóm Scrum hiểu cách phải tương tác với nhóm sao cho hiệu quả nhất.
  • Scrum Master giúp đỡ tất cả mọi người cải tiến các mối tương tác để tối đa hóa giá trị mà Nhóm Scrum tạo ra.

Scrum Master phục vụ gì cho Product Owner?

Scrum Master phục vụ Product Ower theo nhiều cách, bao gồm:

  1. Tìm kiếm các kĩ thuật để quản lý hiệu quả Product Backlog
  2. Giao tiếp tích cực với Nhóm Phát triển về tầm nhìn, mục đích và các hạng mục của Product Backlog
  3. Huấn luyện cho Nhóm Phát triển biết cách tạo ra các hạng mục Product Backlog thật rõ ràng và đơn giản
  4. Hiểu rõ việc lập kế hoạch dài hạn sản phẩm trong một môi trường thực nghiệm
  5. Hiểu rõ và thực hành sự linh hoạt (agility)
  6. Thúc đẩy các sự kiện Scrum theo yêu cầu hoặc khi cần thiết

Scrum Master phục vụ gì cho Nhóm Phát triển? Scrum Master phục vụ Nhóm Phát triển theo nhiều cách, bao gồm:

  1. Huấn luyện Nhóm Phát triển cách tự tổ chức và làm việc liên chức năng
  2. Giúp đỡ Nhóm Phát triển để tạo ra các sản phẩm có giá trị cao
  3. Loại bỏ các trở lực trong quá trình tác nghiệp của Nhóm Phát triển
  4. Thúc đẩy các sự kiện Scrum theo yêu cầu hoặc khi cần thiết
  5. Huấn luyện Nhóm Phát triển trong trường hợp tổ chức chưa có hiểu biết và ứng dụng đầy đủ về Scrum

Scrum Master phục vụ gì cho Tổ chức? Scrum Master phục vụ Tổ chức theo nhiều cách, bao gồm:

  1. Lãnh đạo và huấn luyện tổ chức trong việc áp dụng Scrum
  2. Lập kế hoạch triển khai Scrum trong phạm vi tổ chức
  3. Giúp đỡ nhân viên và các bên hữu quan hiểu và sử dụng được Scrum cũng như quá trình phát triển sản phẩm thực nghiệm (emprical product development)
  4. Tạo ra sự thay đổi làm tăng năng suất của Nhóm Scrum
  5. Làm việc với các Scrum Master khác để gia tăng hiệu quả của việc áp dụng Scrum trong tổ chức của mình

Các sự kiện Scrum

Các sự kiện trong Scrum tạo ra thói quen và để giảm thiểu những buổi họp hành vốn không được định nghĩa trong Scrum. Scrum dùng các sự kiện được đóng khung thời gian (time-boxed), nghĩa là mỗi sự kiện có giới hạn thời gian tối đa. Điều này đảm bảo thời lượng vừa đủ để tránh lãng phí thời gian không cần thiết cho sự kiện.

Bao gồm cả bản thân Sprint vốn chứa tất cả các sự kiện khác, mỗi sự kiện trong Scrum là một cơ hội chính thức để thực hiện cơ chế thanh tra và thích nghi. Các sự kiện này được thiết kế đặc biệt để đảm bảo sự minh bạch và thanh tra. Nếu không thực hiện được các điều này có thể dẫn đến giảm thiểu tính minh bạch và đánh mất cơ hội để thanh tra và thích nghi.

Sprint

Trái tim của Scrum chính là Sprint, một khung-thời-gian (time-box) có thời gian 2 – 4 tuần để tạo ra các phần tăng trưởng của sản phẩm có thể chuyển giao được. Sprint có khoảng thời gian nhất quán trong suốt quá trình phát triển. Một Sprint mới bắt đầu ngay khi Sprint trước khép lại.

Sprint chứa và bao gồm cuộc Họp Kế hoạch Sprint (Sprint Planning Meeting), các cuộc Họp Scrum hằng ngày (Daily Scrum), một buổi họp Sơ kết Sprint (Sprint Review) và một buổi họp Cải tiến Sprint (Sprint Retrospective).

Biểu đồ khung thời gian cho một sprint trong mô hình phát triển phần mềm Scrum.

Trong suốt Sprint:

  1. Không cho phép bất kì sự thay đổi nào ảnh hưởng đến Mục tiêu Sprint (Sprint Goal)
  2. Thành phần Nhóm Phát triển được giữ nguyên
  3. Mục tiêu chất lượng không được cắt giảm
  4. Phạm vi có thể được làm rõ và tái thương lượng giữa Product Owner và Nhóm Phát triển

Mỗi Sprint có thể được coi như một tiểu dự án với độ dài một tháng. Giống như dự án, Sprint được dùng để hoàn tất điều gì đó. Mỗi Sprint có một định nghĩa về việc phải xây dựng cái gì, một bản thiết kế và bản kế hoạch linh hoạt sẽ hướng dẫn quá trình xây dựng đó, các công việc cần làm và sản phẩm của quá trình đó.

Sprint được giới hạn trong vòng một tháng. Khi Sprint bị kéo dài quá thì định nghĩa về việc phải xây dựng cái gì có thể bị thay đổi, sự phức tạp sẽ gia tăng và rủi ro sẽ tăng theo. Sprint đảm bảo tính dự đoán bằng sự thanh tra và thích nghi trong tiến trình tiến tới mục tiêu của mỗi tháng đó. Sprint cũng sẽ giới hạn rủi ro trong phạm vi chi phí của một tháng.

Hủy một Sprint

Sprint có thể bị hủy trước khi khung thời gian trôi qua. Chỉ có Product Owner mới đủ thẩm quyền kết thúc Sprint, mặc dù Product Owner có thể chịu ảnh hưởng bởi những bên hữu quan khác, bởi Nhóm Phát triển hoặc bởi Scrum Master.

Một Sprint có thể bị hủy nếu như Mục tiêu Sprint có thể trở nên lỗi thời. Điều này xảy ra khi công ty chuyển hướng kinh doanh hoặc khi tình thế công nghệ có sự thay đổi. Nói chung, Sprint có thể bị hủy nếu nó không mang lại điều gì có ích. Thế nhưng, do thời gian trong mỗi Sprint tương đối ngắn, nên việc hủy một Sprint không mấy khi có tác dụng gì.

Khi Sprint bị hủy, các phần sản phẩm đã hoàn chỉnh được xem xét lại. Nếu phần nào đó của công việc đó là có thể chuyển giao được, thì Product Owner có thể chấp nhận chúng. Tất các hạng mục Product Backlog chưa hoàn tất sẽ được tái ước lượng và đặt ngược trở lại Product Backlog để phát triển tiếp. Các phần việc đã thực hiện trên đó sẽ nhanh chóng hết tác dụng và phải thường xuyên được ước lượng lại.

Việc hủy Sprint sẽ gây lãng phí tài nguyên, do mọi người phải họp lại để lên kế hoạch cho một Sprint mới. Việc hủy Sprint thường gây tổn hại nhất định cho Nhóm Phát triển và rất ít khi xảy ra.

Họp Kế hoạch Sprint

Công việc trong Sprint được lên kế hoạch trong buổi Họp Kế hoạch Sprint (Sprint Planning Meeting). Kế hoạch cho Sprint được tạo ra nhờ nỗ lực cộng tác của toàn bộ Nhóm Scrum.

Buổi Họp Kế hoạch Sprint được đóng khung trong tám tiếng cho mỗi Sprint một tháng. Với các Sprint ngắn hơn thì thời gian cho buổi họp được rút ngắn lại. Ví dụ như một Sprint hai tuần có thể chỉ cần họp kế hoạch tới bốn tiếng là đủ.

Buổi Họp Kế hoạch Sprint có hai phần, mỗi phần chiếm một nửa khung thời gian. Hai phần của buổi Họp Kế hoạch Sprint lần lượt trả lời hai câu hỏi sau đây:

  1. Mục tiêu của Sprint này là gì?
  2. Sprint này phải chuyển giao cái gì?
  3. Làm sao để đạt được điều đó?

Phần Một: Phải làm gì trong Sprint này?

Trong phần này, Nhóm Phát triển làm việc để dự báo chức năng sẽ được phát triển trong Sprint. Product Owner trình bày các hạng mục được xếp thứ tự Product Backlog cho Nhóm Phát triển và toàn bộ Nhóm Scrum sẽ hợp tác để tìm hiểu công việc phải làm trong Sprint.

Đầu vào của buổi họp này là Product Backlog, phần tăng trưởng của sản phẩm gần đây nhất, năng lực hiện có của Nhóm Phát triển trong Sprint tới và hiệu suất trong quá khứ của Nhóm Phát triển. Số lượng hạng mục được chọn từ Product Backlog cho Sprint này sẽ hoàn toàn phụ thuộc vào Nhóm Phát triển. Chỉ Nhóm Phát triển có thể đánh giá họ có thể hoàn thành những gì trong Sprint tới đây.

Sau khi Nhóm Phát triển dự báo các hạng mục Product Backlog sẽ được chuyển giao trong Sprint, Nhóm Scrum xác lập Mục tiêu Sprint. Mục tiêu Sprint có thể tạo ra một sợi dây ràng buộc cho những nỗ lực của cả Nhóm Phát triển hướng đến một mục tiêu chung.

Phần Hai: Làm sao để hoàn thành công việc đã chọn?

Sau khi đã chọn công việc cho Sprint, Nhóm Phát triển quyết định cách thức để xây dựng các chức năng sẽ có trong phần tăng trưởng “hoàn chỉnh” trong suốt Sprint. Các hạng mục Product Backlog được lựa chọn cho Sprint cộng với kế hoạch để chuyển giao chúng được gọi là Sprint Backlog.

Nhóm Phát triển thường bắt đầu công việc bằng cách thiết kế hệ thống và các công việc cần thiết để chuyển Product Backlog thành gói sản phẩm chạy được. Công việc có thể lớn nhỏ khác nhau. Tuy vậy, một lượng công việc vừa đủ được lên kế hoạch trong suốt buổi Họp Kế hoạch Sprint cho Nhóm Phát triển sẽ dự báo những thứ có thể làm trong Sprint sắp tới. Các công việc được lên kế hoạch trong những ngày đầu tiên của Sprint bởi Nhóm Phát triển sẽ được phân tách thành các đơn vị nhỏ hơn trong phạm vi một ngày hoặc nhỏ hơn nữa ở cuối buổi họp.

Nhóm Phát triển sẽ tự tổ chức để làm việc trên Sprint Backlog, cả khi lập kế hoạch lẫn thực thi kế hoạch trong suốt Sprint.

Khi Nhóm Phát triển lên kế hoạch, họ hướng mọi điều tới Mục tiêu Sprint. Trong suốt Sprint, các công việc cần làm đôi khi hơi khác so với kế hoạch ban đầu. Khi đó, Nhóm Phát triển sẽ cùng làm việc với Product Owner để xác định lại kế hoạch sao cho vẫn đạt được Mục tiêu Sprint. Mục tiêu Sprint cung cấp sự linh hoạt cần thiết sao cho các chức năng cơ bản vẫn được hoàn thành vào cuối Sprint.

Product Owner có thể giúp Nhóm Phát triển làm sáng tỏ các khúc mắc về các hạng mục được lựa chọn trong Product Backlog, cũng như giúp nhóm đưa ra quyết định trong một số trường hợp đặc biệt. Nếu Nhóm Phát triển thấy có quá nhiều hoặc quá ít việc, họ có thể thương lượng thêm với Product Owner về việc này. Nhóm Phát triển cũng có thể mời một số người khác tham dự để hỗ trợ một số vấn đề kĩ thuật hoặc chuyên môn.

Kết thúc buổi Họp Kế hoạch Sprint, Nhóm Phát triển phải biết cách giải thích cho Product Owner và Scrum Master biết họ sẽ dự định làm việc như thế nào với tư cách một nhóm tự tổ chức để hoàn thành Mục tiêu Sprint và tạo ra phần tăng trưởng theo yêu cầu.

Mục tiêu Sprint

Mục tiêu Sprint (Sprint Goal) là một tập các mục tiêu cần đạt trong một Sprint sau khi triển khai một phần của Product Backlog. Nó cung cấp các gợi ý để Nhóm Phát triển xây dựng các Phần tăng trưởng (Increment). Mục tiêu Sprint cho phép Nhóm Phát triển có một số sự linh hoạt nhất định về việc phải triển khai các chức năng như thế nào trong suốt Sprint. Các hạng mục Product Backlog được chọn chuyển giao một chức năng đầy đủ có thể là một Mục tiêu Sprint. Mục tiêu Sprint nên là một bộ các yêu cầu gắn kết khiến Nhóm Phát triển làm việc cùng nhau thay vì phân rã mỗi người một việc.

Khi Nhóm Phát triển làm việc, họ sẽ ghi nhớ Mục tiêu này trong đầu. Để thỏa mãn Mục tiêu Sprint, họ sẽ triển khai các chức năng cũng như các kĩ thuật cần thiết. Nếu công việc phức tạp hơn dự kiến thì họ có thể cộng tác với Product Owner để thương lượng lại về phạm vi của Sprint Backlog trong Sprint.

Họp Scrum hằng ngày

Cuộc họp Scrum Hằng ngày (Daily Scrum) được đóng khung trong 15 phút để Nhóm Phát triển đồng bộ hóa các hoạt động của thành viên và tạo lập kế hoạch cho 24 giờ tiếp theo. Điều này có được nhờ việc thanh tra các công việc kể từ cuộc họp Scrum Hằng ngày trước và dự báo những công việc sẽ được hoàn thành trước buổi họp lần sau.

Cuộc họp Scrum Hằng ngày được tổ chức tại cùng một địa điểm để giảm thiểu sự phức tạp không cần thiết. Trong suốt cuộc họp, mỗi thành viên Nhóm Phát triển giải thích rõ:

  1. Tôi đã làm những gì kể từ hôm qua để giúp Nhóm Phát triển đạt được Mục tiêu Sprint?
  2. Tôi sẽ làm những gì hôm nay để giúp Nhóm Phát triển đạt được Mục tiêu Sprint?
  3. Tôi có nhìn thấy vấn đề gì cản trở Nhóm Phát triển đạt được Mục tiêu Sprint?

Một nhóm Scrum đang họp hàng ngày, giúp thành viên theo dõi khối lượng công việc và tiến độ.

Nhóm Phát triển sử dụng cuộc họp Scrum Hằng ngày để đánh giá tiến độ công việc hướng tới Mục tiêu Sprint và đánh giá xu hướng tiến triển của công việc trong Sprint Backlog. Cuộc họp Scrum Hằng ngày tối ưu hóa khả năng để Nhóm Phát triển có thể đạt được Mục tiêu Sprint.

Hằng ngày, Nhóm Phát triển có thể giải thích cho Product Owner và Scrum Master biết họ định làm gì với tư cách là một nhóm tự quản để hoàn thành mục tiêu và tạo ra các phần tăng trưởng cần thiết trong Sprint.

Scrum Master đảm bảo cho Nhóm Phát triển tham gia họp, nhưng chính Nhóm Phát triển mới có trách nhiệm chính trong cuộc họp Scrum Hằng ngày. Scrum Master phải hướng dẫn cho Nhóm Phát triển biết cách giữ cuộc họp ngắn gọn trong phạm vi khung thời gian 15 phút.

Scrum Master phải áp đặt quy tắc về việc chỉ có Nhóm Phát triển mới được tham gia cuộc họp Scrum Hằng ngày.

Họp Scrum Hằng ngày sẽ cải tiến quá trình giao tiếp, lược bỏ các buổi họp hành không cần thiết, nhận biết và loại bỏ các trở lực trong quá trình phát triển, nhấn mạnh và phát huy các quyết định nhanh chóng và nâng cao mức độ hiểu biết của Nhóm Phát triển về dự án. Cuộc họp này là chìa khóa của cơ chế thanh tra và thích nghi trong Scrum.

Sơ kết Sprint

Buổi Sơ kết Sprint (Sprint Review) được tổ chức khi Sprint kết thúc để rà soát lại phần tăng trưởng vừa làm ra trong Sprint đó và để thực hiện các biện pháp thích nghi đối với Product Backlog nếu cần. Trong cuộc họp này, Nhóm Scrum và các bên liên quan sẽ trao đổi với nhau về những gì vừa hoàn thành trong Sprint vừa rồi. Trên cơ sở đó và những sự thay đổi trong Product Backlog trong suốt Sprint, người tham dự cuộc họp sẽ hợp tác để thảo luận về những công việc sắp triển khai. Đây là cuộc họp không trang trọng và việc trình bày về gói tăng trưởng chủ yếu nhằm mục đích cung cấp các phản hồi hữu ích và khuyến khích sự cộng tác giữa các bên.

Cuộc họp này được đóng khung trong bốn giờ cho các Sprint có độ dài một tháng. Sprint ngắn hơn thì thời gian họp rút bớt cho phù hợp. Scrum Master đảm bảo các sự kiện được diễn ra và người tham dự hiểu được mục đích của sự kiện. Scrum Master cũng hướng dẫn mọi người luôn làm việc trong khuôn khổ thời gian được phép.

Buổi Sơ kết Sprint có một số đặc điểm sau:

  1. Product Owner mời mọi người tham dự bao gồm Nhóm Scrum và những người liên quan
  2. Product Owner xác nhận phần nào là “Hoàn thành” và phần nào chưa “Hoàn thành”
  3. Nhóm Phát triển thảo luận những điều thuận lợi trong Sprint vừa qua, những khó khăn mà nhóm đã trải qua và cách thức giải quyết các vấn đề đó
  4. Nhóm Phát triển trình diễn các phần việc đã “Hoàn thành” và trả lời các câu hỏi về gói tăng trưởng
  5. Product Owner trao đổi về Product Backlog. Dựa trên tiến độ hiện thời, Product Owner đưa ra dự đoán ngày hoàn thành dự án (nếu cần)
  6. Toàn bộ nhóm thảo luận về những gì sẽ làm, nhờ đó buổi Sơ kết Sprint cung cấp các giá trị đầu vào cho buổi Họp Kế hoạch Sprint tiếp theo
  7. Xem xét lại thời gian biểu, tài chính, cơ sở vật chất, cũng như các yếu tố thị trường cho bản phát hành dự kiến của sản phẩm.

Kết quả của cuộc họp Sơ kết Sprint là một bản Product Backlog đã được cập nhật, với các hạng mục dự định sẽ được triển khai trong Sprint tới. Product Backlog có thể được điều chỉnh toàn diện để thích ứng với các cơ hội mới.

Cải tiến Sprint

Buổi họp Cải tiến Sprint (Sprint Retrospective) là cơ hội để Nhóm Scrum tự thanh tra và đưa ra kế hoạch cho các cải tiến trong Sprint tiếp theo.

Buổi họp Cải tiến Sprint được tổ chức ngay sau Sơ kết Sprint và trước khi cuộc Họp Kế hoạch Sprint tiếp theo diễn ra. Cuộc họp này được đóng khung trong phạm vi ba giờ cho các Sprint một tháng. Sprint ngắn hơn thì cuộc họp sẽ được rút ngắn lại cho phù hợp. Scrum Master đảm bảo các sự kiện được diễn ra và người tham dự hiểu được mục đích của sự kiện. Scrum Master cũng hướng dẫn mọi người luôn làm việc trong khuôn khổ thời gian được phép. Trong cuộc họp này, Scrum Master tham dự như là một thành viên của nhóm chịu trách nhiệm về quy trình.

Mục đích của cuộc họp Cải tiến Sprint là để:

  1. Thanh tra lại tất cả các yếu tố trong Sprint vừa diễn ra, từ con người, các mối quan hệ, quy trình và công cụ
  2. Nhận biết và xếp đặt lại các hạng mục chủ chốt đã được thực hiện tốt và các cải tiến dự định
  3. Tạo ra một kế hoạch để triển khai các cải tiến cách thức làm việc của Nhóm Scrum.

Scrum Master khuyến khích Nhóm Scrum cải tiến, trong phạm vi khung làm việc Scrum, quy trình phát triển và các biện pháp thực hành để nâng cao hiệu quả và thú vị cho Sprint tiếp theo. Trong cuộc họp Cải tiến Sprint, Nhóm Scrum sẽ lập kế hoạch để gia tăng chất lượng sản phẩm bằng việc định nghĩa lại Định nghĩa “Hoàn thành” khi cần thiết.

Kết thúc cuộc họp Cải tiến Sprint, Nhóm Scrum phải xác định được các cải tiến sẽ được triển khai trong Sprint tới. Việc triển khai các cải tiến này chính là sự thích nghi của Nhóm Scrum. Mặc dù các cải tiến có thể được triển khai tại bất kì thời điểm nào đó, cuộc họp Cải tiến Sprint cung cấp một phiên làm việc chính thức để tập trung vào việc thanh tra và thích nghi.

Tạo Tác Scrum

Các tạo tác Scrum (artifact) hiển thị các công việc hoặc các giá trị bằng nhiều cách hữu ích để cung cấp tính minh bạch cũng như các cơ hội cho việc thanh tra và thích nghi. Các tạo tác Scrum được thiết kế để tối đa hóa tính minh bạch và thông suốt của các thông tin chính yếu nhằm đảm bảo mọi người có cùng cách hiểu thống nhất.

Product Backlog

Product Backlog là một danh sách sắp thứ tự tất cả những gì cần thiết của sản phẩm. Nó là nguồn yêu cầu duy nhất thể hiện các thay đổi trong sản phẩm. Product Owner là người chịu trách nhiệm về Product Backlog, nội dung của nó, sự hiện diện và thứ tự các hạng mục trong đó.

Product Backlog có thể không bao giờ hoàn chỉnh. Phiên bản sớm nhất của Product Backlog chỉ cho thấy các yêu cầu được tìm hiểu rõ ràng từ lúc đầu tiên. Product Backlog sẽ tiến hóa cùng với sản phẩm và môi trường mà nó sẽ được sử dụng. Product Backlog là động, nó thay đổi thường xuyên để nhận biết những gì mà sản phẩm cần phải có để có tính cạnh tranh và hữu ích. Chừng nào sản phẩm còn đó, thì Product Backlog cũng hiện diện.

Product Backlog liệt kê tất cả các tính năng (feature), chức năng, yêu cầu, cải thiện, vá lỗi cần thiết để làm nên sản phẩm trong tương lai. Các hạng mục trong Product Backlog được mô tả với các thuộc tính như: mô tả, thứ tự, ước lượng và giá trị.

Khi sản phẩm được đưa vào sử dụng và bắt đầu mang lại giá trị, thị trường sẽ cung cấp các phản hồi, Product Backlog sẽ trở thành một danh sách lớn hơn và toàn diện hơn. Nhu cầu thì không ngừng thay đổi, vì thế một Product Backlog là một thực thể sống động. Sự thay đổi trong các yêu cầu nghiệp vụ, điều kiện thị trường, hay công nghệ có thể dẫn đến các thay đổi trong Product Backlog.

Trong trường hợp nhiều Nhóm Scrum làm việc với nhau trên cùng một sản phẩm, một Product Backlog chung được dùng để mô tả những công việc tới đây của Sản phẩm. Khi đó, các hạng mục có thể được nhóm lại theo một tính chất nào đó.

Việc làm mới Product Backlog là hoạt động thêm vào các chi tiết, ước lượng và trình tự của các hạng mục trong Product Backlog. Đây là quá trình liên tục, theo đó Product Owner và Nhóm Phát triển thảo luận về các chi tiết của từng hạng mục. Trong suốt quá trình làm mới này, các hạng mục liên tục được xem xét và rà soát cẩn thận. Nhóm Scrum quyết định cách thức và thời điểm để làm mới Product Backlog. Hoạt động này có thể chiếm nhiều hơn 10% thời gian của Nhóm Phát triển. Tuy thế, các hạng mục Product Backlog có thể được cập nhật tại bất kì thời điểm nào theo chủ quan của Product Owner.

Product Backlog thường được sắp xếp theo các giá trị, độ rủi ro, độ ưu tiên và sự cần thiết. Các hạng mục đứng đầu danh sách sẽ trực tiếp điều khiển các hoạt động phát triển. Càng ở thứ tự cao hơn, các hạng mục càng được quan tâm nhiều hơn và được tập trung nỗ lực nhiều hơn vì chính giá trị của chúng.

Các hạng mục có thứ tự cao hơn rõ ràng và chi tiết hơn những mục ở vị trí thấp hơn trong Product Backlog. Ước lượng sẽ chính xác hơn nếu như hạng mục rõ ràng và chi tiết hơn vị trí càng thấp, hạng mục càng ít chi tiết. Hạng mục Product Backlog sắp tham gia vào Sprint tới thuộc loại “mịn”, được phân tách sao cho các hạng mục đó có thể được hoàn thành trong khung thời gian của Sprint. Hạng mục Product Backlog có thể hoàn tất trong một Sprint được coi là “Sẵn sàng”, có thể được chọn ra trong buổi Họp Kế hoạch Sprint. Các hạng mục Product Backlog thường rõ ràng và minh bạch hơn sau khi được làm mới.

Nhóm Phát triển chịu trách nhiệm việc ước lượng các hạng mục Product Backlog. Product Owner có thể gây ảnh hưởng lên Nhóm bằng cách giúp họ hiểu và lựa chọn trong các tình huống khó, nhưng người trực tiếp làm việc sẽ đưa ra con số ước lượng cuối cùng.

Kiểm soát tiến độ hướng đến mục tiêu

Tại bất kì thời điểm nào, tổng khối lượng công việc còn lại để đạt mục tiêu phải được nhóm tổng kết. Prododuct Owner theo dõi lượng công việc còn lại ít nhất một lần trong buổi họp Sơ kết Sprint. Product Owner so sánh giá trị này với lượng thời gian còn lại tính từ các Sprint trước để đánh giá tiến độ hướng đến thời điểm dự tính hoàn thành mục tiêu của dự án. Thông tin này được minh bạch trước tất cả các bên hữu quan.

Rất nhiều phương pháp có thể được sử dụng để biểu thị tiến độ công việc, như các biểu đồ burndown, biểu đồ burnup hay các phương pháp dự báo khác. Các biện pháp này đã được chứng minh là rất hữu ích. Tuy nhiên, những thứ này không thay thế được tầm quan trọng của tính thực nghiệm trong quá trình phát triển. Trong các môi trường phức tạp, ta không thể biết được những điều sắp xảy ra. Chỉ có thể dựa trên những điều đã xảy ra để đưa ra các quyết định cho tương lai.

Bảng Scrum và biểu đồ burn down của một nhóm Scrum

Sprint Backlog

Sprint Backlog là tập hợp các hạng mục Product Backlog được lựa chọn để phát triển trong Sprint, kèm theo một kế hoạch để chuyển giao phần tăng trưởng của sản phẩm và hiện thực hóa Mục tiêu Sprint. Sprint Backlog là một bản dự báo của Nhóm Phát triển về những chức năng sẽ có trong phần tăng trưởng tiếp theo và công việc cần làm để hoàn thành phần tang trưởng đó.

Sprint Backlog cho thấy tất cả những việc Nhóm Phát triển cần phải làm để tiến tới Mục tiêu Sprint.

Sprint Backlog là một kế hoạch với chi tiết vừa đủ để những thay đổi về tiến độ công việc có thể nhìn thấy được trong các cuộc họp Scrum Hằng ngày. Nhóm Phát triển chỉnh sửa Sprint Backlog trong suốt Sprint và Sprint Backlog sẽ được cập nhật trongthời gian đó. Sự cập nhật này xảy ra khi Nhóm Phát triển làm việc theo kế hoạch của họ và hiểu rõ hơn về các công việc cần thiết để đạt Mục tiêu Sprint.

Mỗi khi có thêm việc mới, Nhóm Phát triển đưa vào Sprint Backlog. Khi công việc bắt đầu hay kết thúc, giá trị ước lượng về thời gian còn lại để hoàn tất công việc được cập nhật. Khi có phần nào đó của kế hoạch là không cần thiết, chúng sẽ bị bỏ đi. Chỉ có Nhóm Phát triển mới có thể thay đổi Sprint Backlog trong Sprint. Sprint Backlog là một bức tranh thời gian thực về công việc mà Nhóm Phát triển lên kế hoạch để hoàn thành trong Sprint và nó cơ bản thuộc về Nhóm Phát triển.

Kiểm soát tiến độ Sprint

Tại bất kì thời điểm nào trong Sprint, tổng lượng thời gian còn lại để hoàn thành công việc có thể tính toán được. Nhóm Phát triển sẽ theo dõi con số này thường xuyên, ít nhất là vào các cuộc họp Scrum Hằng ngày. Dựa vào việc theo dõi này, họ có thể dự báo về các tiến độ đạt đến Mục tiêu Sprint. Theo đó, họ sẽ quản lý được tiến độ công việc.

Gói tăng trưởng

Gói tăng trưởng (Increment) là tập hợp tất cả các hạng mục Product Backlog đã được hoàn thành trong suốt Sprint hiện tại và những Sprint trước đó. Cuối Sprint, gói tăng trưởng mới phải thỏa mãn điều kiện “Hoàn thành”, có nghĩa là nó phải ở trạng thái sử dụng được và thỏa mãn định nghĩa của Nhóm Scrum về “Hoàn thành”. Gói tăng trưởng phải ở trạng thái dùng được để Product Owner có thể quyết định phát hành (release) nó.

Minh bạch hóa các tạo tác

Scrum vận hành dựa trên sự minh bạch. Các quyết định để tối ưu hóa giá trị và kiểm soát rủi ro dựa nhiều vào việc quan sát trạng thái của các đồ tạo tác Scrum (artifact). Nếu sự minh bạch là đầy đủ, các quyết định sẽ trở nên dễ dàng. Nếu các tạo tác không minh bạch, các quyết định có thể thiếu sót hoặc tiềm ẩn rủi ro.

Scrum Master phải làm việc với Product Owner, Nhóm Phát triển và các đối tượng khác để hiểu rõ tại sao các tạo tác này không hoàn toàn minh bạch. Có nhiều cách để xử lý việc này Scrum Master phải giúp đỡ mọi người áp dụng cách thức phù hợp trong tình thuống thiếu vắng sự minh bạch đầy đủ. Scrum Master có thể phát hiện sự minh bạch không đầy đủ bằng việc thanh tra các tạo tác, các mẫu thăm dò, lắng nghe những gì được nói và phát hiện những sự khác biệt giữa những gì dự kiến và kết quả thực tế.

Nhiệm vụ của Scrum Master là làm việc với Nhóm Scrum và tổ chức để gia tăng tính minh bạch cho các tạo tác này. Công việc này đòi hỏi sự học hỏi, thuyết phục và thay đổi. Minh bạch không phải là việc ngày một ngày hai, mà là cả một quá trình.

Định nghĩa “hoàn thành”

Khi một hạng mục Product Backlog hoặc một Gói tăng trưởng được cho là “Hoàn thành”, mọi người phải hiểu rõ “Hoàn thành” như thế nghĩa là thế nào. Mặc dù việc xác định rõ định nghĩa này hoàn toàn phụ thuộc vào từng Nhóm Scrum, nhưng mọi thành viên phải chia sẻ chung một cách hiểu về việc hoàn thành một công việc, để đảm bảo tính minh bạch và thông suốt. Đây chính là “Định nghĩa Hoàn thành” (Definition of Done) cho Nhóm Scrum nó được dùng để đánh giá khi nào công việc thực sự hoàn thành trên mỗi gói tăng trưởng của sản phẩm.

Định nghĩa thống nhất sẽ chỉ dẫn cho Nhóm Phát triển nắm được số lượng hạng mục Product Backlog có thể được lựa chọn cho một Sprint. Mục đích của mỗi Sprint là để chuyển giao Gói tăng trưởng của các chức năng có tiềm năng chuyển giao được tuân thủ “Định nghĩa Hoàn thành” của Nhóm Scrum.

Mỗi Sprint, Nhóm Phát triển chuyển giao một Gói tăng trưởng. Phần tăng trưởng này phải là khả dụng, để Product Owner có thể lựa chọn và phát hành ngay lập tức. Nếu định nghĩa về “Hoàn thành” là một của quy ước, tiêu chuẩn hoặc hướng dẫn của tổ chức, tất cả các Nhóm Scrum đều phải tuân thủ. Nếu tổ chức chưa có một quy ước như vậy thì Nhóm Phát triển của mỗi Nhóm Scrum phải định nghĩa “Hoàn thành” cho từng sản phẩm. Nếu nhiều Nhóm Scrum cùng làm việc trên một sản phẩm, thì họ phải cùng nhau định nghĩa một cách hiểu chung về “Hoàn thành’.

Mỗi gói tăng trưởng được cộng dồn vào các gói tăng trưởng trước đó và được kiểm thử toàn bộ để đảm bảo chúng làm việc tốt với nhau. Khi Nhóm Scrum ngày càng trưởng thành thì “Định nghĩa Hoàn thành” càng được mở rộng với các chỉ tiêu khắt khe hơn để đạt chất lượng cao hơn. Bất kì một sản phẩm hay hệ thống nào đều nên có một định nghĩa “Hoàn thành” như là tiêu chuẩn cho công việc.

Sliding Sidebar

About Me

About Me

Hello, my name is Dũng (Johnny). Welcome to my blog.

As I’m a developer, I write about topics related to the field of programming, mainly from a technical point of view. On this blog you’ll find posts which encourage discussion, information about development trends, case studies, reviews, tutorials, tips on how to improve your effectiveness, and anything else that might be fascinating to people from the IT industry.
I love PHP, NodeJS, Java,... and Fullstack.