Debugging is the single most important skill in programming, if not in life. Debugging, like most worthwhile pursuits, is a learned art, but I’ve rarely seen it taught. This section is aimed at those who have never debugged, at least not successfully, and probably don’t know how to use the Lingo Debugger.
The title of the well-known book, Zen and the Art of Motorcycle Maintenance, was taken from a book on Zen archery. A Zen archer holds his bow awkwardly over his head so that it is clearly impossible to “sight” the target. Instead, he attempts to “become one” with the target; he seeks not to act, but only to confirm what already is. He does not aim and shoot, but rather recognizes that the arrow has already been released, has already flown toward its target, and has already made a bull’s-eye. If you watched the 1998 Winter Olympics from Nagano you could pick out the athletes that knew they would win before the competition began. Almost invariably they were right. The competition itself was merely a confirmation of that which they had already envisioned from an early age. And so it is with programming and debugging.
To debug is to recognize that the problem has already been solved; you simply unearth the solution as one would unearth a diamond. Before it is possible to debug a problem, you must convince yourself that it is possible to debug the problem.
There are many paradoxes in programming and debugging. You must be confident that you can solve a problem ...