Is failure in IT not acceptable?

Categories: Software Development

The Failure

Nobody ever told me “You are allowed to make mistakes”. And I guess nobody will. The Failure has been a taboo topic for many of us. This is something that was not taught in school, nor at my home. I have worked in both The Netherlands and Poland for many years and multiple companies. Both countries have slightly different culture, yet none of the companies indicated in any way that failure is either part of the job or “acceptable” in the workplace.

Are you afraid of failure in your workplace?

One of the companies that I worked for has had a very old legacy system powering their order process. It was crucial for this global company to keep the system working 24/7. The development cycle time was around 2 weeks. Every deployment was associated with huge risk and nobody wanted to be responsible for deploying software to production. It took a new developer roughly 3 months before they felt somewhat comfortable with making changes to the source code. There were times that the system was down for the best part of the day.

The company hired an army of consultants to transform the Engineering Department into the agile way of working. As they were training the workforce to the new way of working, they have also conducted a questionnaire. I don’t remember the exact questions, but one of them was something along the lines of “Do you feel failure is acceptable in the workplace?”. When the results were known a few weeks later, nobody had illusions anymore - most of the people were afraid to fail and because of that they did not perform. No action followed those results and no plan was devised to improve the situation. Yet everyone acknowledged there is an issue that nobody wants to talk about.

I’ve worked for several companies so far, and I haven’t seen any of them admitting out loud that “failure is acceptable”. I have also experienced multiple approaches to this “Failure bias”. Some organizations clearly say that they don’t tolerate any failure. Usually those companies characterise with high turnover and high stress levels experienced by employees. This applies especially to small businesses that cannot afford a failure. Some say that failure is acceptable, but don’t back the words with actions. Some companies simply don’t realize that failure is the only path to success and expect everything perfectly at the first attempt.

Small Changes - Less Risk

This has been discussed before, but I would like to talk about this from a different angle. This is an angle of a person that is afraid to make mistakes and the company that does not provide them with tools needed to freely make mistakes and learn from them. There are ways to lower the risk while facilitating the change and failure-acceptable culture. One of the techniques that is commonly known as Continuous Delivery, aims at making small code changes but often. Small changes means lower impact, less risk and faster feedback. Yet, many companies have problems with implementing this system. Other blog articles discuss why this is happening. I would only like to mention the fact that there is clear correlation between companies not implementing CI/CD processes and ability to accept failure.

Apparently the mistake could not have been avoided

Some people say that mistakes can be split into two categories: those that we need to make in order to learn, and those that could’ve been avoided. I believe that there is no such distinction. If a mistake could have been avoided, it would have been avoided. There is no “stupid mistake”. There is just the one that one had’t thought about. And of course there are many techniques to avoid mistakes or de-risk projects. However, if one already happened, there is no way to go back in time and “avoid the mistake”. It’s not a junior developer’s fault that he failed to deliver everything perfectly. It’s about being conscious of human abilities and lowering the probability of a mistake, not expecting people not to fail. Learning from mistakes is a virtue, but sometimes making a mistake one time doesn’t mean we will not repeat it. Many situations disguise the same mistakes in different colors. It requires skill to identify them and apply right solutions. I don’t deny that you should be aware of the risk that your actions involve. I believe that identifying risk factors and making sure you are aware of the risk is crucial to making the right choice as a developer.

If a mistake could have been avoided, it would have been avoided.

Just do your job well

Most of the mistakes I have experienced in software development stem from complex situations and lack of knowledge. Usually at the time of making a decision, I did not have enough knowledge, time or experience to choose the right option. I cannot say that I could have avoided any of them. I believe that any decision that I made was the best I could make given the time and situation I was in. Don’t punish yourself too much because you’ve made a mistake.

No company will agree to my next words, but most likely they won’t deny them. My advice to Engineers that think that cannot fail? Be thoughtful about risks and impact of your code and your actions. If you’re thoughful about your actions, there are no mistakes that could have been avoided. Work hard but don’t be afraid to break stuff. Always ask for advice and help in doubt.

Share this post with your friends

comments powered by Disqus