Trong bài viết “Định nghĩa Hoàn thành là gì?“, bạn đã biết được “Định nghĩa Hoàn thành” (viết tắt: DoneDef) là gì, tầm quan trọng của nó, và nó được áp dụng cho các việc gì trong phát triển phần mềm. Tôi cũng đã góp thêm cái ý DoneDef là công cụ cho nhóm self-check và tự quản ở bài “Khác biệt, tương đối, và tiêu chuẩn hoàn thành“. Tuy vậy, tôi vẫn thấy rất nhiều nhóm hầu như không xác định nổi thế nào là “Xong” cho mỗi công việc của họ. Ngẫm lại thấy nguyên nhân của sự thể này là nó (việc định nghĩa công việc thế nào là “xong”) rất khó. Ngay cả khi biết nó là quan trọng, thì cũng rất khó để lập cho được một DoneDef có tính khả thi.

Tôi cũng đã thử phác thảo và tìm kiếm kiếm các hướng dẫn về xây dựng DoneDef cho các nhóm. Trong số các thứ tìm được, có một danh sách dài, nhưng rất hữu ích được đề xuất bởi chính Ken Schwaber và Jeff Sutherland trong cuốn “Software in 30 days”, nhóm của bạn có thể xây dựng một cái DoneDef cho mình bằng cách hết sức đơn giản là “nhặt ra” các item từ danh sách dưới đây, cố gắng kéo dài nó ra theo thời gian.  DoneDef phản ánh năng lực kĩ thuật của nhóm, vì thế cần xây dựng DoneDef vừa sức, khả thi để mọi người đều có thể thể làm được, không nên quá tham vọng. Qua thời gian, danh sách sẽ dài ra, và bạn có quyền tự hào về năng lực kĩ thuật của nhóm mình. Nhưng chuyện đó không thể nào ngày một ngày hai được, có thể sẽ mất dăm bảy năm.

Xin giới thiệu với các bạn Danh sách hữu ích này:

  1.  Requirements analysis
  2.   Design of architectural components
  3.   Design review
  4.   Design of tests (system, user acceptance, integration)
  5.   Design review
  6.   Design of documentation
  7.   Design review
  8.   Refactoring of existing design
  9.   Design of unit tests for new code
  10.   Design of unit tests for code to be refactored
  11.   Writing of new code
  12.   Writing of refactored code
  13.   Code review (or pair programming)
  14.   Writing of functional tests
  15.   Writing of integration tests
  16.   Writing of documentation
  17.   Unit test code
  18.   Identifying and rectifying defects
  19.   Subsystem/team build
  20.   Identifying and rectifying defects
  21.   Unit test for subsystem/team code
  22.   Identifying and rectifying defects
  23.   System/integration build
  24.   Identifying and rectifying defects
  25.   System, functional tests
  26.   Identifying and rectifying defects
  27.   Integration tests
  28.   Identifying and rectifying defects
  29.   Performance tests
  30.   Identifying and rectifying defects
  31.   Security tests
  32.   Identifying and rectifying defects
  33.   Regression test
  34.   Identifying and rectifying defects
  35.   Documentation test
  36. Identifying and rectifying defects

Enjoy Scrumming 😉

Written by Tấn Dương