如何估计个人对软件项目的贡献?

时间:2010-03-13 09:41:36

标签: software-estimation

我从事一个软件项目,并希望估算出我在软件开发中所做贡献的百分比。有这样的工具吗?例如,这种工具可用于评估或谈判。毕竟,我们为赚钱而工作(是的,不仅仅是金钱,还有点保留)。我认为对于最重要的事情,有足够的挥手。

估计是非常主观的(至少对我而言),但我不知道任何提供甚至主观估计的工具。我知道Sloccount使用代码行来说明总体工作量,但不是基于每个开发人员。

我对此目的的理想工具的想法是:

  • 衡量代码的复杂性(更复杂的是更多的努力,但更多的努力不一定更多的贡献)
  • 测量软件的可分解性/灵活性(更可分解更好)
  • 使用了多少库代码 - 使用库代码加快了开发过程,增加了相关风险,并要求开发人员从此之前了解或了解库。
  • 足够聪明,可以区分“谁编写代码”,“谁复制代码”和“谁缩进代码”。

很难区分实施的复杂性和问题的内在复杂性。如果存在或者对于每个子模块单独进行比较,也许可以与等效的开源对应物进行比较。

如果没有这样的工具,有没有这样的工具的优点?或者你相信“我做工作,我不衡量”?毕竟需要时间。也许项目经理应该连续进行这种估算,比如每周一次。有标准吗?是的,标准化很难,因为每个项目都有不同的目标,但也许这应该意味着应该有多个标准,而不是没有标准。这看起来类似于公司在市场中的价值。

更新:看到一些初步答案后:想象一个只输出百分比的工具是没有意义的。是否有工具可以帮助人类(尤其是管理者)做出更好的决策?或者,做出更好决策的充分统计数据是什么?这些统计数据可用吗?

5 个答案:

答案 0 :(得分:2)

我真的怀疑有任何可靠的值得信赖的方法来衡量个人对解决方案的贡献。有时候重写一些复杂的遗留代码会导致代码行数减少,复杂性较低的解决方案(较小的圈复杂度等)可以被视为一个非常重要的贡献,而在其他情况下,删除有价值的代码覆盖导致相同统计数据的边缘情况(更少的代码行,更小的CC等)肯定是坏事。这一切都归结为人,信任和合作,团队中的个人主义几乎总是错误的,我宁愿避免它,特别是不要把它作为动机因素。

答案 1 :(得分:2)

这是一个独立的研究课题。有几种工具尝试定义 code ownership 等指标。还有其他方法可以解决协作开发的其他方面,例如我们可以在代码中使用的 trustability

还有一些研究尝试使用错误跟踪器中的信息。例如,识别更有可能引入错误的开发人员。但是很难客观(一个杰出的开发人员被分配到系统中最关键的部分,仍然更有可能引入关键错误)。

实际上很难货币化开发任务。错误的成本是多少?重构的好处是什么?然而,这将是估算开发人员贡献的一种方法。

我看到的最后一个酷工具是Hudson 持续集成系统的Game Plugin。根据每个开发人员的行为分配一个分数

  • -10,如果他们打破了构建
  • -1用于破坏测试
  • +1用于修复测试

这又是一种以某种方式评估开发者贡献的方式。

总而言之,我确实觉得你要求存在,但仍然非常不成熟。

答案 2 :(得分:0)

我认为您无法获得评估项目份额的工具。测量线的来源非常好,但是该源的质量如何呢?如果工作可以在20 ...中轻松完成,你不会希望有人获得200行资源。

此外,考虑到我的雇主片刻,很多人以不同于代码的方式为项目做出贡献。我能想到的直接例子是项目经理和测试人员 - 他们都是必不可少的,他们都应该获得一些荣誉。

马丁

答案 3 :(得分:0)

我唯一能想到的就是投票系统。我完全不知道,如果这可以在你的团队或任何地方工作 - 但我敢肯定,你需要人类对代码质量的任何实际估计。

答案 4 :(得分:0)

在Stroustrup的C ++丛书中,我曾经读过一次“不要试图用技术手段来解决社会问题”。

通过进行代码审查并就相关主题进行讨论,可以非常快速地估计程序员的态度和能力。

enter image description here

作为一个IT爱好者和控制狂的想法,实现一个可教的机器学习软件,使用版本控制,错误数据库等,并且实时性能得到提升,这应该不是很难。每个贡献者的数据。例如。可以使用R,KNIME或WEKA。