As I continue on my journey to start blogging regularly and releasing at least one post per week, it has become evident that it will be very difficult for me to limit all my posts to purely technical posts.
However, this could be a blessing in disguise as I think a lot of software developers often underestimate the significance of the mental side behind our profession.
The fact of the matter is, like a lot of other professions, different software developers face different mental battles that come to fruition once we are out of the comfort zones of our own bedrooms, doing what we do best, which is of course in our case building cool stuff.
Suddenly, once we have actual jobs, we have to apparently start interacting with other human beings around us. We have to sometimes start writing code alongside them, which is just, awkward because they’re judging our every move, right? Sometimes we have to painfully try and explain implementations to our non-technical stakeholders. Sometimes we have to present in front of them and other larger audiences. Sometimes when things go wrong, we have to explain ourselves. In fact just the thought of something going wrong out of hours and then having to admit we made a mistake, may make some people shiver with fear.
Most software developers tend to be introverts - or so we have been taught to believe. I personally have been told many of times by different people that apparently I’m fortunate to be an extrovert. The dictionary definition of being an extrovert is “being an outgoing, socially confident person”, which is definitely not me in my opinion.
Regardless, I’m not exactly convinced such a thing as an introvert or extrovert actually exists. It’s similar to people who blame themselves for being born as endomorphs because they are overweight, but also coincidentally refuse to fix their diets to lose weight. Or people who blame themselves for being born as ectomorphs because they can’t gain weight, but also can’t be bothered going to the gym on a regular basis.
You might be reading this and be thinking - well, who are you to tell me that I’m not an introvert? Well, you can be a spotty red alien from Mars for all I care, but if we can send a man to the moon, why can’t you get up in front of 10 people and give a presentation?
Now to link things all up. The mental battles, the introvercy, how do they all come together?
Well, they probably don’t. But the point is that I’m a firm believer in that with a lot of mental issues, lies a deeper underlying issue which is more than often the unwillingness to admit that you aren’t actually perfect and that you might actually be wrong for once in your life…
Growing up, I was a stubborn child. My parents used to tell me that I “wore a stainless steel cooking pot on my head”, in reference to the fact that nothing they or anyone would tell me would actually sink in. I was stubborn, somewhat egotistical around my areas of expertise and rarely wanted to take on the advice of others. The real question though was why? Was this behaviour a biproduct of another underlying issue perhaps? (Hint: Yes, it was. Keep on reading.)
I’ve since had some experiences happen in my life which helped make me realise that everyone always has room to improve and the only thing standing in most of our ways, is actually just a mental barrier of excuses.
If you keep telling yourself you’re an introvert or don’t have enough knowledge on a subject to give a presentation to an audience of 10 people - who aren’t even judging you and are on your side regardless - then you will be an introvert and someone who lacks knowledge.
You can be anything you want to be and it doesn’t matter if anyone else believes in you or not, as long as you believe in yourself.
If you keep telling yourself you don’t want to speak to stakeholders for example, sit down and analyse what it is that frustrates you about doing that and figure out a solution. Push yourself out of your comfort zone than take the easy way out and let somebody else do it.
Now I’m not saying the stakeholder example is a regularly occurring thing for software developers. It’s just an example off the top of my head of an issue a small percentage of us may or may not suffer from.
If you feel uncomfortable with code reviews or pair programming, again, remove your stubborn mindset for a second and ask yourself why you are scared of these things?
Sometimes, it isn’t even an issue of being stubborn or egotistical. It’s a fear of failure. My biggest weakness.
The worst part about it is that it is a weakness that will always come back to haunt you. Remember that we all have different mental problems that crop up every now and then - none of us are perfect, except Jon Skeet - and this doesn’t just apply to software developers.
I’ve been questioned in the past by colleagues about why despite openly and willingly admitting to my weakness, I voluntarily ask for code reviews or for opportunities to pair program which go against my weakness.
I’ve been questioned by others who dislike these very same things for the very same reason, why on earth I make life difficult for myself?
It’s because I’ve come to realise that the only way to overcome a weakness, is to fight it. You know what they say, the first step to solving a problem is admitting you have a problem.
So what if I have a code review and my more experienced reviewer - who I’m very fortunate to have alongside me in the first place - points out an error, or two, or seven hundred and seventy seven of them?
Well, this is why I believe it’s important to understand the why behind overcoming every particular weakness. There must always be one, otherwise the so called weakness is not really a weakness in the first place.
In this case, I know that worse case scenario, I walk out of the review with not only a better code base, but as a better software developer. I win, right?
If you’re worried about your reviewer being disappointed in you for having human errors or whatever other excuse you can come up with, again, analyse the problem and find a solution.
If you don’t want your boss doing your code reviews - assuming they are voluntary - find a friendlier colleague instead.
Or imagine the I’m pair programming with someone, whilst I may not always learn something new, this is where it is also important to remember to integrate the thought of and effect on others in to your why.
You might not benefit too much from the pair programming session this time round, but what if your colleague does? Would that not make going out of your comfort zone worth while? I’d argue it certainly would do.
In conclusion, hopefully I haven’t bored you. This is a topic I feel really passionately about and shifting my mindset to wanting to push myself in to situations out of my comfort zone to learn from my mistakes I believe has helped me significantly over the past year or so in evolving myself not just as a Software Developer, but also as a general human being.
The reason why I speak about it is because there is so much more to being a successful Software Developer than just being good behind a keyboard. What you do AFK is just as much of an important factor in achieving success and progression throughout your career.
If you want to be one of those people who laughs off “self-help” type posts/books - hint, I used to be one of them - go ahead. But don’t knock it until you’ve tried it.
Don’t know where to start? Set a simple short term goal to achieve in the next month based around defeating a fear you have relative to your role. Let me know what it is in the comments below!
Don’t be your own worst enemy.
Thanks for reading.