I love the Joel Test. Really, I do. I wish it were stamped on the insides of the eyelids of any person with technical talent looking for a job.
BUT – and of course a BUT was coming – I will never encourage my teams to score more than 9. And deliberately so. For the record, and to save you having to switch between pages, here are Joel’s 12 questions:
- Do you use source control?
- Can you make a build in one step?
- Do you make daily builds?
- Do you have a bug database?
- Do you fix bugs before writing new code?
- Do you have an up-to-date schedule?
- Do you have a spec?
- Do programmers have quiet working conditions?
- Do you use the best tools money can buy?
- Do you have testers?
- Do new candidates write code during their interview?
- Do you do hallway usability testing?
Here are my answers:
1-5 Yes. Of course.
6. DEPENDS. If you mean an enormous GANTT chart written on wallpaper which demands a team of people whose sole purpose in life is to swim against the tide of inaccuracy, incompleteness and pointlessness, then the answer is a resounding NO. If you will accept an iteration board, a rough release plan stretching out a couple of months, all of which is written on sticky notes and pinned to the wall and completely subject to change, then YES. I think I score 0.5
7. I was going to say “depends” again, but my real answer is NO. We do not have specs in any way that an ordinary person might interpret the word. A “spec” (shot for specification) is a detailed document running to many pages which completely defines how a feature looks and behaves. It is a contract between the person defining the requirement and the person delivering it. We do not have these contracts. For a start it implies that all the work of understanding and design will be complete prior to work starting. It also presumes that we really know what the feature should be in advance and that the fungible developer will be able to interpret the words in the spec perfectly and implement both the letter and the spirit of the intent. This never happens and with the benefit of 20-something years of software development it feels naive. Not to mention it is in direct contradiction of the Agile Manifesto.
8. NO. Programmers sit together round tables and are encouraged to talk, debate, call across to other people to help, gather in groups round whiteboards, converse, interact, stand up, sit down, cuddle, sing uproariously and generally be social humans engaged in a common task. If they are silent and concentrating on work on their own, then they are not pairing and our Agile processes are breaking down and the code will suffer. I say NO to silence. On the rare occasions where someone has a solo task to perform (research spikes are an example) which will require dedicated concentration for a period of time I will encourage (and facilitate) them to go and find a space which suits that.
10. It’s another “depends”. There are testers, and there are testers. If you are doing TDD, then isn’t everyone a “tester”? If you are aiming for 100% functional and integration coverage using an automated tool, then don’t you need Quality Engineers rather than testers? Isn’t there every bit as much discipline in writing the tests as there is in writing the code? We think there is and we religiously chant the TDD mantra, so in the same way that you won’t find “specs” in our world, your won’t find “testers” either. Yes, we have people whose sole job is quality and we take it very seriously, but I don’t think they would call themselves testers. I think I score a 0.5 here too.
11. Yes. Of course. In fact we have taken it one step further and give people coding challenges to complete between interviews and we review the code together collaboratively when they are done. For more on this see my blog and RedCanary.
So, I still love the Joel Test, but the worst, most prescribed waterfall places to work as a developer could score 12, and great creative software shops who do interesting valuable work in a collaborative and genuinely Agile way will rarely get full marks.
We’re the latter, not the former, so I stand proudly by my 9.