These days debugging is an necessary life skill. Anything high tech has more ways of failing than running. Since failure hides in complexity, you need to be systematic to fix a break in a system. But debugging skills are not taught anywhere.

This book teaches you how to troubleshoot. It is meant for engineers debugging computer programs, but the principles of debugging can easily be applied to any engineered system — your car, home plumbing, a new gizmo, old laptop, hi-fi system, or anything with many dynamic parts.

The book is easy, with lots of war stories. I learned a lot. Lately I’ve become the defacto system administrator for the network of seven computers in our household, and these principles have upped my success rate in clearing up the inevitable problems.

What you get: essential technological literacy.

-- KK  

Debugging: The Nine Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems
David J. Agans
2002, 192 pages

Available from Amazon

The basic rules can be found here

Sample Excerpts:

The Rules – Suitable for Framing
Understand the system
Make it fail
Quit thinking and look
Divide and conquer
Change one thing at a time
Keep an audit trail
Check the plug
Get a fresh view
If you didn’t fix it, it ain’t fixed

Change One Thing at a Time
On nuclear-powered subs, there’s a brass bar in front of the control panel for the power plant. When status alarms begin to go off, the engineers are trained to grab the brass bar with both hands and hold on until they’ve looked at all the dials and indicators, and understand exactly what’s going on in the system. What this does is help them overcome the temptation to start “fixing” things, throwing switches and opening valves. These quick fixes confuse the automatic recovery systems, bury the original fault beneath an onslaught of new conditions, and may cause a real, major disasters. It’s more effective to remember to do something (“Grab the bar!”) than to remember not to do something (“Don’t touch that dial!”) So, grab the bar!

arrow See another excerpt