Tuesday, May 6, 2008

The Only Process You'll Ever Need

Scrum, CMM-I, ITIL and countless others. It seems that for every developer, there are half a dozen software development methodologies and processes. Some are lightweight, some are heavyweight and some are stupid-weight, producing orders of magnitude more documentation than code.

So, you may be wondering, why are there so many different processes? The answer is that everyone's looking for that one, magical process that'll make software development predictable and repeatable. Unfortunately, I don't have that magical process to give you, in fact, I seriously doubt that it even exists. What I do have for you however is a process without which your development efforts are guaranteed to fail. The process that I have for you is a very strict process, far more strict, in fact, than most heavyweight processes, but it requires no more documentation than your handwritten notes to yourself.

I won't keep you in suspense anymore. This super-process is none other than the scientific method. In case you're not familiar with the scientific method, here are the highlights.
  1. Consider the problem
  2. Gather data
  3. Formulate a hypothesis (an educated guess about how to solve the problem)
  4. Test your hypothesis
  5. Use the information from testing your hypothesis to accept, reject, or refine the hypothesis
The scientific method is useful at all stages of software development, but it is particularly useful when debugging, which is frequently the most difficult part of development. Before fixing a bug, any bug, take some time to apply the scientific method. Think about the bug and what the implications of it are. Don't jump straight into the fix, spend some time to make sure your fix will really fix the problem and not just mask the symptoms. Figure out how you'll test that your fix actually works without breaking anything else, and then test the fix. If it works, commit the fix and do the dance of joy!

Good luck and enjoy your coding!

No comments: