与众包中的微任务不同,例如给数据标标签,软件开发任务对于个人来说通常过于复杂,因此开发人员更愿意加入团队,以确保软件开发的生产力和质量。我们对Kaggle的实证研究揭示了团队协作的好处。然而,今天像Kaggle这样的CSD平台并没有为团队的形成提供有效的支持。据我们所知,很少有人为众包开发者推荐队友。
团队推荐问题已经在各个领域得到了广泛的研究。在协作学习中,大量的研究集中在将学生分配到合适的团队中,并根据专业知识-不同的目标和专业知识-获得目标来提升他们的技能。在项目开发中,一些研究旨在通过推荐合适的任务团队来优化任务结果。在员工培训中,一些工作尝试将员工分配到各种项目中, 目标在于培训员工以及完成任务。在这些研究中,任务请求者将任务分配给推荐的团队,这不能满足想要找到队友的开发人员的要求。还有一些研究致力于挖掘人们的队友偏好。一些人对促使研究人员与合作伙伴合作的因素进行了实证研究,发现个体特征和研究领域是合作的最强预测因子。然而,很少有研究涉及开发者的队友喜好。
在我们的工作中,我们的目标是为众包开发人员研究个性化的队友推荐方法。首先,为了验证队友推荐的重要性,我们对Kaggle进行了实证研究。我们的结果表明,开发人员可以从团队合作中受益,他们对CSD平台中的队友推荐支持有很大的需求。我们的分析还表明,开发者的队友偏好很大程度上受到三个因素的影响,包括与队友的亲密关系,与队友的专业差异,通过协作获得的专业知识。其次,我们将开发人员的协作意愿定义为上述三个因素的加权总和,其中权重定义了开发人员的个人队友偏好。然后,个性化的队友推荐问题被制定为优化团队的协作意愿的问题。第三,我们进一步提供量化这三个因素的方法,然后提出一种基于线性规划的方法,用他们的协作历史来计算开发人员的队友偏好。最后,根据开发人员的个人队友偏好,我们设计了一个带有近似算法的队友推荐方法,以最大化候选团队的协作意愿。

1.团队协作的益处
我们根据参加超过K场比赛的选定开发者的发展历史,对开发者在不同工作模式下的竞争排名进行了统计分析。经过分析,证明团队协作对项目开发是有益处的。
2.寻找队友失败的现象
我们浏览了数据集中的讨论表,以便在其标题中选择与术语团队的讨论。选择了500个被认为是为了寻找队友而被公布的讨论。我们推断,只有20.9%的开发人员成功合作,58.5%的开发人员放弃参与,这可能是由于缺乏队友。通常会看到开发人员在寻找队友方面失败,因此为开发人员提供队友建议至关重要。
3.个性化队友推荐以及影响因素
我们对这500个讨论进行了进一步的分析。事实证明,45%的报告清楚地表明他们希望通过团队协作获得专业知识的提升,77%的报告呼吁技能熟练程度与他们相似的队友。我们可以得出结论:团队成员之间的协作和专业知识差异所带来的专业知识会影响开发人员的协作意愿。从上面可以看出,开发者对队友提出了不同的要求。一些报告要求具有相似技能熟练程度的人组成团队,有些人希望通过团队合作促进他们的专业知识,而其他人则希望与前队友合作。因此,开发人员有他们的个人队友偏好,我们的队友推荐方法应该考虑到这些偏好。
提出的方法:我们在下图中给出了我们的推荐框架。为了量化团队的协作意愿,我们模拟了支配开发人员协作意愿的三个因素,然后通过分析他们的协作历史来描述开发人员的个人队友偏好并获得他们最小的协作意愿。最后,基于协作意愿,我们提出了一种近似算法,为开发人员提供队友推荐。
因素建模
在这一部分中,我们介绍了主导开发人员合作意愿的三个因素的具体表示。
因素1(与队友的亲密关系CF)在CSD平台中,开发人员通常会彼此进行协作关系和社交互动,在此基础上我们可以衡量开发人员之间的集成亲密度。
因素2(与队友的专业知识差异EDF)专业知识差异削弱了开发人员的团队合作意愿。
因素3(通过协作获得专业知识EGF)许多开发人员希望通过团队合作来提升他们的专业知识。受Jiawei Zhang等人的启发,我们定义了一个增益函数来衡量开发人员技能熟练程度的提高。首先,我们介绍团队T的技能熟练程度,然后代表开发人员从团队获得的专业知识。
实验我们使用了从Kaggle收集的数据集,其中包括从2010年4月到2018年1月的275个竞赛和74,354个开发人员。该数据集包含19,300个开发人员的竞争记录,我们可以从中获得开发人员的技能熟练和协作关系。我们还从Kaggle的讨论社区和内核社区中抓取他们的社交数据,以挖掘他们的社交关系。488,722对开发人员通过协作或社交关系进行链接。
实验结果我们的方法可以推荐具有更高协作意愿的团队,并且优于现有方法(Optimal除外),因为我们的方法考虑了三个因素和个人队友偏好,而CF,EGF和EDF只考虑影响协作意愿的一个因素。 Optimal的结果证明了理论上最大的协作意愿。
结论:在本文中,我们通过对Kaggle的实证研究,确定了众包软件开发的个性化队友推荐问题。然后,我们提出了一种方法,通过根据开发人员的个人队友偏好最大化团队的协作意愿来解决问题。在Kaggle数据集上进行的实验验证了我们方法的有效性。
在未来,我们将研究涉及多种开发技能的队友推荐,并在为新手提供推荐时尝试解决冷启动问题。
致谢由中国科学院软件研究所2017硕士生邢铭哲翻译转述。