Technical debt ไม่ใช่ความผิด แต่เป็นการกู้เงิน
หลายคนใช้คำว่า technical debt เป็นคำด่ากลาย ๆ แปลว่า "โค้ดห่วย" แต่คนที่ตั้งคำนี้ขึ้นมาหมายถึงอีกอย่าง คือการตัดสินใจเอาความเร็ววันนี้มาแลกกับดอกเบี้ยที่ต้องจ่ายทุกสปรินต์หลังจากนั้น
มุมมองนี้สำคัญ เพราะการกู้เงินไม่ใช่เรื่องน่าอาย การกู้โดยไม่รู้ตัวต่างหากคือเรื่องน่าอาย
หนี้ที่ตั้งใจ กับหนี้ที่บังเอิญ
| แบบ | ตัวอย่าง | ดอกเบี้ย |
|---|---|---|
| ตั้งใจกู้ | "หารดโค้ดไปก่อนเพื่อทันเดมโม มี ticket รอแก้อยู่" | จ่ายได้ รู้ว่าเมื่อไหร่ต้องจ่าย |
| บังเอิญ | ไม่รู้ว่ามีส่วนไหนเปราะ จนกว่าจะมีคนไปแตะ | ดอกทบต้น จ่ายตอนเกิดเหตุพอดี |
| เจตนาแต่ทิ้งไว้ | รู้ว่ามี แต่ไม่เคยตั้งงบแก้ | กลายเป็นหนี้สินถาวร |
ดอกเบี้ยมาในรูปไหน
มันไม่ได้มาเป็นก้อนให้เห็น แต่มาในรูปเวลาที่หายไปทีละนิดจนไม่มีใครสังเกต
- งานที่เคยประเมินสองวัน ตอนนี้กลายเป็นห้าวัน
- คนใหม่เข้าทีมแล้วใช้เวลาสองสัปดาห์กว่าจะกล้าแก้ไฟล์หนึ่ง
- ทุกครั้งที่ deploy ต้องมีคนเฝ้าหน้าจอ
- ไม่มีใครกล้าแตะโมดูลหนึ่ง จนโค้ดรอบ ๆ มันพอกขึ้นเรื่อย ๆ
วิธีคุยกับคนที่ไม่ได้เขียนโค้ด
PM หรือผู้บริหารไม่อินกับคำว่า "โค้ดมันสกปรก" แต่อินกับตัวเลข ลองแปลงหนี้เป็นภาษาที่เขาใช้
ตอนนี้ทุกฟีเจอร์ใหม่ในส่วนคำนวณราคาใช้เวลามากกว่าปกติสามเท่า ถ้าใช้เวลาสองสัปดาห์จัดการตรงนี้ งานหลังจากนั้นจะเร็วขึ้นประมาณหนึ่งเท่า
จ่ายคืนอย่างไรให้ยั่งยืน
- กันโควตาไว้สม่ำเสมอ เช่น 15-20% ของทุกสปรินต์ อย่ารอให้ว่าง
- จ่ายเฉพาะส่วนที่แก้บ่อย โค้ดห่วยที่ไม่มีใครแตะก็ปล่อยมันไว้
- แนบการจ่ายไปกับงานฟีเจอร์ จะเข้าส่วนนี้อยู่แล้ว เก็บกวาดตรงนี้พร้อมกัน
- เขียนเหตุผลไว้ใน ticket เสมอ อีกหกเดือนจะไม่มีใครจำได้
หนี้ทางเทคนิคที่คุมคือหนี้ที่ตัดสินใจกู้ จดไว้ และมีแผนจ่ายคืน ส่วนหนี้ที่พังทีมคือหนี้ที่ไม่มีใครยอมรับว่ากู้มา
อยู่ในซีรีส์: ช่างฝีมือโค้ด
อ่านตอนต่อไป
ความคิดเห็น
กำลังโหลดความคิดเห็น