内部代表,投票和徽章会鼓励良好的编程习惯吗?


17

只是大声思考-我们的程序员喜欢所有这些投票/徽章/代表的东西,因此可以将这样的方案引入公司代码审查流程中,以鼓励更好的编码。

就像是

  • 您(或代表您的其他人)可以发布评论(可以是摘要,单次提交或一系列评论)以进行代码评论

  • 其他人可以对此发表评论(类似于SE中的答案)

  • 可以提供/建议使用徽章(有些会很不错,有些会很糟糕,例如“ Comment Desert”(评论沙漠)等等)

  • 您可以对代码本身以及注释和徽章(例如,如果有人建议使用徽章而您同意/不同意),则可以上下投票。

这样的计划的目的是

  • 引入一些乐趣以鼓励使用代码审查

  • 提高质量(在此方案中,代码审阅者和审阅者都可以学习)

  • 减少代码审查引发“自我战争”的机会

  • 提供一些指标以帮助衡量个人表现

能行吗?有什么想法吗?


2
刚找到此网站-StackExchange以进行代码审查-对于开源/个人项目来说是个好主意,但对于许多公司而言,它的公开名单
Ryan

5
听起来一段时间以来这是个好主意,但我唯一要做的就是摆脱处罚徽章。他们带有耻辱和谦卑,这会阻止那些落后于尝试赶超的人。
maple_shaft

1
这是一个很难的。我认为,残酷的事实是,我们经常可以从错误(我们自己的错误和他人的错误)中学到比从成功中学到的更多。对于所有花哨的嬉皮士来说,公平的惩罚是有效的。问你的父母;)
瑞安

9
唯一的问题是,乔恩·斯基特(Jon Skeet)将始终以10万名的成绩坐在榜首。乔恩·斯基特(Jon Skeet)对您的公司不起作用?没关系 他仍然会在那里。
Tom Anderson

1
好点-也许“我在没有任何评论的情况下就上课”的耻辱徽章应该在一段时间内过期,或者在您做出积极的决定后被撤销-因为否则您就没有动力去改善自己了得到了“印记”,这不再重要了
Ryan

Answers:


20

诸如金钱,徽章或代表的外部奖励将在短期内起作用,例如饮食和任何其他基于奖励/惩罚的系统。

应该使用内在的奖励,例如目的和自主性,并提供更长期的结果。与简单的外部奖励系统相比,将其付诸实践要困难得多,但它是有偿的。

许多专家对此进行了研究。这是我的两个最爱:

丹尼尔·平克(Daniel Pink)在TED上就易于观看和理解的主题做了精彩的演讲

奖励惩罚的作者阿尔菲·科恩Alfie Kohn)就该主题写了:

当然,贿赂和威胁可能会导致临时合规。奖励成年人去健身房,或儿童去捡书,这可能会工作一段时间。但是他们开始认为自己是出于外在动机,因此当奖励不再可用时,没有理由继续。确实,他们对运动或阅读的兴趣可能比以前少了。

奖励(和惩罚)的另一个问题是,它将改变人们的行为方式。例如,如果您向员工提供奖金,则他们将专注于获得这些奖金,而与其他(公司范围)目标无关。它将创造个人主义和部门与员工之间的竞争。怨恨会发生,每个人都会注视着每个人。特别是当您的目标之一是“帮助衡量个人表现”时。

其余员工可能会反驳游戏规则并辞职。营业额的增加将成为一个新问题。

请注意,该社区已经提出了许多有关如何提高动力的建议。


2
皮埃尔,虽然我同意您所说的一些话以及丹尼尔·平克的发现,但我并不认为它们确实适用于解决方案,正如他所描述的。如果将代表,徽章等与金钱奖励挂钩,那将有所不同,但是在这里,它们仅用于增强具有内在含义的行为。在某些方面,它与stackexchange的游戏方面没有什么不同,后者必须说总体上是有益的。尽管这是一个复杂的问题,所以必须谨慎实施
Homde 2011年

2
@mko:金钱是一种奖励。徽章或声誉是另一个。我相信它们具有完全相同的效果。

