必须为开发人员设定目标,即使目标不起作用

时间:2009-01-15 13:31:51

标签: evaluation

软件开发人员generally accepted setting measurable objectivesdoesn't work,因为过分关注目标会导致行为与组织目标背道而驰(所谓的“measurement dysfunction }“)。

但是,在我的公司,我们需要为所有员工设定目标,人力资源部门鼓励他们制定目标SMART。在过去,我的一级经理(团队领导)和我尝试了很多方法:

  1. 设置正常工作之外的可衡量目标,例如“对技术X进行培训”,“为无法理解的代码段Y创建文档”等等。在年度绩效评估方面,对开发人员的评价不是基于书面目标,而是基于我对其正常工作的不可测量价值的看法,因为这实际上是公司所关心的。
  2. 设定非常具体的目标,例如“任务管理系统记录的日期工作”,“引入的错误数量”,“发布的生产数量”。这导致了错误估计和错误的错误分类,以获得更好的“分数”。有趣的是,即使那些在这个系统上得分很高的开发人员也不喜欢它,因为团队内部的内在信任受到损害,他们并不总觉得自己应该得到高位。
  3. 设置模糊的目标,这些目标是“做好正常工作”的变体。在年度评估中,他们的评级确实反映了与目标相关的绩效,但目标本身无法衡量或可实现,这是不赞成的。
  4. 这些都不是理想的。如果你一直处于类似的情况,即尽管有证据表明它们不是有效的,但是必须为软件开发人员创建有意义的,可衡量的目标,哪种方法最适合你?


    相关问题我发现并没有完全解决同一问题:


    更新(2009年11月18日):我的问题有10个upvotes,评分最高的答案只有4个upvotes(包括我的一个)。我认为这告诉我们一些事情:或许Joel和其他人都是正确的,而且stackoverflow的综合智慧无法为开发人员提供任何令人信服的,可衡量的目标,而这些目标在没有对游戏产生负面影响的情况下无法进行游戏他们工作的真实(不可测量)价值。谢谢你的尝试!

11 个答案:

答案 0 :(得分:21)

  

哪种方法最适合你?

只有一个目标:通过代码检查/同行评审,我作为审稿人,没有发现任何错误或有任何其他批评,这让我要求你重做一些事情。

注意:

  • 我没有测量新员工快速完成的能力,并没有鼓励他们:我希望人们学习如何顺利完成(因为如果它没有完成,那么它还没有完成)
  • 人们在代码审查中学到了我所寻找的东西:所以这是一个学习机会一个质量控制措施,而不仅仅是一个管理目标
  • 我的评论有两个类别:
    1. 这是一个错误:您必须在签入之前解决此问题
    2. 作为一个建议,我会做这样的
  • 过了一段时间,我对一个人的代码的评论将停止找到任何“必须修复”的项目(此时我不再需要审查他们的工作了。)

答案 1 :(得分:14)

我个人尝试设定两种目标:

  • 以商业为中心的目标(这就是我们毕竟获得报酬的原因)。例如,“在2009年6月1日之前完成项目X”)。这些目标经常在团队的几个成员之间共享(他们都知道这一点)。团队可以通过提前启动项目或超出所需功能来超越目标。个人可以通过产生更多功能,减少对他们的错误,或指导和支持团队的其他成员来超越目标。

  • 个人成长目标,例如完成涉及开发人员希望添加到其技能组合中的技术的项目,更好地了解用户的领域,获得领导经验等。

我认为重要的是:

  • 目标是SMART
  • 目标与业务需求保持一致
  • 你确实在目标中加入了“正常工作”,事实上这些是最重要的目标!
  • 员工有机会超越您设定的目标

最后,我会远离软件指标作为目标 - 它们太容易游戏,可能无法满足您的需求。我只会使用一个指标来指导某人进出特定行为。

答案 2 :(得分:9)

这一切都归结为“一级管理”这一事实,而且大多数管理层都不了解他们的员工。不是参与实际的日常规划和开发,而是像SMART这样的东西出现了。如果管理者要花更多的时间与那些从事实际工作的人一起工作,那么这一切都不需要。

就个人而言,我更喜欢在敏捷的环境中工作,在这种环境中显而易见开发人员在生产力和质量意识方面表现出色。真正的敏捷方法不仅要求开发人员,还要包括设计人员,测试人员,客户和产品经理。这自然会从管理者的角度提供更好的见解。

