ในการพูดคุยเรื่อง การจัดการ Technical Debt หรือหนี้เชิงเทคนิค
ว่าเราควรจัดการอย่างไรดี
มีแนวทางอะไรที่น่าสนใจ
เพื่อช่วยลดให้น้อยลง
มาดูกันหน่อย
เริ่มด้วยคำถามดีกว่า เพื่อให้เราเองตอบว่ามีปัญหาหรือไม่ ?
ถ้าไม่มีปัญหาจะแก้ไขอะไรละ !!
มาตอบคำถามกัน
- โครงสร้างของระบบงานดีไหม ?
- ทีมสามารถพัฒนาและส่งมอบ feature ได้ง่าย หรือ สะดวกไหม หรือ ยิ่งทำยิงยาก ยิ่งใช้เวลานานขึ้น ปัญหามากขึ้น ?
- ส่งมอบเร็วยังไม่เพียงพอ ต้องมาพร้อมกับคุณภาพที่สูงด้วยไหม ?
- แต่ละทีมหรือแต่ละคน มีการ share เรื่องความรู้ต่าง ๆ เกี่ยวกับการพัฒนาและส่งมอบไหม หรือ ต่างคนต่างทีม ก็ทำ ๆ กันไป ?
- ความสามารถของคนในทีมเป็นอย่างไร ?
- มี guideline ในการพัฒนาและส่งมอบไหม รวมทั้งมีการนำมาใช้บ้างไหม ?
คำถามต่าง ๆ เหล่านี้ จะเกี่ยวข้องกับ
- Software Architecture รวมทั้งการเปลี่ยนแปลงไปตามความต้องการที่เปลี่ยนไป
- การ design ระบบงาน
- Technical risk
- Coding
- Quality assurance
แนวทางในการจัดการ Technical Debt นั้นมีทั้ง process และ tool มาช่วย
ยกตัวอย่างเช่น
- มีการ review ทั้ง pair programming, ทั้ง code review เป็นทีม การเปิด PR ต่าง ๆ รวมทั้งการ refactoring ที่จำเป็นต้องมีชุดการทดสอบอีก ซึ่งต้องทำให้บ่อย เพื่อลดจำนวนของสิ่งที่ต้องคุยหรือ review กัน
- มีชุดของเครื่องมือมาช่วยเหลือนักพัฒนา ทั้งเรื่องของ format code, coding standard, structure, bug และ security เช่นพวก SonarQube, Dependabot, Snyk, Mend เป็นต้น
- เพื่อลดปัญหาที่อาจจะเกิดขึ้น สามารถวางโครงสร้างที่ชัดเจน เหมาะสมต่อคนและระบบ ไม่มากหรือน้อยจนเกินไป
- กำหนด guideline ต่าง ๆ ของทีมพัฒนาขึ้นมา เช่น coding standard, naming convention, การทดสอบ, รูปแบบของ commit message, code quality, pair programming และ review process เป็นต้น
ทั้งหมดเป็นเพียงส่วนหนึ่ง ที่จำเป็นต้องทำบ่อย ๆ
ปรับปรุงและเพิ่มเติม อย่างต่อเนื่อง
เพื่อช่วยลดปัญหาต่าง ๆ ลงมา ให้เราสามารถจัดการได้ง่ายขึ้น
หลัก ๆ คือ ทีมที่เกี่ยวข้องต้องพูดคุยปรึกษาหาทางจัดการ
ทั้งฝั่ง business และ technical
Reference Websites