Is it okay to fail?

I believe that I have conditioned myself to fear failure, that a mistake or an error in judgement is so bad that I am no longer a good colleague or person, that I don’t add value to my team. 

On the flip side this fear drives me to prove to myself and others that I can add value.  Fear of not being able to do a job that I love.  Fear of looking like an idiot in front of people I respect.

When writing this post I researched planning to fail in software development, one of the first searches I did brought back articles on how software projects fail, not any about how to learn from failure of the software project.  I find that amazing. The mantra, “Failure to plan, is planning to fail” was everywhere.

Why should I be so fearful?

In the software development world, isn’t it our failures that shape our career, our experiences, and our learning more than successes? If you think about it, software developers around the world are failing every day from defining logic incorrectly and having to find a different approach to the problem to finding bugs in their code or their users finding bugs in their code. 

Scientists fail but they use the evidence of their failure to continue and each failure gets them closer to a successful result. Even a toddler trying to walk for the first time fails but gets up and tries again until they can walk.

I believe that I need to start thinking of failure as a good thing.  To turn what is thought of as a negative into positive and stop the fear.    Treating every failure as a chance to get better and edging closer to a successful result.

How have we got to the point where failure isn’t planned for?

I think that one of steps to take is that failure should be planned for.  I have recently started to try and run every day “a running streak” and one of the pieces of advice that I have been given is plan to fail.  This lets me think of all the obstacles to stop me going a run and remove them by thinking of all the pitfalls ahead of time. 

One of the most obvious things that could help is testing, unit, integration, system, and manual testing.  The more tests that cover the code or each area of the system will mitigate the risk of failure.  What if you do write/complete all the relevant tests? If a developer makes a mistake and even the unit tests are wrong. You could have acceptance testing with the user.  What if the user doesn’t notice? Involve the user, communicate plans and failures to them.  There are numerous scenarios that you could go through.

What about building time into plans for rework and bug fixing? 

In a perfect world we would like to think that our code will not need re-worked or that any bugs will found but inevitably this will happen so why not build it in to the plan.  A user testing might not like a particular feature, the feature might not be correct, or a bug might be found. It would be better to be prepared.

Is failure accepted?

As software developers we can get into the hole of thinking that our code should be perfection and go down this silly road of thinking everyone else’s code should be as well.  We are not accepting of mistakes especially if the pressure is on.  We have all written code that six months down the line, we say to ourselves “What the hell was I thinking”.  We need to cultivate a culture of acceptance of failure.  Communicate with your team that it is okay.  Be humble and listen to the developer fixing the code.  Developers will then relax and produce better code as a result.  We write better code when we are happy!

So I am finally realising that it is okay to fail and that it happens more than we realise.  To not be too hard on myself (although that might take a bit of work).  It is healthy to fail.  Each refactor is a change to improve and get better even if a bitter pill to swallow or a brief period where you feel like an idiot.  I believe that we need to get away from defining success and failure as binary and try to think that all the failures encountered could lead to success…eventually.

I hope you find this post useful.  I would be interested to hear your thoughts?