Bus factor is a metric that identifies how resilient is the project to the sudden engineer turnover. It states the minimal number of engineers that have to be hit by a bus for a project to be stalled. Even though the metric is often discussed in the community, few studies consider its general relevance. Moreover, the existing tools for bus factor estimation focus solely on the data from version control systems, even though there exists other channels for knowledge generation and distribution. With a survey of 269 engineers, we find that the bus factor is perceived as an important problem in collective development, and determine the highest impact channels of knowledge generation and distribution in software development teams. We also propose a multimodal bus factor estimation algorithm that uses data on code reviews and meetings together with the VCS data. We test the algorithm on 13 projects developed at JetBrains and compared its results to the results of the state-of-the-art tool by Avelino et al. against the ground truth collected in a survey of the engineers working on these projects. Our algorithm is slightly better in terms of both predicting the bus factor as well as key developers compared to the results of Avelino et al. Finally, we use the interviews and the surveys to derive a set of best practices to address the bus factor issue and proposals for the possible bus factor assessment tool.
翻译:公交车系数是确定项目对工程师突然更替的适应力的衡量标准,它指出只有极少数目的工程师必须被公交车击中才能使项目停顿下来。尽管公交车指数经常在社区中讨论,但很少有研究考虑其一般相关性。此外,公交车系数估算的现有工具仅侧重于版本控制系统的数据,尽管存在其他知识生成和分配渠道。通过对269名工程师的调查,我们发现公交系数被视为集体发展中的一个重要问题,并确定了知识生成和分配在软件开发团队中的最大影响渠道。我们还提议采用多式公交车系数估算法,使用代码审查和会议数据与VCS数据一起使用数据。我们测试杰布雷纳斯开发的13个项目的算法,并将其结果与阿韦利诺等人开发的先进工具的结果进行比较。通过对从事这些项目的工程师调查所收集的地面真相进行比较。我们的算法在预测公交车系数以及关键开发商与Avelino et al的结果相比方面稍好一些。最后,我们使用访谈和工具系数来计算最佳处理方式和最佳评估。