答案 3 :(得分:8)

到目前为止我见过的可衡量目标:

  • 通过证书考试
  • 研究技术X并举行关于它的演示
  • 提交的内置更改次数
  • 内部知识管理上写的维基文章数量

如果他们对个人发展有一些想法可以用于目标,那么直接询问你的开发人员怎么样?

答案 4 :(得分:7)

“确保至少有n%的代码通过合适的单元测试进行测试”使用覆盖工具进行测试,并让其他人审核测试质量。

答案 5 :(得分:7)

  

必须设定目标   开发人员,即使他们没有   工作

如果您的开发人员不工作,或许某些目标只是他们需要给予他们一些奖励? ; - )

答案 6 :(得分:4)

我认为预先设定非常具体的目标,即SMART(也许我们实际上在同一个地方工作),在实践中似乎是一个好主意但对大多数团队来说并不是很实用。

问题实际上是我们的增量目标变化。业务发生变化,开发人员需要在合理的时间内做出正确的反应和反应。

考虑设定与您的团队或团队在组织中的目的相关的目标。如果没有达到目的,您的团队将无法获得资助 - 这是一个宏观目的。拥有整个团队中存在的并与业务保持一致的集体目标。赋予人们责任感并让人们承担责任。庆祝他们的成功和失败(如果我们有时不会失败,我们可能不会尝试,这就是你想要的人)。 HTH

答案 7 :(得分:3)

我们有许多在程序员工作时收集的指标,例如:

  • 更改/添加的SLOC数量
  • 在流程的各个阶段(同行评审,同行评审,发布后)注入的错误/错误数量
  • 变更请求已履行/已拒绝
  • 正式文件(软件版本说明,设计文档等)

所有这些都是有形的,我发现在管理和软件质量保证的演示中很有用。但是我从未发现它们在人们的表现的实际评估中非常有用 - 这是你列出的几个链接所提出的观点。我发现Joel的分数here是有效的 - 指标从未促进良好的团队氛围。

不幸的是,我们都生活在一个其他人需要衡量标准的世界(管理层,质量保证,外部承包商等)。我发现需要采取平衡行动 - 提供这些指标,同时提供无形资产的证据 - 无形的是每个程序员完成的,不一定被跟踪的。例如,我有一个程序员花了大量时间来研究其他人不想触及的遗留代码。尽管他的指标在那段时间内很低,但这种努力是非常宝贵的。

我发现包含这些内容的唯一方法是推动创建一个额外的无形类别,并与其他指标同等重要。通常这足以摆脱特定程序员的平衡。

答案 8 :(得分:2)

其中一个问题似乎是,部门/部门的IT组织没有可衡量的战略目标。如果他们这样做,那么为个人设定目标会更容易。

e.g。如果有一个部门计划减少提出的问题门票的数量,那么,您可以根据与他们照顾的软件相关的门票数量设置个人目标。

由于软件开发比较复杂,因此在团队层面设定目标更有意义,然后根据对团队的贡献对个人进行评级。

答案 9 :(得分:1)

我喜欢的目标是:

征求项目客户对项目参与的N次正面评价。

这有助于从客户(内部或外部)获得一些书面的积极反馈。它不难获得,它的相关性,它是一个简单的,但并非毫无意义的列表。

答案 10 :(得分:1)

我认为,确定如何使个人发展与正在进行的项目保持一致是关键点。让开发人员分析自己以发现弱点并提供其他人的反馈可能是找到可能改进的方法然后找到衡量方法的一种方法。例如,我可能会发现我很少记录已完成的项目等我今年的目标,我可以说我希望改进这一点,并且我生成的文档数量可以衡量。它可能会起作用,或者它可能适得其反,这取决于我是如何真正遵循它的一方面,我可能会有一些有效的担忧,即我如何改进我的工作并做一些可能被视为正确的方法,而被动的侵略性或幼稚的观点是如果它不是那么好的话会产生大量的文件。质量方面可以在明年得到改善,因为这可能是另一个需要考虑的问题:与间隔事物相比,一年中所有人都应该尽可能地改善的动机是什么?

定义有效的开发人员是另一个要素。是最能解决错误的人吗?新工作最快吗?新工作是否完成了测试和文档,即使它没有快速完成?您有什么称为有效,因为“它取决于”标准响应应该在这里澄清。