I am not a good programmer. I have taken many programming courses and done well enough, but outside of coursework I have an extremely hard time programming anything beyond simple scripts and modifying other people’s code. I understand the concepts but I think because I neglect any practice of it I have a very hard time with it every time I try to pick it back up. With that said, debugging is even harder.
There is a programming technique that a few years ago was the toast of IT- XP, also known as eXtreme Programming. Though I am obviously not fluent in XP myself, one facet of XP that became quite popular and seems in retrospect beyond obvious is the practice of “team” programming, where two coders sit down and work on the program together. Having a second brain on hand to help brainstorm your way through problems certainly doesn’t apply only to programming, but its use in programming is really kind of revolutionary. If you’ve ever stared at code for hours on end, only to have a friend point out you missed a semicolon somewhere, you know how useful this can be. One person codes, the other watches, offers thoughts, thinks about what they’re seeing. A big problem in debugging as I see it is that you are simply too close to the code to see the errors. Another being that people can’t read more than a few lines of code and truly understand what its doing, so error checking by another person later on is as much a matter of trial-and-error, as it is for you, if not more so. Even with good comments!
In a lot of ways, conversation is the same way. I’m often startled by the things I find myself thinking when I converse with people, simply because the act of conversation has caused me to think and react in ways I wouldn’t have had I not entered the discussion.
Of course, it may not work for everyone, but I’ve found it quite useful. Peace.