การจัดหมวดหมู่หนี้ทางเทคนิค (2018)
(technology.riotgames.com)การจัดหมวดหมู่หนี้ทางเทคนิค
บทนำ
- Bill "LtRandolph" Clark เป็นผู้จัดการฝ่ายวิศวกรรมของทีม Champions ของ LoL และให้ความสนใจอย่างลึกซึ้งกับหนี้ทางเทคนิค
- หนี้ทางเทคนิคถูกนิยามว่าเป็นโค้ดหรือข้อมูลที่ก่อให้เกิดต้นทุนกับนักพัฒนาในอนาคต
- บทความนี้แนะนำประเภทต่าง ๆ ของหนี้ทางเทคนิคที่ Riot เคยพบ และโมเดลที่ใช้ภายในองค์กร
เมทริกซ์
เพื่อประเมินหนี้ทางเทคนิค มีการใช้แกนหลัก 3 ด้าน: ผลกระทบ, ต้นทุนในการแก้ไข, การแพร่กระจาย
ผลกระทบ
- ผลกระทบที่หนี้ทางเทคนิคมีต่อผู้เล่นและนักพัฒนา
- เช่น บั๊ก, ฟีเจอร์ที่ขาดหายไป, พฤติกรรมที่ไม่คาดคิด เป็นต้น
ต้นทุนในการแก้ไข
- เวลาและความเสี่ยงที่จำเป็นในการแก้ไขหนี้ทางเทคนิค
- ความผิดพลาดง่าย ๆ อาจแก้ได้ในไม่กี่นาที แต่ปัญหาที่ฝังรากลึกอาจใช้เวลาหลายสัปดาห์หรือหลายเดือน
การแพร่กระจาย
- หนี้ทางเทคนิคสามารถแพร่ขยายได้มากเพียงใด
- ส่งผลต่อการโต้ตอบกับระบบอื่น การคัดลอกข้อมูล และการพัฒนาฟีเจอร์ใหม่
ประเภทของหนี้
หนี้เฉพาะจุด
- ปัญหาเกิดขึ้นเฉพาะภายในระบบ และไม่ส่งผลต่อภายนอก
- ตัวอย่าง: Cataclysm ของ Jarvan
เมทริกซ์ของ Cataclysm
- ผลกระทบ: 1 / 5
- ต้นทุนในการแก้ไข: 2 / 5
- การแพร่กระจาย: 1 / 5
หนี้แบบ MacGyver
- กรณีที่สองระบบซึ่งขัดแย้งกันถูกเชื่อมเข้าด้วยกันแบบชั่วคราว
- ตัวอย่าง:
std::stringของ C++ และคลาส AString ของ Riot
เมทริกซ์ของ std::string vs AString
- ผลกระทบ: 2 / 5
- ต้นทุนในการแก้ไข: 3 / 5
- การแพร่กระจาย: -2 / 5
หนี้เชิงรากฐาน
- กรณีที่สมมติฐานซึ่งฝังลึกอยู่ในระบบส่งผลกระทบต่อทั้งระบบ
- ตัวอย่าง: การใช้ภาษา Lua สำหรับสคริปต์ใน LoL
เมทริกซ์ของ BlockBuilder Lua
- ผลกระทบ: 4 / 5
- ต้นทุนในการแก้ไข: 4 / 5
- การแพร่กระจาย: 4 / 5
หนี้ข้อมูล
- กรณีที่มีคอนเทนต์จำนวนมากสะสมทับอยู่บนหนี้ทางเทคนิคประเภทอื่น ทำให้การแก้ไขยากและมีความเสี่ยง
- ตัวอย่าง: บั๊กชื่อพารามิเตอร์ของภาษาเขียนสคริปต์ BlockBuilder
เมทริกซ์ของบั๊กชื่อพารามิเตอร์
- ผลกระทบ: 2 / 5
- ต้นทุนในการแก้ไข: 2 / 5
- การแพร่กระจาย: 4 / 5
สรุป
- เมื่อต้องประเมินหนี้ทางเทคนิค ควรพิจารณาผลกระทบ ต้นทุนในการแก้ไข และการแพร่กระจาย
- การแพร่กระจายแสดงถึงความเป็นไปได้ที่หนี้ทางเทคนิคจะลุกลาม และหากมองข้ามอาจกลายเป็นปัญหาใหญ่ได้
- หนี้ทางเทคนิคสามารถจัดได้เป็น 4 ประเภท: หนี้เฉพาะจุด, หนี้แบบ MacGyver, หนี้เชิงรากฐาน, และหนี้ข้อมูล
สรุปโดย GN⁺
- บทความนี้อธิบายประเภทของหนี้ทางเทคนิคและวิธีประเมิน เพื่อช่วยให้นักพัฒนาตัดสินใจได้ดีขึ้น
- เน้นย้ำเรื่องการแพร่กระจายของหนี้ทางเทคนิค และชี้ให้เห็นว่าการแก้ปัญหาตั้งแต่เนิ่น ๆ เป็นสิ่งสำคัญ
- โปรเจ็กต์อื่นที่มีลักษณะใกล้เคียงกัน ได้แก่ Dota 2 และ Overwatch
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
อินเทอร์เฟซเป็นหนึ่งในองค์ประกอบที่สำคัญที่สุดของการออกแบบ และควรพิจารณาอย่างรอบคอบ
หนี้ของผู้ก่อตั้งคือหนี้ที่ผู้ก่อตั้งสร้างขึ้นเพื่อส่งมอบเทคโนโลยีที่ดีได้อย่างรวดเร็ว
น่าแปลกใจที่บทความนี้เขียนโดย Engineering Manager
มีการพูดคุยถึงการจัดหมวดหมู่ของหนี้ทางเทคนิค
เป็นบทความที่ยอดเยี่ยมในมุมมองทางเทคนิค
ใช้คำว่า "Contagion" ในการอธิบายหนี้ทางเทคนิค
นิยามหนี้ทางเทคนิคคือโค้ดหรือข้อมูลที่ทำให้นักพัฒนาในอนาคตต้องเป็นผู้จ่ายต้นทุน
จะไม่เรียก "หนี้เฉพาะจุด" ว่าเป็นหนี้ทางเทคนิคในบริบททั่วไป
มีประสบการณ์ทำงานในหลายสตาร์ตอัป
บางครั้งก็จงใจแบกรับหนี้ทางเทคนิคเพื่อผลประโยชน์ระยะสั้น