Bus Factor คืออะไร?
- Bus Factor คือดัชนีที่บอกว่าต้องมีสมาชิกในทีมกี่คนที่หายไปอย่างกะทันหัน จึงจะทำให้โปรเจกต์ล่าช้า
- ในปี 2015 เมื่อผู้มีส่วนร่วมในโค้ดเบสที่สร้างรายได้เพียงแห่งเดียวของบริษัทถูกเลิกจ้าง จึงตัดสินใจเขียนปลั๊กอิน GitHub เพื่อคำนวณสิ่งนี้
กระบวนการพัฒนาปลั๊กอิน
- เริ่มพัฒนาปลั๊กอินโดยอ้างอิงจากงานวิจัยเรื่อง Truck Factor
- เพื่อนร่วมงานกังวลว่าปลั๊กอินนี้อาจถูกผู้บริหารใช้เป็นเครื่องมือคำนวณว่าควรไล่ใครออกได้ง่าย ๆ
ความพยายามในการทำซ้ำผลลัพธ์
- พยายามทำซ้ำผลลัพธ์โดยใช้ GitHub repository ที่ให้มาในงานวิจัย
- ข้อมูลถูกให้มาในรูปแบบ JSON และสามารถทำ visualization ได้ผ่าน CSV
- คำแนะนำใน README ทำงานได้ไม่ถูกต้อง จึงใช้เวลาแก้ปัญหาอยู่พักหนึ่ง
การใช้ GNU Parallel
- ใช้ GNU Parallel เพื่อโคลน GitHub repository หลายแห่งพร้อมกัน
- แม้จะตั้งให้ใช้เพียง 8 โปรเซส แต่ทุกคอร์ก็ถูกใช้งานจนเต็ม
Ruby Gems และ NixOS
- พบความยากลำบากในการติดตั้งปลั๊กอิน Linguist
- กำลังหาวิธีติดตั้ง Ruby Gems บน NixOS
การคำนวณผลลัพธ์ใหม่
- ฟอร์ก repository ต้นฉบับ แล้วคอมไพล์ซอร์ส Java เพื่อคำนวณผลลัพธ์ใหม่
- ตัวอย่างผลลัพธ์ของ repository Linux kernel: Truck Factor 12, coverage 49.98%
ปัญหาและการวิจัยเพิ่มเติม
- กระบวนการคำนวณไม่ได้พิจารณา process การรีวิว
- จำเป็นต้องตรวจสอบว่าทำไม Truck Factor ของ Linux kernel จึงต่างจากเมื่อ 10 ปีก่อนอย่างมาก
- มีแผนจะตรวจสอบคำอ้างอิงของงานวิจัยเพื่อหาวิธีคำนวณที่ดีกว่า
บทสรุป - ความสำคัญของ Bus Factor
- ในงานวิจัยปี 2015 ประเมิน Truck Factor ของ Linux kernel ไว้ที่ 90 แต่ปัจจุบันคำนวณได้ 12
- นี่ไม่ได้หมายถึงการปรับปรุงที่ดีขึ้น
- สามารถดู visualization เพิ่มเติมและรายละเอียดอื่น ๆ ได้ที่บล็อกของ mclare
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
หนึ่งในความสามารถของ CodeScene คือการระบุส่วนที่มีการกระจายความรู้ต่ำในบริเวณที่โค้ดมีการเปลี่ยนแปลงบ่อย เพื่อค้นหาจุดเสี่ยงสูง
Amazon มีความสามารถที่ช่วยให้มองเห็นกิจกรรมของทีมและปัจจัยเสี่ยงได้ง่าย ผ่านรายงานเกี่ยวกับระบบโค้ด
เหตุผลที่ GNU Parallel ใช้ทุกคอร์ก็เพราะ
git cloneแต่ละครั้งสร้างเธรดindex-packหลายตัวpack.threadsเป็น 1 อาจช่วยได้'bus factor' แสดงถึงความเป็นอิสระและความโปร่งใสของทีม และในสภาวะอุดมคติ สมาชิกทุกคนควรเข้าใจทุกอย่างได้
มีความเข้าใจผิดว่าเมื่ออาชีพก้าวหน้าขึ้น นักพัฒนาควรโฟกัสที่การรีวิวมากกว่าการเขียนโค้ด
ผู้เขียนของระบบถูกนิยามว่าเป็นผู้ใช้ที่มีส่วนร่วมสำคัญกับไฟล์นั้น และหากผู้เขียนครอบคลุมทั้งไฟล์น้อยกว่า 50% ระบบอาจเผชิญความล่าช้ารุนแรง
ปัญหาการเลย์ออฟในสตาร์ทอัพไม่ใช่คำถามว่า 'จะปลดใคร' แต่คือ 'ใครคือทีมที่จะพัฒนาเวอร์ชันถัดไปได้อย่างรวดเร็ว'
ในซอฟต์แวร์องค์กรบางตัว อาจมีแดชบอร์ดที่วัดปริมาณการส่งและรับอีเมล
CPAN ติดตาม bus factor มานานแล้ว เช่น Moose มี bus factor เท่ากับ 5
มีการใช้คำว่า 'lottery factor' เพื่อสื่อว่า ต่อให้ใครบางคนถูกรางวัลลอตเตอรี่แล้วลาออกไป โครงการก็ยังเดินหน้าต่อได้