Being Careful Is Not a Solution
Phil's Booklet Posted on
Sunday, April 15, 2012 at 5:19PM When someone makes a big mistake, it's tempting to tell him or her to be careful. The developer who deployed buggy code should have been more careful. The support rep who messed up a customer's data should have followed the procedure more carefully. Nobody should have deployed anything during a high traffic time. When problems happen, people get angry and ask, "Why wasn't someone more careful?" And most of the time, some contrite person steps up and says, "I screwed up and should have been more careful."
Being careful is good, but being too careful is bad. An excess of carefulness doesn't atone for systemic flaws. That is, we shouldn't transfer responsibility from an error-prone system to whoever happened to make the most recent error. When I find myself promising to be more careful or telling someone else to be careful, a little voice in my head tells me, "You're ignoring the real problem."
It should be hard for a developer to break significant functionality.
It should be hard for the product to crash.
It should be hard for a customer to make a mistake that requires them to contact support.
It should be easy to know quickly when something is wrong.
All of those aspirations are possible. They just require more hard thought than being careful does. But, through good system design, judicious automation, meaningful alerting, and obsessive iteration, I've found that it is possible to build systems that enable me and my customers to be carefree.