I have not failed. I have just found 10,000 ways that won’t work. -Thomas Edison

Software development is an activity that requires serious brain power. And it’s only natural that software developers make mistakes along the way. However, many organizations and managers stigmatize failures. It’s considered a sin to make an error on the job. A sin that is not going to be forgotten any time soon.

We are taught from an early age that mistakes are bad. Students are marked by the number of mistakes and the society looks down on failures. So why should managers allow it? The answer is simple: people will make mistakes in any activity that requires imagination and creativity. That’s how they learn and improve. DeMarco and Lister explained it better:

Fostering an atmosphere that doesn’t allow for error simply makes people defensive. They don’t try things that may turn out badly. You encourage this defensiveness when you try to systematize the process, when you impose rigid methodologies so that staff members are not allowed to make any of the key strategic decisions lest they make them incorrectly. The average level of technology may be modestly improved by any steps you take to inhibit error. The team sociology, however, can suffer grievously.

The last sentence is the key: The team sociology, however, can will suffer grievously. As a software manager, your primary day job is to make it possible for your team to do work. When people become defensive, they lose motivation to do good work. Whenever a ‘bug’ is reported by customer or a client, instead of focusing their efforts to objectively locate the bug, employees spend time and energy on ‘covering their asses’ and collecting data to ‘prove’ that there has to be something “wrong with the other system.”

The biggest fear managers have is that mistakes made will cost their company money or damage customer relationship. While this is true, most mistakes made in the workplace don’t damage company’s reputation. Managers should identify few key customer facing areas where mistakes will be catastrophic and put additional oversight and checks in places. Keep this list very short and allow employees the freedom to make mistakes in other areas.

Another common irrational fear is that by allowing mistakes, people will make ‘stupid’ or ‘repeated’ mistakes. I guess I have have been lucky to have managed very few ‘bad apples’. (I could only think of 2 bad employees in the last 4 years.) Majority of software developers are smart, talented and proud people who value quality work, learning and professional development.

In his autobiography, Against the Odds, James Dyson writes:

I made 5127 prototypes of my vacuum before I got it right. There were 5126 failures. But I learned from each one. That’s how I came up with a solution. So I don’t mind failure. I’ve always thought that schoolchildren should be marked by the number of failures they’ve had. The child who tries strange things and experiences lots of failures to get there is probably more creative… We’re taught to do things the right way. But if you want to discover something that other people haven’t, you need to do things the wrong way.

I couldn’t agree more. Mistakes are part of a healthy team culture. Unless the job is dead simple and requires no imagination and creativity, mistakes will be made. I made a mistake in 2012 that cost my company as much as $5,000. A few ‘billable’ events were lost due to a Redis library issue. I had just convinced my bosses to let me replace the old MySQL database with shinny new Redis. I was devastated. We found the bug after 3 sleepless nights. I was very angry at myself for screwing up. But my boss shrugged it off, thanked me sincerely for fixing the problem and recognized my efforts publicly. Quoting someone, he said to me: “If you’re not making mistakes, then you’re not trying anything new.”

Mistakes should be embraced and celebrated. Software development is a difficult activity and software developers will make mistakes. They shouldn’t be crucified for making honest mistakes. It’s part of the learning. Great managers don’t cheat their employees of personal growth and development opportunities.