[lug] Basic Troubleshooting Skills
Rob Nagler
nagler at bivio.biz
Tue Sep 21 19:50:52 MDT 2010
A friend pointed me to a form of logic called Abductive Reasoning
http://en.wikipedia.org/wiki/Abductive_reasoning It's the type of the
reasoning you are doing when you debug (or write tests). One of the
things my friend and I observed is that it is very difficult to teach
this form of logic: inventing an explanatory hypothesis.
John Dollison wrote:
> 6) Sometimes you just have to guess!
Guessing implies you have an explanatory hypothesis which is a
possible explanation. If you don't have the experience with the
technology, guessing is pointless. John's experience (taking apart
turbochargers, camera lenses, debugging software, etc.) is something
that lets him create pretty good hypotheses around many kinds of
technology. That experience plus (I suspect) decades of trying
different hypotheses is what allows him to "guess". What would
happen, say, if John were thrown into the jungle with the clothes on
his back. How would John debug that situation? (I'm assuming John
wasn't a Navy Seal. :-)
I think one rule that's pretty important is how you convert
experiences into skill. When you try a bunch of hypotheses, why
didn't they work out? What assumptions did you make which you
shouldn't have? What tools were useful in creating the correct
hypothesis? These questions often go unasked after a bug is fixed.
And, what's worse, sometimes people "guess" incorrectly, but the
problem goes away due to an external factor (time passing) or possibly
by introducing a new defect which masks the original failure.
Rob
More information about the LUG
mailing list