ไปงาน Agile Singapore 2014 มี session เกี่ยวกับ Technical เยอะมากๆ
เมื่อเข้าไปฟังพบว่าหลังจากที่ Agile ถูกประกาศใช้งานผ่านมา 10 ปีนั้น
ได้มีการกลับมา retrospective กันของกลุ่มคนที่ประกาศ Agile ขึ้นมา
ทำการสรุป key success factor สำหรับการนำ Agile ไปใช้งาน ได้ดังนี้
- Demand Technical Excellence
- Individual Change and Lead Organizational Change
- Organize Knowledge and Improve Education
- Maximize Value Creation Across the Entire Process
จะเห็นได้ว่าข้อแรกนั่นคือ ความต้องการทางด้าน Technical Excellence
ดังนั้น มาดูกันว่าเขาอธิบายไว้อย่างไรบ้าง
โดยนำมาจาก VDO ของคุณ James grenning ในเรื่อง Technical Excellence
เริ่มต้นด้วยหัวใจของ Scrum ก่อนจากคุณ Ken Schwaber
แปลเป็นไทยได้ว่า
Scrum นั้นมีเป้าหมายเพื่อทำให้คุณเห็นปัญหา เพื่อทำให้สามารถแก้ไขมันได้
ยังไม่จบนะ ยังพูดต่อไปอีกว่า
แต่โชคร้ายจริงๆ ที่หลายๆ องค์กรที่นำ Scrum ไปใช้งาน
ทำการปรับเปลี่ยนมัน หรือ ผันรูปมันไปให้เข้ากับองค์กร
แทนที่จะแก้ไขปัญหา เศร้าใจมากๆครับ …
คุณ Jeff Sutherland บอกด้วยว่า ปัญหาใหญ่ของทีม Scrum เลยก็คือ
ปัญหาใหญ่ของทีม Scrum ก็คือ ไม่สามารถสร้างสิ่งที่เรียกว่า shippable code ได้เมื่อจบทุกๆ sprint
ทำให้เรามีสิ่งที่เรียกว่า Hardening Sprint ขึ้นมา
เพื่อชดใช้หนี้ต่างๆ เช่น
- fix bug
- testing
ซึ่งมันก่อนให้เกิดปัญหาอย่างมากๆ ทำให้สิ่งที่ทำมานั้นไร้ความหมาย
สุดท้ายก็งานเข้า หรือ ไฟไหม้เช่นเดิม ดังรูป
ดังนั้น การค้นหา bug และ จัดการ bug นั้น
มันไม่ใช่แนวทางของ Technical Excellence เลยนะครับ จำไว้ด้วย
คำถามที่น่าสนใจ
Scrum นั้นเข้ามาเปลี่ยนจังหวะในการพัฒนาระบบ
แล้วทีมพัฒนาของคุณทำการเปลี่ยนแปลงวิธีการสร้างระบบหรือไม่ อย่างไร ?
คำตอบคือ
สิ่งที่คุณขาดไปเสียไม่ได้เลยนั่นคือ Scrum + Extreme Programming (XP)
แต่สิ่งที่แปลกใจไม่น้อย หรือ มองว่าเป็นจุดที่น่ากลัว ในปัจจุบัน ก็คือ
มีการนำสถิติของจำนวนคนที่เรียน และ ได้รับ certified ระหว่าง Scrum Master (CSM) กับ Scrum Developer (CSD)
มันช่างแตกต่างกันมากมาย ดังรูป
ข้อมูล update ล่าสุดจากงาน Agile singapore 2014 พบว่า
อัตราส่วนระหว่าง CSP vs CSD อยู่ที่ 6 ต่อ 1 นั่นคือ
CSP 6 คน ต่อ CSD 1 คน ซึ่งมันดูแปลกๆ ไหมล่ะ !!!
ดังนั้นเรื่องของ Technical Excellence นั้นจะขาดไปเสียมิได้เลยนะครับ
ซึ่งเป็นแนวปฏิบัติของ Extreme Programming (XP) นั่นเอง เช่น
- Test-Driven Development
- Pair programming
- Continuous Integration
- Coding standard
- Refactoring
- Collective code ownership
- Sustainable pace
ตัวอย่างเช่น
Developer อย่างเราๆ ท่านๆ ควรรู้จัก และ เข้าใจเกี่ยวกับเรื่องต่างๆ ต่อไปนี้
- Agile Software Development
- Clean Code
- Refactoring
เพื่อทำให้รู้ว่าอะไรที่มันผิดที่ผิดทาง เพื่อทำการแก้ไขมันซะ
เพื่อทำให้ code ของเรามันดี และ ทำงานงานดีอยู่เสมอนะครับ
ในการ Refactoring code นั้น คุณจะรู้สึกปลอดภัยได้อย่างไร
ถ้าปราศจาค test และ automated test
รวมทั้งต้องเข้าในการจัดการกับ legacy code ด้วยนะ ดังรูป
จากสถิติบอกว่า
60% ของทีม Agile ซึ่งนำ Scrum ไปใช้
โดยไม่ให้ความสนใจ technical practice
มักจะไม่สามารถส่ง shippable code ได้เมื่อจบ Sprint !!!
เราอยู่ใน 60% หรือไม่นะ …
ปิดท้ายด้วยคำถามที่กระแทกใจนิดหน่อย ว่า
ทำไม ทำไม ทำไม ทำไม ???
คำตอบคือ ….