Debugging Development March 16, 2009
Programming, as much as it is about machines, is conducted by humans, and is as susceptible to human error as any process. These bugs can be frustrating, particularly when found by a client, but they can give an insight into underlying problems, and sometime suggest solutions – or at least ways of catching errors early. This article looks at four different classes of bugs: mechanical, mental, social and environmental, their causes, and some preventative steps.
Before discussing these, it is worth noting a couple of points. Bugs and errors are problems where the result is not what the programmer had intended – where if you asked the developer whether they expected X to happen, they would say no. This is quite different from the, equally common, problem of the functionality not being what the client desired, or missing some unspoken assumption – in both those cases the wrong thing was built right, rather than the right thing being built wrong.
It’s also worth mentioning that bugs will be much more likely if a programmer is tired, hungry, unmotivated, distracted, or stressed, either from the project or in their personal life. These problems don’t have a technical solution, but addressing them might yield better dividends than all the rest of the techniques put together.
(more…)