69

I understand that to measure a project or code, we can use The Joel Test, but is there any simple standard test (like The Joel Test) that is able to measure and filter how good a programmer is?

My plan is to have this test as a quick filter first before going to a more detail test.

Rudy
  • 1,109
  • 1
  • 8
  • 14
  • 2
    If there are tests like this that are being used, I think programmers should know about it. They may or may not be valid like: Hire the one with the most body modifications. – JeffO Feb 15 '12 at 14:39
  • 2
    Interesting, when I asked this question, it was downvoted to hell (now positive again, yay, and quickly closed). Is it really so different than this one? http://programmers.stackexchange.com/questions/133691/what-do-you-absolutely-have-to-know-about-a-candidate-before-hiring-him – ripper234 Feb 15 '12 at 15:43
  • 8
    @ripper234, reasons for a question being closed on SE are a bit like those unexplainable, intermittent software bugs - a mystery really. A bit like human nature really. – tehnyit Feb 15 '12 at 17:41
  • 8
    Joel himself provides a simple-yet-rigorous test: [Smart and Gets Things Done](http://www.joelonsoftware.com/articles/GuerrillaInterviewing3.html). :P – Dan J Feb 15 '12 at 20:27
  • [FizzBuzz!](http://www.codinghorror.com/blog/2007/02/why-cant-programmers-program.html) Surely! – CraigTP Feb 16 '12 at 10:56
  • Beard length is a good starting point. –  Oct 02 '14 at 01:47

7 Answers7

69

There is the programmer competency matrix.

As with the Joel test it's just a vague guide. The only way to properly assess a programmer is to ask good programmers who have worked with them.

gnat
  • 21,442
  • 29
  • 112
  • 288
Tom Squires
  • 17,695
  • 11
  • 67
  • 88
  • 28
    So the only problem left is to assess whether the guy's past/current teammates are good... Oops. – Péter Török Feb 15 '12 at 11:42
  • 21
    Yes, its is recursive :) – Tom Squires Feb 15 '12 at 11:50
  • 14
    That's nothing like the Joel test. Your answer points to a huge detailed matrix, Joel's test is a series of 12 very simple questions to answer. – Bryan Oakley Feb 15 '12 at 12:14
  • 2
    @BryanOakley - that's true, but the PCM is also the very first thing *I* thought of when reading the question. The upshot: there are no simple questions you can answer to measure a programmer! – Joris Timmermans Feb 15 '12 at 13:39
  • 2
    @BryanOakley point of matrix being more complex than series is well taken; to me closer analogy to Joel's test would be a series made of _Level 1_ column elements in [PCM](http://www.indiangeek.net/wp-content/uploads/Programmer%20competency%20matrix.htm) - "explain and use Arrays..., Basic sorting... etc" – gnat Feb 15 '12 at 14:51
  • I agree that programmer competency matrix is a good one, but it's too detail. Is there anything simpler to pre-filter good developer? My plan is do this kind of test first (filter phase 1) and later on ask "programmer competency matrix". – Rudy Feb 16 '12 at 03:39
  • I have a lot of work to do... – sholsinger Feb 21 '12 at 19:01
  • +1 on the PCM. The more senior the open position the more PCM applies. – Jim In Texas Apr 24 '12 at 21:59
25

I would turn the Joel test around:

Have they used source control?

Do they know how to automate a one step build?

...

The only one that doesn't seem particularly applicable is the have testers question. The others that seem kind of off turn in to a this is how we handle it how have you handled it in the past sort of questions(This is how we handle keeping our schedule up to date how have you handled scheduling in the past?).

edit:

Basically you don't get the stuff in the Joel test for free, you have to hire people who can make it happen. You want to establish their ability to make that happen.

stonemetal
  • 3,371
  • 16
  • 17
  • 1
    All of Joel's questions are more about the environment than the programmer. If my team doesn't use source code control, then my not integrating with them by using my own source code control is hardly an improvement. Getting the team to use source code control is an improvement. – Edwin Buck May 01 '12 at 22:37
15

The Joel Test is just an informal baseline check to quickly judge whether a place has good working conditions for programmers. Even if it scores a perfect 10, it can still be a hell-hole that is going to go bankrupt six months down the road. A low score is an indication of something not quite right, and makes for excellent interview questions ("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.

The Joel Test is not a 'standard' test either; it's just a checklist Joel Spolsky posted on his blog.

As far as 'measuring' the quality of a programmer goes; unfortunately, the really important skills and qualities of a good programmer are hard or impossible to quantify, so there is no replacement for thorough human evaluation. You can weed out the completely clueless candidates quite easily though, using a very simple programming task - ideally, something that involves recursion, tree structures or pointers (a programmer who doesn't 'get' these is unlikely to be of much use). For those who pass this test, you'll have to evaluate skills manually: read code they wrote, test drive applications they wrote, give them more programming tasks (both design and implementation), watch them work, talk to them, see if you can spark a professional discussion. If you're looking for a specialist / language guru, you might also want to ask a few knowledge questions, but for a general programming candidate I wouldn't bother.

tdammers
  • 52,406
  • 14
  • 106
  • 154
  • 1
    +1 Judging the skills of a good programmers is one task is hard to quantify. – Karthik Sreenivasan Feb 15 '12 at 11:41
  • 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.` You would be making mistake to accept the job by the way. Eventually every developer learns that `Plans to do so in the future` is just something that interviewers say to deceive you but that they never act on because of terrible management. How many times have we heard something to the effect of `Oh, we are moving towards Agile...` and it turns out to be yet another micromanaged waterfall shop? – maple_shaft Feb 15 '12 at 12:00
  • @maple_shaft: yeah, probably not a good example... – tdammers Feb 15 '12 at 14:46
  • 5
    A perfect 10 on the Joel test would actually be 12... just saying :) – MattDavey Feb 16 '12 at 09:36
  • 3
    @MattDavey: That critically depends on _your_ competencies to drive change. I had one of those experiences when I'd been in the business for two years (yeah we'll move to C++) and got the expected result. Nowadays, it would be a different matter. I _can_ figure out if it's a sincere wish but inability to change, and then make it possible. – MSalters Feb 16 '12 at 12:46
12

Yeah:

Do you program in your spare time?

In all my experience, this single question is most indicative of how good a programmer is. If they enjoy it; if they have passion for doing the task, then they're going to be good at it.

And frankly, a lot of 9 to 5 jobs don't involve a lot of coding. They don't involve a lot of iterating through the life-cycle of designing new programs and seeing how that design works/fails. Without that iteration, there's simply not the practice needed for programmers to gain core program design skills.

And they don't involve a lot of learning. Programmers who even simply hack on things at home are going to be exploring new and interesting solutions without the constraints of big business.

Telastyn
  • 108,850
  • 29
  • 239
  • 365
  • 2
    Why does this have only one vote? IMO this is the real distinction between mediocre teams and those that are truly innovative. – Jacobs Data Solutions Mar 05 '14 at 16:21
  • 1
    Or, maybe, just maybe, your programmers have families and kids, and while they work their asses off from 9–5, they're with their families for the rest of the day, recuperating, and raising the people that will pay your pension. And because they don't spend creative energy on side projects, and because of their experience and diligence, and because they have an actual life, and a grip on it, these programmers still run circles around the kids who stay up until 3am to write some indie game that's never gonna take off anyway. – sbi Sep 26 '21 at 14:15
1

It's not as detailed as the Joel Test, but asking them to write a fizz buzz program will be a good indication to see if they can code at all.

http://www.codinghorror.com/blog/2007/02/why-cant-programmers-program.html and http://imranontech.com/2007/01/24/using-fizzbuzz-to-find-developers-who-grok-coding/

That will not tell you about the software engineering maturity of the individual, but it will screen out the worse.

Vincent Hubert
  • 209
  • 1
  • 4
0

Eh, I have qualm with the wording at the start. It's not "have you used X" or "Do you know of Y", it's a matter of actually using and doing. Any programmer that hasn't touched or heard of the items on the Joel test is simply disconnected and needs to get a clue. But you're right, code-shops fail the Joel test because people in the shops let it fail. The only defense I can see runs along the lines of "I tried, but did not have the authority. And now I'm applying here".

Philip
  • 6,742
  • 27
  • 43
0

Do you use source control?

Yes, but

  • It doesn't really tell you anything.
  • How do you know whether I forward merge?
  • How do you know whether I pull changes before pushing?
  • How do you know whether I build before committing to repository.

Can you make a build in one step?

  • Yes, our CI lead writes scripts and I just run them in powershell.

Do you make daily builds?

  • Our CI server does

Do you have a bug database?

Yes, but I haven't configured it and I don't administer it, I simply use it.

Do you fix bugs before writing new code?

  • In a perfect world where I have unlimited resources - yes I do. In real world I'm sometimes forced to log them and work on something else.

Do you have an up-to-date schedule?

Nope, that's not my job.

Do you have a spec?

I get given a spec, I then analyse it and produce relevant documents.

Do programmers have quiet working conditions?

  • Will you not hire me if I listen to music, talk to my colleague and make a joke? Software development supposed to be creative - working conditions will vary from one organisation to another.

Do you use the best tools money can buy?

You don't know what the best tools are and if you think that you do, there will always be someone to argue your point.

Do you have testers?

Yes. Actually, yes and they are not very good, but that wasn't in the question.

Do new candidates write code during their interview?

Yes and they fail. Yes and they pass. What does this tell you?

Do you do hallway usability testing?

No, but what if we do something better?

To conclude:

  • This test might work well in a perfect academic world where everything just works, everybody gets along, shares knowledge and there are unlimited resources.
  • What you want to know is what kind of engineer I am. Simple bitwise answers won't tell you anything useful and I think that somebody has to be very naive to fall for them.
  • Answers above, both negative and positive don't tell you anything about my ability to produce clean code.

This is not a rant, but I would be very interested to hear what kind of developer you think I am based on the answers that I have provided. This will hopefully prove my point.

CodeART
  • 3,992
  • 1
  • 20
  • 23
  • 8
    I don't really get the point of this. These questions are about the team/company, not the individual programmer. And the OP didn't suggest using the same questions to asses the programmer, he just wants a set of simple questions. – CodesInChaos Apr 24 '12 at 21:18
  • 1
    I think that I am as good as my team is, or the company that we work for. In my opinion tests like this make a lot of fuss, but they don't really tell you anything useful about the company or the developer. – CodeART Apr 24 '12 at 21:20
  • 3
    `How do you know whether I pull changes before pushing?` Well, I don't know what source control you're using, but in SVN at least, if you try to commit to a folder with changes that you don't have yet, the commit will fail until you run Update. – Mason Wheeler May 01 '12 at 21:31
  • We are using TFS :) I really need to get my hands on other version control systems. – CodeART May 01 '12 at 21:36
  • Soooo people actually do use TFS. I learnt something. – Fabinout Jan 20 '14 at 16:21