Fluency Milestones XII “To Err is Human–An Introduction to Debugging”

Snyder Chapter 7   An Introduction to Debugging

I had absolutely no idea what the process of debugging was before I read this chapter. As I learned, debugging is the method of figuring out why a process or system doesn’t work properly.  Debugging is usually applied to a computer or communications system, but they techniques are the same whether the systems are business, mechanical, etc.   I learned that debugging normally relies on logical reasoning, but there are certain principles and strategies that should be used for debugging.  There is debugging every day life, which is just  basically troubleshooting everyday problems and trying to come up with effective solutions.  

The next strategy to debug that I learned about was debugging in IT, which is obviously important since that is the focal point of our class.  Debugging an IT system is different, because wrong data or  wrong configuration might have been entered incorrectly.  This is easy to fix and  if corrected, the system should work again. Of course, there is another possibility  and this is a logical design error.  In IT  terms, this means an error in software that may or may not be known.   In software such logical errors are possible and users have to be aware that they may not be using a correct working system.   Along with this principle in debugging, I learned we can use the computer to debug.  This is not easy, because some of the errors are internal to the computer and we have to know how to get there to fix the problem.    The best way to find out the problem is to bypass the error with an alternative approach called a workaround.   These are essential especially with commercial software. Bugs in commercial software are usually not fixed until the updated version is released, so that is why a workaround is needed.

 This  was interesting and I learned a great deal about debugging.  The recap of debugging was useful and helped to provide some salient points for future reference.   Snyder makes a few key points that are helpful.  When debugging, it is important to make sure you can reproduce the error and determine what the problem is.  Along with this, it is important to eliminate the obvious causes and divide the process by separating out parts that work from the part that doesn’t.  Finally, Snyder suggests when reaching a dead end, we should reassess information, ask where we might be making wrong assumptions or conclusions then step through the process again. While doing this, we should make predictions about what should happen and verify that predictions will be fulfilled.  Overall, this was a helpful chapter and now I know more about debugging.


About this entry