The Joy of Debugging (or: Finding Out How Things Don’t Work)
Writing, whether it’s natural language or a programming language, is hard. Typos, misused and misspelled words, mangled syntax, a lack of clarity: debugging computer code, like proofreading and editing a natural language narrative, is the art of removing– or at least smoothing– these issues. But as your programs become more complex and start talking to other programs over a network, debugging evolves into a journey of discovery through a system of interconnected programs and resources.
A relentless, plodding mediocrity1 has a significant advantage over a lazy “genius” when it comes to debugging. Tenacity, curiosity, a comfort in knowing that things happen for a reason in the computer world, and a willingness to methodically follow the bug through a system are the virtues that make one good at debugging.
It’s the plodding and following that make debugging a daunting though
Continue reading →