Let’s say you needed a can opener (and for whatever reason, you didn’t own one yet). You go to a store, and purchase one.
That night, extremely excited (as many people are about new can opener purchases), you hurry into your kitchen. Tonight, you’re going to prepare a meal! And some of the ingredients will come from a can, yum! You bust out a can of sweet corn, hook your brand new department-store can opener onto it, squeeze, and turn the crank. After a few seconds of turning the hand crank, the top comes off, and you can enjoy your sweet corn. Yum!
Later that same week, you’d like to again cook yourself a delicious meal whose ingredients also come in an aluminum enclosure. Just as you did before, you hook the can opener up, and begin to turn the crank. Only this time, you hear a terrible grinding noise. Before you can stop turning, the can opener has cut up metal shavings of the can, and put them in the food. Furthermore, due to the destruction of the can, a lot your food has leaked out onto the kitchen counter and floor. Your dinner is ruined.
Maybe the owner’s manual for this can opener had a specific angle you were supposed to hold it at. Perhaps it had a suggested service plan - after so many turns, you need to get it serviced to have it work the same as before.
You now have a lemon can opener (without service or new parts), and a wrecked meal for the evening. Besides doing nothing, there are two courses of action you could take.
You could take the active approach. Maybe you’d write the company. You could contact consumer advocacy campaigns, you could return the can opener. You were sold a defective can opener, and you’re going to get your money’s worth!
Or you could be passive. If this freak can opener incident happened to you, you’d probably never buy a can opener of this style or from this manufacturer ever again. You might even tell your friends, and recommend that they too stay away from this particular kind of can opener.
You wouldn’t be cutting this faulty can opener any slack. You certainly would not assume “Oh, this is just how can openers work”, and conclude that you’re stupid or wrong for not following the bizarre requirements. You weren’t wrong. The tool was wrong. You’re not cutting it any slack.
Maybe you don’t cut a can opener any slack because it’s not very complicated. You can understand the basic principle behind how it works.
Would you cut a more complicated thing more slack?
What about a car? Maybe you own a car (perhaps from the same company that brought you that fantastic can opener1), and it works alright. Every 10 or so times you start it, though, the engine fails to turn over and needs to be jumped. This isn’t because of a faulty component in the car, this is just how the car works. Everybody who owns this car has this same problem. Driving around, you frequently see people jumping each other to start these cars. This is commonplace. Also, every six months or so, these cars require major service to keep working. You need to have the engine rebuilt, or else the car won’t run nearly as well as it used to. Your speed will be limited, you’ll use more fuel, and the car will emit a terrible odor.
Cars are significantly more complex than can openers. Lots of parts make up a car, and they work together in complicated ways. Unlike a can opener, most people do not understand how a car works (beyond basic principles of internal combustion, maybe).
But I bet most people would not cut this car any slack. They’d return the car. There would be class action lawsuits against this kitchen-tool-and-automobile company. This company would be scolded publicly - why can’t they make cars that work the way they should work? If you owned one of these cars, you wouldn’t accuse yourself of being stupid or wrong for not following the unusual service requirements. You would blame the car company. You wouldn’t cut them or the car any slack.
So, if complexity isn’t a factor, then what about something that’s similarly as complex to a car?
What about software?
People cut software a lot of slack. Way too much, if you ask me.
I see people all the time who deal with issues with software similar to the ones I’ve described for can openers and cars. If the computer does something bad, like loses a document because you forgot to save like you “should”2, the computer gets cut a lot of slack. People feel bad, they feel stupid, they feel like they did something wrong.
For a lot of people, every 10 or so times they turn on a computer, they’re presented with a strange dialog or screen they don’t understand before it’ll start. Maybe it didn’t shut down cleanly, maybe it needs to rebuild some internal cache, maybe it needs to do a filesystem check. Most people don’t understand what this means (they should not have to understand what this means), and they may bring it in for service. Not because the machine’s doing something weird or cryptic, but because they feel too dumb to understand their computer.
I go to a fairly technical school, and it’s common practice for many students here to “re-image” their computers two or three times a year. They view it as good hygiene for their software - this is something computers need to function well. They think nothing of the fact that several times a year, they need to drop everything, and spend a day “cleaning” their computer.
Or, worse, they blame themselves for needing to do this.
If only they hadn’t installed all that software to bog it down, if only they had defragmented their disk more often, if only they remembered to check for spyware and malware. If only they had used the computer the “right” way, they wouldn’t have to do this.
Maybe people cut software so much slack because it often costs less than a car. Cars cost tens of thousands of dollars, while software is frequently much cheaper (or free). I believe, however, that upfront cost is not the whole story behind how much slack we should cut things.
Let’s take a free example, to make things easier. Let’s talk about gcc.
gcc is free software, both in terms of speech and beer. I didn’t pay anything for it.
How much is
gcc worth to me?
Certainly more than $0. I’d argue that
gcc and similar free tools like it are worth a lot to me. They’re critical to my craft. They’re how I make stuff. How important is a pair of shoes to a runner? Or a paintbrush to an artist? Or a guitar to a musician? Much more than their retail price, that’s for sure.
It’s hard to put a financial value on these things, but it wouldn’t be difficult for them to be competitively priced to a car. For many people, they’re how they make a living.
Software is extremely important to many people’s lives, more than just software developers. Think of how many jobs require email clients, word processors, spreadsheeting applications and internet browsers.
If this stuff is so important to us, why do we cut it so much slack? Why do we blame ourselves when it doesn’t work right or how we expect? Why do we assume that frequent maintenance is acceptable for something so important?
Maybe we cut software slack because we have to. Because there’s rarely any other option. Sometimes you can’t just switch or stop using a piece of software.
It’s a problem with the software industry. Companies are used to people cutting their software slack, and as a result, they don’t try as hard. They start to make users custodians of the system, and user-centric design takes a back seat to cheaper operating costs. Who’s going to call them on it?
Intentionally or not, an attitude of guilt has been instilled in consumers regarding software. Companies aren’t likely to change if this attitude stays the same, if we keep cutting software slack.
We shouldn’t cut software slack. It’s a tool, and it should work like one.