Anyone involved with development, support – heck even usage – of software knows that there are always little “gotchas” that you learn to avoid. We should eject thumb drives before removing them. Don’t delete your System or Windows directory. Or the dreaded “Saving… Don’t power off your console” message.
Some of these make sense or are pretty obvious. Also, there’s only so much you can do to prevent a user from shooting themselves in the foot. It is not feasible – at least from a cost/benefit standpoint – to design a game console that is capable of gracefully recovering your save if kill the power mid-flight, just to cite one example.
But, there are lots of other scenarios where there is much to be lost if things go bad. As totally pissed as I would be if my Forza save went “poof,” I believe I’d still live. If I lose all of my family pictures from the past decade because of a bug or a rare caveat, that’s a totally different story.
“Hello. My name is Chris and I’m a landmine denier.”
Admit it: You know your software has these types of problems. There are areas where we can reasonably expect users to tread, but we do not put up the proper fencing. Things where it’s not a matter of if it will happen – it’s a matter of when. In a way, I shouldn’t complain. It’s crap like this that keeps me employed.
That said, I view my job is to make myself unemployed. My software should be so simple, so robust, so intuitive that you don’t need a geek like me to deploy, maintain, or troubleshoot it… or at least fewer geeks like me :) [ I’ll let you in on a little secret. We geeks would rather be solving diffrent, more interesting problems, anyway.]
Landmines: The Home Version
I’ll offer up a non-tech example of this. We’ve lived in our current house for over 2 years. Thanks to our <sarcasm>lovely HOA</sarcasm>, our trash cans can’t be left by the alley. So, we’ve kept them on one side of the driveway as a “solution.” Simple enough and we meet the letter of the law to keep the HOA police off our back.
Because of this, parking a car on that side of the garage required pretty precise driving – both coming and going. I knew that some day, likely when we were in a hurry, one of us was going to get it wrong. Put the car into the wall of the garage, run over the trash cans, whatever.
But, I knew the caveat. I had “documented” the workaround: Just don’t run into the garage. SImple, right?
Did I put any effort into proper solution? Absolutely! I thought about digging out a space on the other side of the driveway, install some bricks (we have a stack taking up room in the garage, anyway), and park the cans over there. That would leave the driveway 100% clear.
OK… But did I do anything about it? Well, not really. I “didn’t have time.” There were other, more important things going on.
That said, I did finally manage to find time a couple of weekends ago… only after the side view mirror was ripped off my wife’s car. Amazing how things like that suddenly change our priorities (more on this later).
Now, not only did I install the bricks – which I should have done months ago, back when it wasn’t ~100 degrees outside – but I had to drop about $200 in parts to replace the mirror.
Bringing it Back to Tech
We all know of – or even create and support – software that has similar landmines in it. Sure, we can train people to step around these landmines. While the audience is small, this is manageable.
What happens when your product is the wonderful success you want it to be? Does a model that requires special insider info or meticulous attention to details in documentation bode for a great experience in the field?
In my trash can situration, I thought I had it all under control. Things went well for a long time. So long, in fact, that I convinced myself that implementing a proper fix wasn’t a priority. “Nothing has blown up so far. I probably don’t need to dig up the yard, after all.”
But, as I was picking up pieces of broken mirror from the driveway, I kicked myself for not acting sooner. Moreover, I had to rearrange my weekend to complete the work in a couple of days, whereas I could have taken more time (and likely done a better job) had I started earlier and paced myself.
Think back in your career and I am sure you can find examples of this in your product’s history. A major customer hits a critical issue, despite it being “well known” or even documented, which causes an all-hands-on-deck situation. New feature development grinds to a halt… and we were already behind on new features, because we’re human and we all suck at estimation.
“A stitch in time…,” “An ounce of prevention…”, etc. Yes, they’re all cliché, but that doesn’t make them any less true.
The point is: You can bury your skeletons before they are found or while a customer is beating you over the head with a femur. You make the call!