Humans Fail

To quote that passe yet once very trendy book The Cluetrain Manifesto,

“To be human is to be imperfect. We die. We make mistakes.”

The Cluetrain guys were talking about human fallibility to illustrate how people create their “turf” within their company and make themselves an authority so they can avoid being shown up and exposed as “frightened little boys, fallible and uncertain.”

But I don’t want to talk about that. Anyway, it’s sexist: little girls get scared too.

I want to talk about IT and software development, because I think in a lot of places, nobody can make mistakes.

Do I mean people aren’t allowed to make mistakes? Well, sort of. When it happens, it can be bad. Customers can be inconvenienced, time and money are wasted. People don’t give themselves room to make mistakes. Non-repeatable, non-verifiable methods of getting things done, like using a GUI to implement database changes, or a list of IP addresses that needs to be kept up to date manually. Having no automated testing of your software.

“Humans fail” is a nice philosophy for things like coding conventions too. If you can tell where a variable comes from just by its name, that’s going to help a lot in a month when you come back to that code. A method signature like getNameFromDB(personID) instead of getName(ID) will save your neurons and your time.

It’s just too much thinking and too slow and inefficient to try and rely on humans to remember everything. Rely on a check (like a software test) to tell you if you’ve stuffed it, then you go back and fix it. Letting the customer tell you that you messed up doesn’t count.