Stupid mistakes…

October 12th, 2010

I made a stupid mistake last week.

There was a formatting issue with emails on a client’s e-commerce store, and in the process of testing that the emails were fixed, it looks like I left “test mode” on, which means orders get approved but credit cards are not charged. They discovered the problem today, and so far about 8 orders have been placed since I made the mistake.

I’m a little angry at myself for missing this, but I’m trying to look at it objectively and ask myself how I can prevent this from happening next time. We’ve been in situations like this before. Stupid mistake + pissed client. Generally the gut reaction is to add a new policy, as in: “ok, every time we make an edit to the site we have to double check that test mode is disabled” or “Ok, every time someone uploads a new file, they have to email the rest of the team”.

I think that approach is well intentioned but doomed to fail.

We all make mistakes. We’re human. Sometimes we’re tired, and the site seems to work (it was just a little text edit anyways, right? Nothing bad can happen). Or even if we don’t make mistakes, we might have other developers who do. What if they’re new, and don’t have the policies memorized yet? What if they’re lazy, or inconsistent? What if they don’t realize what they did was a problem?

There has to be a better way.

I think we all want to be like Hiro from the show Heroes. We want to just *think* a little bit harder, and the problems will just go away. (Or time will stop, etc.) The problem is that we don’t think of ourselves as fallible. The human mind can do amazing things, but it’s not amazingly consistent.

You know what is amazingly consistent? Computers. Automation. Robots that do our bidding. Instead of finding ways to remember things better, try finding ways that you can’t possibly forget.

The problem above would never happen again if we wrote the site so that changes would not be published unless test mode is off. All it takes is a simple, automated check that happens behind the scenes.

This can apply to non-technical things, too. Just take yourself out of the equation altogether. Send yourself an email at night, so in the morning you have a reminder about what you have to do that day. Set up a recurring payment at your bank to pay the rent every month. Give $100 to a friend, and tell them to donate it to a charity if you don’t finish that paper on time.

In general: when possible, automate the things you absolutely can’t forget. If you can’t automate, change the stakes. If you can’t change the stakes, then it’s probably ok if you slip up every now and then. After all, we’re only human.


Leave a Reply