Overcoming fear as developers

We face fear almost everyday in our lives and still I don’t think we talk enough about how much impact it has in our personal lives and careers. I’ve realized that fear is behind many bad decisions I’ve made in the past and down the road only overcoming that fear has helped.

Battle with the Great Octopus by John Elliot

As human beings I do believe that fear is useful, it’s one of the main mechanisms that has kept us alive for thousands of years but in our careers that might not be the case and we need to understand the fear and overcome it.

For example, when I’m trying to improve a project by refactoring some code or trying a new approach I face some fear because I’m in the “real world”, where the project needs to keep running properly and I could break it in the process, fear tells me to stick to what I know and keep building new features.

There have been other times when I’ve been afraid of proposing a solution or trying something new basically because I’ve thought that it might not be good enough or I would fail eventually. Which it’s a huge mistake, if my solution is not good enough, I can learn from it, I can share it with my colleagues and try to understand why it’s not good or how we can make it better and I’ll never know how good it is until I propose it and discuss it. Sometimes playing a little bit with a new approach might be enough to discard it right away or maybe it could be the beginning of something great.

I don’t have the perfect solution for overcoming fear but something that has helped me in the past it’s been to pause, take a deep breath and try to understand why I was being afraid, thinking about the worst case scenario and ways to prevent it. At the end of the day, fear is only in our heads, we create it and we can destroy it too. The conversation in my head is something like this:

Me: “Oh, I think we should refactor this piece of code and perhaps extract this to a new library, in that way we could isolate the relevant code and test it properly. Even more, we could reuse it for other cases in the project”

Fear: “Sure, but this is inside one of the main pieces of code of the project, if you start moving things around you might break something and we might not have now enough tests to make sure that this will be ok. Besides, it will take some extra time that you could be using for something else”.

At this point is where I feel that I shouldn’t keep going and when pausing a little bit and considering all the things might help:

Me: “Ok, let’s start by adding some tests to understand exactly how this is working and then I can extract the code to a new library, even if it takes a little bit longer the code will be cleaner, easier to follow and test down the road. If this takes longer than expected I can always leave it the way it was or ask for help.”

This is of course not a magic process and sometimes it’s true that I need to compromise and perhaps come back to that problem later, nevertheless, accepting that we all have these fears and overcoming them makes us better in our careers so I think it’s worth a try the next time we face a challenge.