A few years ago, during my quest to lose weight, I started using blenders to make a morning protein shake. I didn’t know a lot about blenders, so I picked a target special. The blender worked well at first, and until I started it using daily, I never had any problems with it. But boy did that change. First, blending ice in a blender is hard to get right when making a smoothie: If you blend too much ice, you risk the blender slowing down to a crawl and overheating. Second, a target blender doesn’t blend all the ice uniformly, and not everything sinks back to the bottom, causing uneven blends. Third, since the base of the blender is so small, there’s no circulating motion, so the entire blending process is filled with shaking and repositioning the blender.
I’ve written a few times about the Joel Test. Most of the time it’s lamenting how businesses don’t score well on the Joel test. Other times, it’s extending the Joel test with my own requirements as a programmer. I’ve never stressed how vitally important the Joel test is. So important, that parts of it shouldn’t even be optional. They should be Sina qua non, those essential elements that make programming, programming. The other parts can be forgotten — at first, but if you ever want your business to be truly ‘best of breed’ (whatever that means), then you’re going to need to all 12.
Source Control: This is essential. It doesn’t matter if you have 1 programmer who is little more than a college student in a basement. Get him source control, immediately. Source Control is the programmer’s version of backing up important documents. As a business person, most of your business plan is in your head. Imagine if every part of your business existed only on paper, and that paper was stored in your house. Now also imagine that you have a 13% chance of losing your house to a fire this year. Wouldn’t you want those documents backed up? Get Subversion. It’s free. Once you get used to having source control, then we can start fighting about which one to use.
Bug Database: You have to have somewhere to record the issues you’re having with the software. I’m a pretty smart guy, but I can’t remember what I did last week. Now, ask me to remember the 300 things that need done over the next year? Forget about it. Write it down. It doesn’t matter if it’s an excel spreadsheet or a free copy of Bugzilla. Write it down.
Best Tools Money Can Buy: Simply put: Do you invest in your programmers? You invest in your product every year. Your profit goes directly to making the product better. If I told you that by investing in your programmers you could increase the quality of your product, would you believe me? It’s true. You never hear of a great programmer working at a mediocre company. What do you think draws a great programmer to your company? It’s your investment in him, stupid.
Essential Tools for a programmer:
Do you have a spec? & Do you have a Schedule?: Do you have a roadmap where you want your business to be in 5 years? You probably do. If not, you at least have a roadmap for this year. If you’re reading this, then clearly you have some sort of software solution in mind. So why the hell don’t you have a roadmap for your software? Does that Roadmap tell you what needs to be done? A specification isn’t just a plan for a feature; it’s a plan for your software. Before you can build the feature, you need to know what your software is going to do. And programmers, being the anal retentive beings we are, are going to develop according to that spec. If we don’t know what you want us to build, we can’t build it.
Do you have testers? I don’t care if it’s your ex-roommate’s girlfriend. Someone other than the programmers needs to put that software through its paces before it goes out to your customer. It’s a dirty little secret, but we suck at testing our own software. The software I write passes my tests every time, making me the worst judge of its abilities.
Sina Qua Non is a latin term that means literally, “Without Which Not”, necessary preconditions for something to exist. Without those five things, it isn’t programming; it’s an accident waiting to happen.
@LizardBill states: Totally agree. I’d rather sit in a cube with source control than an office without it.
Programmers.stackexchange.com has a question on the subject, “What is the bare minimum on the Joel Test?”, to which my answer is… well, you know my answer.