乔尔测试的等效性,用于评估程序员


70

我知道要衡量项目或代码,我们可以使用Joel测试,但是是否有任何简单的标准测试(例如Joel测试)能够衡量和过滤程序员的水平?

我的计划是在进行更详细的测试之前,首先将该测试作为快速筛选。


2
如果有正在使用的此类测试,我认为程序员应该对此有所了解。它们可能有效,也可能无效,例如:雇用身体修饰最多的人。
JeffO

2
有趣的是,当我问这个问题时,它被否决了(现在又是积极的,是的,很快就关闭了)。真的和这个有很大不同吗?programmers.stackexchange.com/questions/133691/...
ripper234

8
@ ripper234,在SE上关闭问题的原因有点像那些无法解释的,间歇性的软件错误-确实是一个谜。确实有点像人性。
tehnyit'2

8
Joel本人提供了一个简单而严格的测试:Smart and Gets Things Done。:P
Dan J

Answers:


67

程序员能力矩阵

与Joel测试一样,它只是一个模糊的指南。正确评估程序员的唯一方法是询问与他们合作过的优秀程序员。


27
因此,剩下的唯一问题是评估此人的过去/现在的队友是否很好……糟糕。
彼得Török

21
是的,它是递归的:)
Tom Squires 2012年

13
就像乔尔测试一样。您的答案指向一个巨大的详细矩阵,Joel的测试是由12个非常简单的问题组成的系列。
布莱恩·奥克利

2
@BryanOakley-是的,但是PCM也是在阅读问题时想到的第一件事。结果:没有简单的问题可以衡量程序员!
Joris Timmermans '02

2
矩阵的@BryanOakley点比级数更复杂;在我看来,更类似于乔尔(Joel)的测试的是由PCM中的1级列元素组成的系列-“解释和使用数组...,基本排序...等等”
gnat 2012年

25

我将扭转乔尔测试:

他们有使用源代码控制吗?

他们知道如何自动化一步构建吗?

...

似乎不是特别适用的唯一一个问题是测试人员问题。其他似乎无法解决的问题变成了这是我们如何处理它,您在过去的问题中是如何处理的(这是我们如何使我们的日程安排保持最新状态,您过去如何处理日程安排?) 。

编辑:

基本上,您无法免费获得Joel考试中的内容,您必须雇用可以实现这一目标的人员。您想建立他们实现这一目标的能力。


1
Joel的所有问题都比程序员更关心环境。如果我的团队不使用源代码控制,那么我不通过使用自己的源代码控制与它们集成就很难改善。使团队使用源代码控制是一项改进。
Edwin Buck

15

Joel测试只是一个非正式的基线检查,可以快速判断某个地方是否对程序员具有良好的工作条件。即使它获得完美的10分,它仍然会是一个地狱,将在六个月后破产。较低的分数表明存在某些不正确的情况,并引起了很好的面试问题(“您目前没有使用源代码控制;将来有任何计划这样做吗?”),答案可能是这样的:尽管Joel得分低,您还是会接受这份工作的。

乔尔测试也不是“标准”测试。这只是Joel Spolsky在他的博客上发布的清单。

就“衡量”程序员的素质而言;不幸的是,一个优秀的程序员真正重要的技能和素质很难或不可能量化,因此无法进行全面的人工评估。不过,您可以使用非常简单的编程任务很容易地淘汰掉完全毫无头绪的候选人-理想情况下,涉及递归,树形结构或指针的事情(不'了解'这些东西的程序员不太可能会有用)。对于那些通过此测试的人,您必须手动评估技能:阅读他们编写的代码,测试他们编写的驱动器应用程序,为他们提供更多的编程任务(包括设计和实现),观看它们的工作,与他们交谈,看看是否可以引发专业讨论。如果您正在寻找专家/语言专家,


1
+1判断一个好的程序员的技能是一项任务,很难量化。
Karthik Sreenivasan '02

20
("You're not currently using source control; are there any plans to do so in the future?"), and the answers might be such that you'd accept the job despite a low Joel score. 顺便说一句,您接受工作会出错。最终,每个开发人员都知道,这Plans to do so in the future只是面试官说的欺骗您的内容,但由于糟糕的管理他们从未采取任何行动。我们听到过多少次影响力的声音,结果Oh, we are moving towards Agile...又变成了另一家由微管理的瀑布商店?
maple_shaft

