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:
- Requirements analysis
- Design of architectural components
- Design review
- Design of tests (system, user acceptance, integration)
- Design review
- Design of documentation
- Design review
- Refactoring of existing design
- Design of unit tests for new code
- Design of unit tests for code to be refactored
- Writing of new code
- Writing of refactored code
- Code review (or pair programming)
- Writing of functional tests
- Writing of integration tests
- Writing of documentation
- Unit test code
- Identifying and rectifying defects
- Subsystem/team build
- Identifying and rectifying defects
- Unit test for subsystem/team code
- Identifying and rectifying defects
- System/integration build
- Identifying and rectifying defects
- System, functional tests
- Identifying and rectifying defects
- Integration tests
- Identifying and rectifying defects
- Performance tests
- Identifying and rectifying defects
- Security tests
- Identifying and rectifying defects
- Regression test
- Identifying and rectifying defects
- Documentation test
- Identifying and rectifying defects
Enjoy Scrumming 😉