Better Debugging: Conversations with Duckie
Learning to Strategize & Plan with Help from an Inanimate Friend
Ever wondered what the best sounding board for a debugging plan might be? If you could describe the ideal listener, which qualities come to mind?
A wish list might include patient, calm, totally uncritical and not rushing off to the next fire that needs putting out. Hard to find someone who fits the bill, am I right? Well, terrible puns aside, our team has recently discovered someone who does fit the "bill" — as in duckbill.
Meet Duckie, the most receptive audience any programmer could ever hope to meet.
Tell him your problems, and he will hear you out with utmost patience. Take your time, he won’t go anywhere.
The thinking here goes that if you can vocalize a plan and lay it out in a logical fashion, it will reflect in the code.
Make a Plan & Stick To It
This approach may seem whimsical at best and borderline crazy at worst. But the principle at work here dictates that, in order to explain your thinking to an inanimate object, you must work out the trouble spots in your planning and create a concise plan that makes sense…even to a rubber bath toy.
Computer science is an academic discipline and in an academic environment, there will be textbooks, lesson plans and demos that make the subject matter more accessible. But what about practicing CS in a real-world environment outside the classroom?
The academic support structure doesn't always translate into the real world environment. For example, if a student is running into a thorny problem with an assignment they can consult an instructor, search for answers in a textbook or use the ol’ standby, Google.
A job in the real world of web development has a whole bevy of other demands such as balancing client expectations, budget restrictions, inter-office politics, etc.. So what does a programmer do when they run into an issue? Well, there’s still Google of course.
Wasting time Googling the answer might not be an option though. Why not talk to an actual person about it? OK, so you try a manager or a colleague. Your team’s time isn’t always easy to reserve, though. After all, not every organization builds "office hours" into their calendars. So if a programmer needs a receptive ear to plan out a difficult bit of code debugging, to whom can they turn?
Enter our friend, Duckie.
Some Practical Advice
If no rubber duck is in sight, several of our team members have had success planning or strategizing with a living person — and it doesn’t need to be someone who’s 100 percent familiar with the problem at hand. Hashing out a plan with a non-technical or impartial audience can also help highlight trouble spots ahead of time and move the approach forward in an efficient manner.
Take the advice of one of our Support managers, Amy:
"I used to do something like that at a previous job, but with non-technical coworkers instead of rubber ducks. It really is helpful to talk it out even if the person — or bath toy — you're talking to doesn't have the answer."
Or try the approach tested by one of our developers, Ranny:
"I have the same scenario, wherein I usually talked to my six year old brother with my coding problems and he was, like, totally baffled by it."
Aside from confusing his younger brother, thinking out loud seemed to do the trick for Ranny.
Solutions Architect Allan Chappell also favors discussion with an actual person. Talking with someone, “even if they aren’t in your profession,” Allan says, “looks a lot less crazy than a rubber duck!"
Whatever floats your boat, whether it’s arriving at the answer via peer review or practicing your approach in front of an object, concrete planning can help overcome roadblocks for even the thorniest issues.
Want to learn more open source development tips from Promet? Subscribe and stay in the loop.