我真的怀疑是否有任何可靠、值得信赖的方法来衡量个人对解决方案的贡献。有时,重写一些复杂的遗留代码会导致更少的代码行、不太复杂的解决方案(更小的圈复杂度等)可以被视为一个相当重要的贡献,而在其他情况下,删除覆盖边缘情况的有价值的代码会产生相同的统计数据(更少的代码行、更小的 CC 等)肯定是不好的。这一切都取决于人、信任与合作,团队中的个人主义几乎总是错误的,我宁愿避免它,特别是不将其用作激励因素。
I really doubt there is any reliable trustworthy way of measuring individual's contribution to the solution. Sometimes rewriting some complicated legacy code that results in less lines of code, less complicated solution (smaller cyclomatic complexity etc.) can be seen as a quite significant contribution, while in other cases deleting valuable code covering edge cases that results in the same statistics (less lines of code, smaller CC etc.) is definitely something bad. It all comes down to people, trust and cooperation, individualism in the team is almost always wrong and I would rather avoid it and especially not use it as a motivation factor.
This is a research topic on its own. There are several tools that have tried to define metrics like code ownership. There are other approaches which tackle other aspect of collaborative development, for instance the trustability we can have in the code.
There has been also several studies that tried to use the information from bug trackers. For instance, to identify the developer that is the more likely to introduce bugs. But it's hard to be objective (A brilliant developer that is assigned the most critical part of the system, will still be more likely to introduce critical bugs).
It's actually hard to monetize the development tasks. What is the cost of a bug? What is the gain of refactoring? That would be however one way to estimate the contribution of a developer.
The last cool tool I saw of this kind was the Game Plugin for Hudson continuous integration system. A score is assigned to each developer according their actions
-10 if they break the build
-1 for breaking a test
+1 for fixing a test
etc.
That's again a way to somehow assess the contribution of the developer.
All in all, I do feel like what you are asking for exist, but is still very immature.
I don't think you can get a tool to evaluate your share of the project. Measuring lines of source is all very well, but what of the quality of that source? You wouldn't want someone taking the credit for 200 lines of source if the job could have been easiy done in 20...
Also, thinking of my employer for a moment, a lot of people contribute to the project in ways other than code. Immediate examples I can think of would be Project Managers and Testers - both of whom are essential, both of whom rightly deserve some credit.
The only thing that I could imagine would be a voting system. I have absolutely no idea, if that would work in your team or anywhere - but I'm sure, that you will need humans for any realistic estimation of code quality.
作为一个 IT 爱好者和一个控制狂,实现一个可教学的机器学习软件应该不难,该软件使用版本控制、错误数据库等为每个贡献者提供实时表现数据。例如,可以使用 R、KNIME 或 WEKA 来实现此目的。
In Stroustrup's Book on C++ I've read once "Don't try to solve social problems with technical means".
Thinking progmatically, the attitude and the ability of a programmer could be very quickly estimated by making a code-review together and having a talk on relevant topics.
Thinking as an IT-enthusiast and as a control-freak, this shouldn't be very hard, to implement a teachable machine-learning software, which uses version-cotrol, bug-database, etc and greates real-time performanced data for each contributor. E.g. R, KNIME or WEKA could be used for this.
发布评论
评论(5)
我真的怀疑是否有任何可靠、值得信赖的方法来衡量个人对解决方案的贡献。有时,重写一些复杂的遗留代码会导致更少的代码行、不太复杂的解决方案(更小的圈复杂度等)可以被视为一个相当重要的贡献,而在其他情况下,删除覆盖边缘情况的有价值的代码会产生相同的统计数据(更少的代码行、更小的 CC 等)肯定是不好的。这一切都取决于人、信任与合作,团队中的个人主义几乎总是错误的,我宁愿避免它,特别是不将其用作激励因素。
I really doubt there is any reliable trustworthy way of measuring individual's contribution to the solution. Sometimes rewriting some complicated legacy code that results in less lines of code, less complicated solution (smaller cyclomatic complexity etc.) can be seen as a quite significant contribution, while in other cases deleting valuable code covering edge cases that results in the same statistics (less lines of code, smaller CC etc.) is definitely something bad. It all comes down to people, trust and cooperation, individualism in the team is almost always wrong and I would rather avoid it and especially not use it as a motivation factor.
这本身就是一个研究课题。有多种工具尝试定义诸如代码所有权。还有其他方法可以解决协作开发的其他方面,例如可信度< /a> 我们可以在代码中使用。
还有几项研究尝试使用来自错误跟踪器的信息。例如,识别最有可能引入错误的开发人员。但这很难客观(被分配系统最关键部分的优秀开发人员仍然更有可能引入关键错误)。
实际上很难将开发任务货币化。错误的成本是多少?重构的好处是什么?然而,这将是估计开发人员贡献的一种方法。
我看到的最后一个很酷的此类工具是 Game Hudson 持续集成系统的插件。根据每个开发人员的行为为其分配分数
这又是一种以某种方式评估开发人员贡献的方法。
总而言之,我确实觉得你所要求的东西是存在的,但仍然很不成熟。
This is a research topic on its own. There are several tools that have tried to define metrics like code ownership. There are other approaches which tackle other aspect of collaborative development, for instance the trustability we can have in the code.
There has been also several studies that tried to use the information from bug trackers. For instance, to identify the developer that is the more likely to introduce bugs. But it's hard to be objective (A brilliant developer that is assigned the most critical part of the system, will still be more likely to introduce critical bugs).
It's actually hard to monetize the development tasks. What is the cost of a bug? What is the gain of refactoring? That would be however one way to estimate the contribution of a developer.
The last cool tool I saw of this kind was the Game Plugin for Hudson continuous integration system. A score is assigned to each developer according their actions
That's again a way to somehow assess the contribution of the developer.
All in all, I do feel like what you are asking for exist, but is still very immature.
我认为你无法获得一个工具来评估你在项目中的份额。测量源线一切都很好,但是源的质量如何?如果这项工作可以在 20 年内轻松完成,那么您不会希望有人获得 200 行源代码的功劳……
另外,想一想我的雇主,很多人以代码以外的方式为该项目做出贡献。我能想到的直接例子是项目经理和测试人员——他们都是必不可少的,他们都理应得到一些荣誉。
马丁
I don't think you can get a tool to evaluate your share of the project. Measuring lines of source is all very well, but what of the quality of that source? You wouldn't want someone taking the credit for 200 lines of source if the job could have been easiy done in 20...
Also, thinking of my employer for a moment, a lot of people contribute to the project in ways other than code. Immediate examples I can think of would be Project Managers and Testers - both of whom are essential, both of whom rightly deserve some credit.
Martin
我唯一能想象的就是投票系统。我完全不知道这是否适用于您的团队或任何地方 - 但我确信,您将需要人类对代码质量进行任何实际的估计。
The only thing that I could imagine would be a voting system. I have absolutely no idea, if that would work in your team or anywhere - but I'm sure, that you will need humans for any realistic estimation of code quality.
在 Stroustrup 的 C++ 书中我读过一次“不要试图用技术手段解决社会问题”。
从程序上思考,通过一起进行代码审查并就相关主题进行讨论,可以很快地评估程序员的态度和能力。
作为一个 IT 爱好者和一个控制狂,实现一个可教学的机器学习软件应该不难,该软件使用版本控制、错误数据库等为每个贡献者提供实时表现数据。例如,可以使用 R、KNIME 或 WEKA 来实现此目的。
In Stroustrup's Book on C++ I've read once "Don't try to solve social problems with technical means".
Thinking progmatically, the attitude and the ability of a programmer could be very quickly estimated by making a code-review together and having a talk on relevant topics.
Thinking as an IT-enthusiast and as a control-freak, this shouldn't be very hard, to implement a teachable machine-learning software, which uses version-cotrol, bug-database, etc and greates real-time performanced data for each contributor. E.g. R, KNIME or WEKA could be used for this.