On the techPortal site Ian Barber has posted a new article looking at debugging - not just in the usual technical sense, but also in the environmental and thought process problems that can come up.

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.

He has the article broken up into his four categories - mechanical errors, mental errors, social errors and environmental errors. Each section contains a few things that can help thwart those sorts of problems including tools like PHPUnit for unit testing, PHPDoc for documenting your source and things more on the environmental/social side like seige for load testing or a Sun VirtualBox to test multiple environments.