4 Steps for Handling High-Pressure Bugs
I wrote about the strategy I use when dealing with high-pressure bugs in code.
When was the last time you heard that little voice in your head suggesting something might be amiss in your web app? 🤔 You know that nauseous feeling that forms in the pit of your stomach, when you realize something bad has or is happening?
The Difference Between Making it Work and Doing it Right
For years my dad reminded me that if I took one of the tools from his workbench it was critical I returned it. Through my grade school years, I was notorious for taking a wrench or socket from dad's toolbox, using it to fix my bicycle, and leaving them strewn across the garage floor as I rode off with my buddies. It wasn't until I became a father, and watched my son exhibit the same behavior, that I realized why he was so insistent on me returning the tools.
Why did it matter so much to him, and now to me?
It mattered because even though I addressed my immediate problem, straightening the handlebars on my bike, I had inadvertently created a new problem for someone else. A sneaky one that would avoid detection until the next person needed the 3/4" spanner to fix something else, or I needed to fix my bike again. By not putting the tool back where it belonged, I hadn't finished the job. And an unfinished job is not a job done right.
The X-Factor: Or, How To Debug
Have you ever been around a person, or maybe you are that individual, who has the innate ability to figure out what’s wrong with _____? Merely glancing at the computer that is behaving strangely causes the problem to disappear, touching the printer results in printed pages, or opening the hood of the car stops the squealing?
It’s a strange phenomenon, but certain people possess the ability to diagnose a situation, survey the playing field, and effectively implement a solution. I’m sure you’ve seen it happen before.
Truth be told, I don’t believe these people have any special magic. It is far more likely they’ve spent time honing their ability to observe what’s going on, consider possible courses of action, and choose the one that has the best probability of fixing the problem.
This is called troubleshooting.
Programming for your Future Self
If you are anything like me, you may find yourself hacking on a variety of different applications during a given week. Occasionally I get the luxury of working on a single app, which gives my brain the freedom to immerse itself into the details of the program. However, inevitably at some point I have to set the project aside and fire up a different one… perhaps one that was written months, or even years ago.
Several thoughts have repeatedly surfaced as I re-familiarize myself with an old project. Instead of having to collect them each time, I thought I’d write them down here, to serve as a reminder.