代码之家  ›  专栏  ›  技术社区  ›  amit kumar

如何估计个人对软件项目的贡献?[关闭]

  •  2
  • amit kumar  · 技术社区  · 14 年前

    我在一个软件项目上工作,我想估算一下我在软件开发中所做贡献的百分比。有什么工具在做这个吗?例如,这种工具可用于评估或谈判。毕竟,我们工作是为了钱(是的,不只是为了钱,还有一点要说)。我想有足够的人手来处理最重要的事情。

    估计是非常主观的(至少对我来说现在),但我不知道任何工具,甚至提供主观估计。我知道sloccount,它使用代码行来说明所有的工作,但不是基于每个开发人员。

    我的理想工具是:

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

    很难区分实现的复杂性和问题的内在复杂性。如果有的话,也许可以与等效的开源对应项进行比较,或者分别对每个子模块进行比较。

    如果没有这样的工具,有这样的工具就没有价值吗?或者你相信“我工作,我不衡量”?毕竟这需要时间。也许项目经理应该持续地做这个评估,比如说,每周。有什么标准吗?是的,标准化是困难的,因为每个项目都有不同的目标,但也许这意味着应该有多个标准,而不是完全没有标准。这看起来与一家公司在市场上的估值相似。

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

    5 回复  |  直到 9 年前
        1
  •  2
  •   Tomas Vana    14 年前

    我真的怀疑是否有可靠可靠的方法来衡量个人对解决方案的贡献。有时重写一些复杂的遗留代码,导致代码行数减少,不太复杂的解决方案(较小的圈复杂度等)可以被视为一个相当大的贡献,而在其他情况下,删除有价值的代码覆盖边缘的情况,导致相同的统计数据(Less代码行、更小的cc等等)肯定是坏东西。这一切都归结于人,信任和合作,团队中的个人主义几乎总是错误的,我宁愿避免它,尤其是不要把它作为激励因素。

        2
  •  2
  •   ewernli    14 年前

    这是一个独立的研究课题。有几种工具试图定义如下指标 code ownership . 还有其他方法可以解决协作开发的其他方面,例如 trustability 我们可以输入密码。

    也有一些研究试图利用来自 错误跟踪程序 . 例如,要确定更容易引入bug的开发人员。但是很难做到客观(一个优秀的开发人员被分配到系统最关键的部分,仍然更有可能引入关键的bug)。

    其实很难 货币化 开发任务。一个虫子要多少钱?重构的好处是什么?不过,这将是估计开发商贡献的一种方法。

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

    • -如果他们破坏了建筑
    • -破题1分
    • +1用于固定测试
    • 等.

    这又是一种评估开发人员贡献的方法。

    总之,我确实觉得你所要求的存在,但仍然很不成熟。

        3
  •  0
  •   Martin Milan    14 年前

    我不认为你能得到一个工具来评估你在项目中的份额。测量放射源的线都很好,但是放射源的质量如何呢?如果这项工作能在20年内轻松完成的话,你不会希望有人获得200条来源的贷款…

    另外,想想我的雇主,很多人都是以代码以外的方式为项目做出贡献的。我能想到的最直接的例子是项目经理和测试人员——他们都是必不可少的,他们都理应得到一些赞扬。

    马丁

        4
  •  0
  •   Chris Lercher    14 年前

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

        5
  •  0
  •   Valentin H    9 年前

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

    从编程的角度考虑,通过一起进行代码评审并就相关主题进行讨论,可以非常快速地评估程序员的态度和能力。

    enter image description here

    作为一个IT发烧友和一个控制狂,实现一个可教的机器学习软件并不难,该软件使用版本控制、错误数据库等,并为每个贡献者生成实时性能数据。例如R、Knime或Weka可用于此。

    推荐文章