Technical debt ไม่ใช่ความผิด แต่เป็นการกู้เงิน

หลายคนใช้คำว่า technical debt เป็นคำด่ากลาย ๆ แปลว่า "โค้ดห่วย" แต่คนที่ตั้งคำนี้ขึ้นมาหมายถึงอีกอย่าง คือการตัดสินใจเอาความเร็ววันนี้มาแลกกับดอกเบี้ยที่ต้องจ่ายทุกสปรินต์หลังจากนั้น

มุมมองนี้สำคัญ เพราะการกู้เงินไม่ใช่เรื่องน่าอาย การกู้โดยไม่รู้ตัวต่างหากคือเรื่องน่าอาย

หนี้ที่ตั้งใจ กับหนี้ที่บังเอิญ

แบบตัวอย่างดอกเบี้ย
ตั้งใจกู้"หารดโค้ดไปก่อนเพื่อทันเดมโม มี ticket รอแก้อยู่"จ่ายได้ รู้ว่าเมื่อไหร่ต้องจ่าย
บังเอิญไม่รู้ว่ามีส่วนไหนเปราะ จนกว่าจะมีคนไปแตะดอกทบต้น จ่ายตอนเกิดเหตุพอดี
เจตนาแต่ทิ้งไว้รู้ว่ามี แต่ไม่เคยตั้งงบแก้กลายเป็นหนี้สินถาวร

ดอกเบี้ยมาในรูปไหน

มันไม่ได้มาเป็นก้อนให้เห็น แต่มาในรูปเวลาที่หายไปทีละนิดจนไม่มีใครสังเกต

  • งานที่เคยประเมินสองวัน ตอนนี้กลายเป็นห้าวัน
  • คนใหม่เข้าทีมแล้วใช้เวลาสองสัปดาห์กว่าจะกล้าแก้ไฟล์หนึ่ง
  • ทุกครั้งที่ deploy ต้องมีคนเฝ้าหน้าจอ
  • ไม่มีใครกล้าแตะโมดูลหนึ่ง จนโค้ดรอบ ๆ มันพอกขึ้นเรื่อย ๆ

วิธีคุยกับคนที่ไม่ได้เขียนโค้ด

PM หรือผู้บริหารไม่อินกับคำว่า "โค้ดมันสกปรก" แต่อินกับตัวเลข ลองแปลงหนี้เป็นภาษาที่เขาใช้

ตอนนี้ทุกฟีเจอร์ใหม่ในส่วนคำนวณราคาใช้เวลามากกว่าปกติสามเท่า ถ้าใช้เวลาสองสัปดาห์จัดการตรงนี้ งานหลังจากนั้นจะเร็วขึ้นประมาณหนึ่งเท่า
วิธีคุยที่ได้งบมากกว่าการบ่นว่าโค้ดห่วย

จ่ายคืนอย่างไรให้ยั่งยืน

  1. กันโควตาไว้สม่ำเสมอ เช่น 15-20% ของทุกสปรินต์ อย่ารอให้ว่าง
  2. จ่ายเฉพาะส่วนที่แก้บ่อย โค้ดห่วยที่ไม่มีใครแตะก็ปล่อยมันไว้
  3. แนบการจ่ายไปกับงานฟีเจอร์ จะเข้าส่วนนี้อยู่แล้ว เก็บกวาดตรงนี้พร้อมกัน
  4. เขียนเหตุผลไว้ใน ticket เสมอ อีกหกเดือนจะไม่มีใครจำได้

หนี้ทางเทคนิคที่คุมคือหนี้ที่ตัดสินใจกู้ จดไว้ และมีแผนจ่ายคืน ส่วนหนี้ที่พังทีมคือหนี้ที่ไม่มีใครยอมรับว่ากู้มา

ความคิดเห็น

กำลังโหลดความคิดเห็น