Tomorrow, I will start my second year at my current employer. The company is fairly small, when I started there were two developers and the managing director. Effectively it was just the two of us though. Additionally, the managing director actually has a technical background, and trusts our judgment. This left us with a lot of room to make our own decisions on what’s important. There’s around 6 of us now, and things are going nice and steady.
As one of my responsibilities I’ve decided on making the whole development process as painless as possible. I could of course try to think of all sorts of things to do myself, but luckily, there’s already a pretty good list out there already. Joel Spolsky, one of the people behind Stack Overflow (the Q&A site for and by software developers) wrote an article about this back in August 2000. Ages ago in software development terms. However, the list is still valid, and my aim was going to be to meet as many of the requirements I could.
- 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?
The Joel Test has 12 requirements. According to Joel, a proper software development team should score at least a 10 out of 12. Being a startup company, it’s probably expected that you wouldn’t be there right away. Additionally, doing mainly green-field development, some of these are not directly applicable. However, with some creativity it’s quite possible to find a solution for each one.
For completeness sake, here’s the scoring before we started working on it:
Do you use source control?
Yes. We have a subversion server up and running, and we use it actively.
Can you make build in one step?
Do you make daily builds?
Do you have a bug database?
Yes. We use Mantis for that, and keep it as up-to-date as possible.
Do you fix bugs before writing new code?
No. Not by rule.
Do you have an up-to-date schedule?
No. We only have the main project deadlines to go by.
Do you have a spec?
No. We just wing it.
Do programmers have quiet working conditions?
No. We share an office with a consulting company. Lots of phone calls.
Do you use the best tools money can buy?
Yes. As far as money allows.
Do you have testers?
No. We test our code ourselves.
Do new candidates write code during their interview?
Yes. Or at least show code from pet projects and explain it.
Do you do hallway usability testing?
No. We simply don’t have people to do that between the two of us.
Adding everything up this gives us an appalling 4 out of 12. Plenty of room for improvement I’d say!
For my next posts I will explain how we’ve gone from a 4 out of 12 to somewhere between 8 and 10 out of 12.