我们将如何评估程序员?
几周前,我被派去评估我们所有的程序员。我对此感到非常不自在,因为我是教所有人使用商店编程语言的人(他们都从大学毕业,不知道该语言,而且很幸运,我对此非常精通。)在评估中,我对他们的表现(完美分数)非常有偏见。
我很高兴我们的编程商店不需要平均表现水平,但是我听到了恐怖的故事,它们要求平均水平。
我的问题如下:
- 作为一名程序员,我们想看到哪些评估问题?
- 作为经理,我们希望看到哪些评估问题?
- 作为评估者,如何防止评估出现偏差?
- 我希望删除评估测试。进行评估测试有什么好处吗?有什么缺点吗?
解决方案
回答
如何获得所有人的意见呢?与一个人一起工作的每个人都将对该人有独特的见解。一个人可能认为某人比较懒惰,而另一个人则看到他们在开始编码之前花了很多时间进行规划,等等。
回答
What about getting everyone's input? Everyone that a person is working with will have a unique insight into that person.
如果(1)敞开的门进行评估,并且(2)我们与该人员一起完成了一个项目甚至是同一模块,那将是可行的。作为评估他们的人,我无法判断与我没有直接合作的程序员。
One person might think someone is a slacker, while another person sees that they are spending a lot of time planning before they start coding
不幸的是,这是有争议的。看起来像个懒惰的人可能会陷入沉思,也许不是。是否有人花了很长时间计划,必然是一个不好的程序员?
我相信一个好的评估问题将能够回答这个问题。
回答
首先,我不必考虑代码的行数,而是考虑人添加的代码的价值,这当然反映了他们被分配要做的事情。有人要求维护编写新应用程序的代码节非常不同。还考虑该人如何使用新技术使代码相关和更新?这个人创建的代码的可维护性如何?他们是否以团队其他成员合乎逻辑且易于理解的方式来做事情?他们的编码会改善应用程序还是破坏应用程序?最后,同样重要的是,它们的编码会随着时间的推移而改善吗?
回答
完成工作实际上就是评估开发人员所需的全部工作。之后,我们将查看开发人员产生的质量。他们是否编写单元测试,并相信测试并对其生成的代码负责?他们会主动分配错误而不给他们分配错误吗?他们对编码充满热情吗?他们是否一直在不断学习,试图找到更好的方法来完成任务或者使过程变得更好?这些问题几乎是我如何判断开发人员的直接下属。如果他们不在直接领导之下,而我们又不是他们的直接报告,那么我们真的不应该对它们进行评估。如果我们被指派评估那些不在我们自己之下的程序员,那么我们需要主动回答上述有关他们的问题,这可能很难。
我们无法删除评估测试。我知道有时候它会变得很乏味,但是我确实喜欢这样做,这对于我们正在评估的开发人员来说是无价的。我们需要成为一个关心开发人员工作方式的经理。我们直接反映了它们以及它们对影响。我总是要留给开发人员的一个问题是让他们对我进行评估。评估需要为两条车道。
我还必须评估一个千篇一律的问题列表,但是我总是添加上面的内容,并在我与开发人员一对一的过程中尝试使评估变得有趣和学习练习,这全都与我们正在审查的开发人员。