Eric S. Raymond Identifies A Common Programming Trap: ‘Shtoopid’ Problems
See the original posting on Slashdot
“There is a kind of programming trap I occasionally fall into that is so damn irritating that it needs a name,” writes Eric S. Raymond, in a new blog post:
The task is easy to specify and apparently easy to write tests for. The code can be instrumented so that you can see exactly what is going on during every run. You think you have a complete grasp on the theory. It’s the kind of thing you think you’re normally good at, and ought to be able to polish off in 20 LOC and 45 minutes.
And yet, success eludes you for an insanely long time. Edge cases spring up out of nowhere to mug you. Every fix you try drags you further off into the weeds. You stare at dumps from the instrumentation until you’re dizzy and numb, and no enlightenment occurs. Even as you are bashing your head against a wall of incomprehension, consciousness grows that when you find the solution, it will be damningly simple and you will feel utterly moronic, like you should have gotten there days ago.
Welcome to programmer hell. This is your shtoopid problem…. If you ever find yourself staring at your instrumentation results and thinking “It…can’t…possibly…be…doing…that”, welcome to shtoopidland. Here’s your mallet, have fun pounding your own head. (Cue cartoon sound effects.)
Raymond’s latest experience in shtoopidland came while working on a Python-translating tool, and left him analyzing why there’s some programming conundrums that repel solutions. “You’re not defeated by what you don’t know so much as by what you think you do know,” he concludes. So how do you escape?
“[I]nstrument everything. I mean EVERYTHING, especially the places where you think you are sure what is going on. Your assumptions are your enemy; printf-equivalents are your friend. If you track every state change in the your code down to a sufficient level of detail, you will eventually have that forehead-slapping moment of why didn’t-I-see-this-sooner that is the terminal characteristic of a shtoopid problem.”
Share your own stories in the comments. Are there any programmers on Slashdot who’ve experienced their own shtoopid problems?
Read more of this story at Slashdot.