@maple_shaft:是的,可能不是一个很好的例子……
tdammers 2012年

5
乔尔测试中的满分10实际上是12 ...只是说:)
MattDavey

3
@MattDavey:这在很大程度上取决于推动变革能力。我从事该行业两年了(是的,我们将转向C ++),并且获得了预期的结果。如今,这将是另一回事。我可以弄清楚这是否是真诚的愿望,但是无法更改,然后才有可能。
MSalters

12

是的:

您是否在业余时间编程?

根据我的经验,这个问题最能说明程序员的水平。如果他们喜欢的话;如果他们有完成任务的热情,那么他们会很擅长。

坦白说,很多9到5个工作不需要很多编码。在设计新程序和查看设计如何工作/失败的整个生命周期中,它们并不涉及很多迭代。没有迭代,程序员根本就不需要实践即可获得核心程序设计技能。

而且它们不需要太多的学习。甚至只是简单地在家中编程的程序员,都将在没有大企业约束的情况下探索新的有趣的解决方案。


2
为什么这只有一票?IMO这是平庸的团队和真正具有创新能力的团队之间的真正区别。
Repo Man 2014年


0

嗯,我一开始对措辞感到不满。不是“您曾经使用过X”还是“您知道Y”,而是实际使用和执行操作的问题。任何没有触及或听过Joel测试中项目的程序员都将被断开连接,并且需要获得线索。但是您是对的,代码商店未通过Joel测试,因为商店中的人让它失败了。我能看到的唯一辩护遵循“我尝试过,但没有权限。现在我在这里申请”。


0

您是否使用源代码管理?

对,但是

  • 它并没有真正告诉您任何信息。
  • 你怎么知道我是否向前合并?
  • 您怎么知道我是否在推挤之前先拉零钱?
  • 您如何知道在提交存储库之前是否进行构建。

您可以一步一步构建吗?

  • 是的,我们的CI主管编写脚本,而我只是在powershell中运行它们。

您每天制作吗?

  • 我们的CI服务器可以

您有错误数据库吗?

是的,但是我没有配置它,也没有管理它,我只是使用它。

您在编写新代码之前会修复错误吗?

  • 在我拥有无限资源的完美世界中-是的。在现实世界中,有时我不得不记录它们并进行其他工作。

您有最新的时间表吗?

不,那不是我的工作。

你有规格吗?

我得到一个规格,然后对其进行分析并生成相关文档。

程序员有安静的工作条件吗?

  • 如果我听音乐,与同事交谈并开个玩笑,您会雇用我吗?软件开发应该具有创造力-每个组织的工作条件会有所不同。

您是否使用金钱可以买到的最好的工具?

您不知道最好的工具是什么,如果您认为这样做的话,总会有人争辩您的观点。

你有测试员吗?

是。实际上,是的,它们不是很好,但这不是问题所在。

新候选人在面试中会写代码吗?

是的,他们失败了。是的,他们通过了。这告诉你什么?

您是否进行走廊可用性测试?

不,但是如果我们做得更好呢?

结论:

  • 该测试可能在一个完美的学术世界中运作良好,在这个世界中一切正常,每个人都相处,分享知识,并且资源无限。
  • 您想知道的是我是什么样的工程师。简单的按位答案不会告诉您任何有用的信息,我认为有人必须天真地喜欢上它们。
  • 上面的答案,无论是肯定的还是否定的,都没有告诉我我产生清晰代码的能力。

这不是花一现,但根据我提供的答案,我很想听听您认为我是哪种开发人员。希望这将证明我的观点。


8
我真的不明白这一点。这些问题是关于团队/公司的,而不是关于单个程序员的。OP并没有建议使用相同的问题来评估程序员,他只是想要一组简单的问题。
CodesInChaos

1
我认为我和我的团队或我们工作的公司一样出色。在我看来,这样的测试大惊小怪,但它们并没有真正告诉您有关公司或开发人员的任何有用信息。
CodeART 2012年

3
How do you know whether I pull changes before pushing? 好吧,我不知道您在使用什么源代码控制,但是至少在SVN中,如果您尝试使用尚未进行的更改提交到文件夹,则提交操作将失败,直到您运行Update。
梅森惠勒

我们正在使用TFS :)我真的需要动手使用其他版本控制系统。
CodeART

Soooo人们实际上确实使用了TFS。我学到了一些东西。
Fabinout 2014年
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.