ในการพูดคุยเรื่อง การจัดการ 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