ว่าด้วย Definition of Done

“The Definition of Done is a formal description of the state of the Increment when it meets the quality measures required for the product.
The moment a Product Backlog item meets the Definition of Done, an Increment is born.
The Definition of Done creates transparency by providing everyone a shared understanding of what work was completed as part of the Increment. If a Product Backlog item does not meet the Definition of Done, it cannot be released or even presented at the Sprint Review. Instead, it returns to the Product Backlog for future consideration.
If the Definition of Done for an increment is part of the standards of the organization, all Scrum Teams must follow it as a minimum. If it is not an organizational standard, the Scrum Team must create a Definition of Done appropriate for the product.
The Developers are required to conform to the Definition of Done. If there are multiple Scrum Teams working together on a product, they must mutually define and comply with the same Definition of Done.”
Source: https://scrumguides.org/scrum-guide.html
ในการทำงานเป็นทีม การมีความเข้าใจเกี่ยวกับ “Definition of Done” (หรือนิยามของการทำงานให้เสร็จสิ้น) ที่แตกต่างกันอาจส่งผลกระทบต่อความสามารถในการทำงานร่วมกันและประสิทธิภาพของทีม
เมื่อ “Definition of Done” ของแต่ละคนไม่เหมือนกัน อาจทำให้เกิดข้อขัดแย้ง ความสับสน หรืองานที่ไม่สมบูรณ์ ดังนั้น ควรพยายามปรับให้ความเข้าใจเกี่ยวกับ “Definition of Done” ในทีมตรงกัน โดยอาจจะสนทนาเพื่อหาความเห็นชอบร่วมกัน หรือกำหนดเกณฑ์สำหรับการทำงานให้เสร็จสิ้น
ความสำคัญคือ ให้ทุกคนในทีมมีความเข้าใจ ตกลง และยอมรับ “Definition of Done” ที่กำหนดขึ้น เพื่อให้งานที่ทำร่วมกันสามารถสร้างความสำเร็จและผลลัพธ์ที่มีคุณภาพในทางที่ถูกต้องและตามเป้าหมายของทีม
ตัวอย่างการกำหนด “Definition of Done” เช็คลิสต์ สำหรับทีมที่ทำงานในการพัฒนาแอปพลิเคชัน:
- การออกแบบ: หน้าตาและสไตล์ของหน้าเว็บต้องสอดคล้องกับแนวทางการออกแบบ (Design Guidelines) ที่ทีมกำหนด
- การปฏิบัติตามมาตรฐานเว็บ: เว็บไซต์ต้องปฏิบัติตามมาตรฐานเว็บที่ยอมรับได้ เช่น W3C Web Standards, เพื่อให้แน่ใจว่าเว็บไซต์ทำงานได้ดีบนเบราว์เซอร์ต่าง ๆ
- คุณภาพของโค้ด: โค้ดที่เขียนต้องมีการจัดระเบียบ และเป็นมาตรฐานที่ทีมยอมรับ เช่น การปฏิบัติตามรูปแบบการเขียนโค้ด (coding style) ของทีม
- การทดสอบ:ควรจะมีการทดสอบโค้ดอย่างน้อย 80% ของรหัสที่เขียน และผ่านการทดสอบ (unit tests) ทั้งหมด
- การทบทวนโค้ด: ทุกการเปลี่ยนแปลงในโค้ดต้องผ่านการทบทวนโค้ด (code review) จากคนในทีมอย่างน้อย 1 คน
- การปฏิบัติตามการรักษาความปลอดภัย: มีการปฏิบัติตามมาตรการความปลอดภัยที่กำหนดขึ้น เช่น การเข้ารหัสข้อมูลผู้ใช้ การป้องกันการโจมตีทางเว็บ
- การทดสอบการใช้งาน: แอปพลิเคชันที่พัฒนาแล้วต้องผ่านการทดสอบการใช้งาน (User Acceptance Test, UAT) จากทีม QA หรือผู้ใช้งานจริง
- การทดสอบสมรรถนะ: เว็บไซต์ต้องผ่านการทดสอบสมรรถนะ (Performance Test) เพื่อให้แน่ใจว่าเว็บไซต์สามารถรองรับจำนวนผู้ใช้ที่มากขึ้นได้
- เอกสารคู่มือการใช้งาน: ควรมีเอกสารคู่มือการใช้งานของแอปพลิเคชันเสร็จสิ้นก่อนจะปล่อยแอปพลิเคชันให้กับผู้ใช้งานจริง
เมื่องานในรายการตรงตามเงื่อนไขทั้งหมดที่กำหนดข้างต้น จึงจะถือว่างานนั้นเสร็จสิ้นตาม “Definition of Done”
ลองนำแนวคิดไปปรับใช้กันดูครับ สิ่งไหนที่เรายังไม่มีก็ลองตกลงกันครับว่าจะทำอะไร
O]O #11