2
皮埃尔,我必须不同意。这些奖励不仅纯粹是理想的,而且不是由酋长而是由同伴给予的。他们的承认是我们衡量自己的精通和行动目的的最重要参考点之一。投票,徽章和声誉评分系统只能量化反馈并压缩循环。我的意思是,这就是SE起作用的原因。
back2dos

1
皮埃尔,我真的建议您阅读丹尼尔·平克斯(Daniel Pinks)的著作《驱动》,深入探讨激励和动机。有很多例子表明金钱奖励实际上是有害的,而内在奖励却没有。”
Homde 2011年

1
是的,但是,如果有徽章,那么评分是一个很好的衡量标准,它将有助于突出并推动行为朝着内在奖励的方向发展。也就是说,我可能不太关心自己的实际声誉,但我确实想成为一名优秀的开发人员。因此,如果不衡量我的绝对技能,衡量相对进步并激励我改善自己和自己,则代表可能是一个好选择。我们无法衡量的事情我们无法改变。当然,困难的部分是将测量设计为实际上具有一定意义并鼓励正确的行为。
洪德堡2011年

5

是的,可以

但是,只有非常仔细地设计它,否则它才会适得其反。我已经发表了一些评论,但以为我要总结一下我的立场

为了获得声誉,主要目标应该是提供一种衡量标准,员工可以用来衡量其随着时间的推移技能的提高。牢记这一点要非常仔细地进行设计,困难的是想出了一种衡量技能的好方法,我无法从头顶上做到这一点。

徽章主要是“有趣”的事情,我会让它们主要远离和远离更多面向技能的问题。例如,像“这周的夜猫子”这样的徽章或一组“已发运!徽章”的徽章都可以。如果您有一些基于技能的徽章,例如“修复了大多数错误”或“报告了大多数错误”,请仔细考虑可能的感知和游戏方式。徽章应该更多地是强调行为而不是推广IMO。确保同时拥有团队徽章和个人徽章。

我强烈建议您不要使用负面标志,这些事情应该很有趣,并且让人害怕犯错是危险的。而是为这些情况生成友好而有用的电子邮件。

我强烈建议您不要让他们决定并投票表决徽章。人们可以提出关于徽章的建议,但是由于徽章对人的影响可能非常严重,因此使用徽章的方法应由知道自己在做什么而不是多数票的人的谨慎决定来做出。

代码审查是一个有趣的想法,我想这是您可以产生技能价值的一种方法。突出显示代码并进行讨论可能会很有帮助。但是,如果每个人都知道他们正在判断自己编写的所有内容可能会减慢爬行的速度,则可能适得其反。尤其是在迭代开发中,您有时会很快写一些东西然后进行重构,因此您不希望这种行为。

也许可以由自己提交代码的人或只能提交特定年龄代码的其他人来抵消。尽管如此,要知道会有什么影响还是很棘手的

最后,我认为您必须尝试一下,看看有什么用,什么没用,有一本好书叫《现实被打破》,可能很有趣。丹尼尔·平克斯(Daniel Pinks)的书《驾驶》也是必读的书。


2

我认为,,因为它不衡量良好做法本身,而是一种症状(如果其他人认为它是良好做法)。

用鲍伯叔叔的书来解释(忘了书名):好的代码似乎几乎毫不费力,它使问题看起来微不足道,就像是为编写它而使用的语言一样。

以我的经验,这种代码没有引起注意,只有很长一段时间才引起人们的注意,该代码从未出现问题,然后也许人们还记得,在引入代码之前,问题是巨大的不确定性和模糊。在评论中获得赞誉的代码通常是评论者在美好的一天中不愿挑剔的时候所看的代码,其更改最少。


1
Erm-re:您的第一点-是的,那是我们最好的,不是吗?代码指标本身不能提供足够好的描述。
瑞安

1
任何一种代码审查方法都不是真的吗?
nikie 2011年

问题在于,不是您要尝试进行度量,而是要在度量与实际上是团队动机之间建立反馈循环。以我的经验,这会迅速激发团队“超越测试”,而不是编写更好的代码。
keppla 2011年

1
与手动检查代码相比,“击败测试”更适用于指标。要将您的第一个论点推到极致,您是在说没有办法确定什么是“好”。没错,但是在某种程度上,我们必须接受的是,如果足够多的人认为某件事是好事,那么它可能就是好事。
Ryan

