Bus factor là gì?
- Bus factor là chỉ số cho biết cần bao nhiêu thành viên trong dự án đột ngột biến mất thì dự án sẽ bị chậm lại.
- Năm 2015, khi một người đóng góp cho codebase duy nhất tạo ra doanh thu của công ty bị sa thải, tác giả đã quyết định viết một plugin GitHub để tính chỉ số này.
Quá trình phát triển plugin
- Tác giả bắt đầu phát triển plugin dựa trên bài nghiên cứu về truck factor.
- Các đồng nghiệp lo ngại plugin này có thể bị dùng như một công cụ để quản lý dễ dàng tính xem nên sa thải ai.
Thử tái hiện kết quả
- Tác giả đã thử tái hiện kết quả bằng cách dùng kho lưu trữ GitHub được cung cấp trong bài nghiên cứu.
- Dữ liệu được cung cấp ở định dạng JSON và có thể trực quan hóa qua CSV.
- Hướng dẫn trong README không hoạt động đúng, nên tác giả đã mất thời gian để xử lý vấn đề.
Sử dụng GNU Parallel
- Tác giả dùng GNU Parallel để clone nhiều kho lưu trữ GitHub cùng lúc.
- Dù chỉ cấu hình dùng 8 tiến trình, tất cả các lõi CPU vẫn bị sử dụng tối đa.
Ruby Gems và NixOS
- Tác giả gặp khó khăn khi cài plugin Linguist.
- Tác giả đang tìm cách cài Ruby Gems trên NixOS.
Tính lại kết quả
- Tác giả fork kho lưu trữ gốc, biên dịch mã nguồn Java và tính lại kết quả.
- Kết quả ví dụ cho kho lưu trữ Linux kernel: truck factor 12, coverage 49.98%.
Vấn đề và nghiên cứu thêm
- Quá trình tính toán không xem xét quy trình review.
- Cần điều tra vì sao truck factor của Linux kernel lại khác nhiều so với 10 năm trước.
- Tác giả dự định xem lại các trích dẫn của bài báo để tìm phương pháp tính tốt hơn.
Kết luận - tầm quan trọng của bus factor
- Trong bài báo năm 2015, truck factor của Linux kernel được đánh giá là 90, nhưng hiện nay được tính là 12.
- Điều này không có nghĩa là đã có cải thiện.
- Có thể xem thêm trực quan hóa và chi tiết trên blog của mclare.
1 bình luận
Ý kiến Hacker News
Một trong các tính năng của CodeScene là xác định những phần có mức phân bổ tri thức thấp trong các khu vực mã nguồn thay đổi thường xuyên để tìm ra các khu vực rủi ro cao
Amazon cung cấp tính năng giúp dễ dàng nắm được hoạt động và các yếu tố rủi ro của nhóm thông qua các báo cáo về hệ thống mã nguồn
Lý do GNU Parallel sử dụng toàn bộ các lõi là vì mỗi
git clonetạo ra nhiều luồngindex-packpack.threadsthành 1 có thể giúp ích'Bus factor' thể hiện tính tự chủ và minh bạch của một nhóm, và trong trạng thái lý tưởng thì mọi thành viên trong nhóm đều nên có thể hiểu mọi thứ
Có một ngộ nhận rằng khi thăng tiến trong sự nghiệp, lập trình viên nên tập trung vào review nhiều hơn là viết mã
Tác giả của hệ thống được định nghĩa là người dùng có đóng góp quan trọng vào tệp; nếu tác giả bao phủ dưới 50% toàn bộ tệp, hệ thống có thể gặp chậm trễ nghiêm trọng
Vấn đề sa thải ở startup không phải là 'sa thải ai' mà là 'ai là đội có thể phát triển phiên bản tiếp theo thật nhanh'
Trong một số phần mềm doanh nghiệp, có thể tồn tại dashboard đo lường lượng email gửi và nhận
CPAN từ lâu đã theo dõi bus factor; ví dụ, bus factor của Moose là 5
Dùng thuật ngữ 'lottery factor' để chỉ liệu dự án có thể tiếp tục hay không ngay cả khi ai đó trúng xổ số rồi rời đi