1
对于第二个参数+1,可能不会引起注意。
瑞安

1

这个想法将给团队带来新的动力。如果您觉得团队很生气,那么这是一种很好的解决方法。

请记住,这不会是所有的独角兽和彩虹。有些人不会喜欢该计划,因此可能会影响整体生产率/质量。但是,这种风险可能值得。取决于您的情况。


1

我建议使用外部动机(您所建议的是外部动机的一种形式)来激励人们去做“机械的”,重复的和无聊的事情,例如:

  • 准时出席会议
  • 准时提交时间表
  • 更新文件
  • 与团队共享信息

对于任何需要创造力或无法客观衡量质量的工作,我都不会将其用于激励。例如,如果您有一个制作窗口小部件的人,并且可以机械地验证零件的好坏,并且您有一个流程,除非该流程遵循批准的流程,否则不允许进行零件的制造,那么激励就很有用了。工人因生产率而获得非凡的回报,因为该流程不允许他们采取捷径以牺牲质量为代价来制造更多的产品。

如果您没有这些保护措施,那么您尝试外在动机肯定会适得其反。编程恰好属于此类-我们只是无法可靠地衡量软件质量。这是因为制作窗口小部件时,它会离开工厂,并且不会影响您在下一个窗口小部件上所做的工作,但是,当您制作软件时,必须不断地对其进行重新加工。您现在所做的事情会产生长期影响。这些长期影响非常重要,但无法衡量。内在动机是这种事情更有用的动机。

这意味着:

  • 让人们为自己的工作负责
  • 鼓励人们就什么可行,什么不可行进行讨论
  • 对人民的工作表示真正的赞赏

所有这些三件事都不会由某种内部SO来完成,我的意思是为什么人们花那么多时间来SO?关于“投票”的要点是,我认为在这样的领域中投票更有可能是公正,准确和有价值的,因为我完全同意-我们没有任何一种很好的非客观方法来衡量质量。
瑞安

0

进行这项工作的部分原因是大量的参与者,他们彼此不认识或每天必须互相合作。我认为,在一个小组中,这将成为使系统看起来不错或使您的晋升竞争看起来更糟的一种方式。这就是为什么正式的同行评估通常是一个较差的系统的原因。在一个小组中,具有最佳代表的人将是政治上最精明的人,而不是最佳程序员。


0

简短的答案是,可以。

稍长一点的答案是,可以,但也可能适得其反。

除了是一名专业程序员之外,我还是一名业余行为分析师。

现代行为科学的标志性发现之一是行为受到其后果的强烈影响。

如果控制后果,则可以在某种程度上影响行为。程度取决于具体后果对您要更改其行为的每个人的重要性,以及取决于他们避免您的后果并找到愿意为之努力的其他人的难易程度。

作为专业程序员,编写代码的一个结果就是我得到了报酬。停止付钱给我,不久我就会停止露面。薪水对我来说是一个非常重要的后果(我正在抚养一个家庭),在我目前的公司中,没有任何其他我愿意为之工作而不愿为之付出的后果。

如果您是我的老板,则必须决定给我带来什么后果(激励措施,强化措施)。但是您不必决定我如何看待它们。例如,如果我被选为“每月编码员”,我的老板可能会决定提供一个特殊的停车位。如果我住在旧金山或纽约市并且开车,那我可能会愿意为此工作。但是现在我住的地方,停车不是问题,而且我仍然可以步行上班。

以我的经验,在工作场所实施诸如SO之类的程序所面临的最大风险是,您可能会被视为提供同龄人票,而不是向人们支付他们的身价。


“现代行为科学的标志性发现之一是行为受到其后果的强烈影响。” 那是发现吗?真??难道不是我们所有人在生命的早期就学到了什么吗?请勿触摸热物cos,以免造成伤害!请注意,有时我还是会喝太多...
Ryan

@Ryan:你会想。但是,“不要触摸热的东西,因为会疼”,这并不是一门科学。展示如何使行为变化可测量,可重复,可复制和可预测-这就是使行为科学成为一门科学。
Mike Sherrill'Cat Recall'
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.