Dealing with Imposter Syndrome as a Software Developer

Published | 5 min read

I have been a professional software developer for over a decade and I have been writing code for over 25 years.

However, sometimes I still feel like a fraud.

It turns out, I am not the only one that feels this way and they have a name for it, it is called “Imposter Syndrome”.

xkcd: Imposter Syndrome

What is Imposter Syndrome?

Have you ever felt like you don’t know what you are doing? Do you feel like you aren’t good enough for your job, that you don’t deserve to be where you are in life?

That everyone else seems to know more than you do and your are just stumbling along working things out as you go along. One of these days they are going to find out you don’t know what you are doing!

If you have, you likely suffered from imposter syndrome.

Imposter Syndrome Definition defines this as:

anxiety or self-doubt that results from persistently undervaluing one’s competence and active role in achieving success, while falsely attributing one’s accomplishments to luck or other external forces.

Essentially, imposter syndrome comes about when you doubt your abilities.

It is common in all careers but I think it is especially apparent in the software development industry.

Imposter Syndrome as a Programmer

We are constantly having to keep up with technologies and learn new skills. As such, it is impossible to be able to know everything. There will always be gaps in your knowledge and someone else is bound to know something that you don’t.

Anyone who has worked in frontend development will relate to this. With new frameworks coming out every year, it can feel like you are constantly on a hamster wheel never getting to the finish line. You dedicate your time to learning Angular just to find out that everyone is switching to React or Vue, and now you are back to square one.

This becomes especially apparent when you start to specialise in a particular area. The more time you dedicate to one subject, the less time you are going to have to learn about new things.

This always reminds me of this quote:

You learn more and more about less and less until you know absolutely everything about nothing. - Nicholas Butler

I would consider myself a full stack developer. I know enough technologies to be able to take a product from idea to production including, frontend, backend, database and infrastructure.

However, I specialise in backend development. My frontend knowledge is limited to creating my own personal projects or updating existing projects. I wouldn’t say I was up to date with the latest best practices. My database knowledge is fairly good but I don’t know as much as a dedicated DBA. My infrastructure knowledge is getting better but I am constantly learning from my colleagues.

Dunning-Kruger Effect

What makes matters worse is something called the Dunning-Kruger effect. Another definition, this time from Wikipedia:

The Dunning–Kruger effect is a hypothetical cognitive bias stating that people with low ability at a task overestimate their ability.

With the “Anyone Can Code” movement (which I am not entirely against) we have more and more people who know just enough to be dangerous. In some cases, they have only just started and think because they can put an HTML page together that they suddenly know all there is to know. Or they might have a couples of years experience and have got very good at one thing.

These people tend to have a lot of confidence, as they are unaware at just how clueless they are about everything they don’t know.

Whereas those of us with many years experience under our belt, understand that there is a lot that we don’t know and therefore you shouldn’t get too cocky with what you can do.

However, as we end up feeling inadequate we are less likely to share what we do know with the world.

How to Get Over Imposter Syndrome?

So know that you understand what imposter syndrome is (and probably relate to a lot of it), how do we deal with this?

Recognise your accomplishments

A lot of us tend to downplay our accomplishments. Maybe you have just done a difficult release, managed to solve a bug that has been driving your team mad or even just completing your work for the sprint on time.

If you just move on to the next task without patting yourself on the back it can feel like you aren’t accomplishing anything.

I recommend you write down your achievements. This is especially important when it comes to review time and you need to tell your boss why you should get a pay rise.

Share your knowledge

This is something that I am trying to do more. Push myself out of my comfort zone and get out there and share what I know.

Whether this is via blog, company talk, Instagram, Twitter or YouTube, sharing is an important part of giving back to the development community and helping aspiring engineers improve their skills.

I forget that I have been writing code for 25 years and end up thinking that I haven’t got anything worth sharing. However, not everyone is in the same place you are. Even if you are just starting out there is going to be someone who doesn’t know what you know and would benefit from your knowledge.

So don’t be afraid to get out there and start that blog that you have been putting off for years.

It is always nice to know that you have helped others and it can stop you from feeling like a fraud.

Be Humble

This is my motto for life and the number 1 advice I give to others, “Be Humble”. Once you realise that you do actually know more than other people it can be difficult to keep your ego in check (how do you get your head out of the door?).

So remind yourself to always be humble. Don’t look down on others that don’t know as much as you, as I can guarantee they know more than you about a different topic.

Don’t be afraid to ask questions, even if you think it will make you look stupid. Chances are that if you don’t know the answer there will be someone else who doesn’t either. It is always better to clarify something than assume.

Never ASSUME as it will make an ASS out of U and ME

Final Thoughts

No matter how much you know, there is going to be plenty of things you are clueless about. Instead of getting down about it, take the opportunity to learn more and share your knowledge with others.

Hopefully, this post will be helpful for those going through something similar.

Was this post useful?
If you found this post useful and would like to support me, you can do so by buying me a coffee. Donations help keep this blog ad free.


What is DeFi? Understanding Decentralized Finance

What is DeFi? Understanding Decentralized Finance

  • 19 November 2021
If you are new to the crypto space the concepts of decentralised finance can seem a bit overwhelming. There are so many new terms to try and understand, it can be challenging to see how everything fits together. I have been working in the traditional...
Using Hashnode as a Source for Gatsby

Using Hashnode as a Source for Gatsby

  • 05 November 2021
I have done quite a few website migrations over the years. My blog like many first started out on WordPress. After several attempts at optimisation, I ended up generating a static version of my WordPress website. On my static site generation journey...
What is Web3? The Decentralised Internet Explained

What is Web3? The Decentralised Internet Explained

  • 15 October 2021
If you have stumbled upon this article you have probably seen the term web3 being mentioned around the internet. Especially on Twitter at the moment it seems to be the latest buzzword. With all the hype around NFTs and crypto at the moment, a lot of ...
Ditch the Ads: The Future of Website Monetization

Ditch the Ads: The Future of Website Monetization

  • 08 October 2021
Do you remember that scene in Ready Player One, when IOI are showing what the future of the Oasis will look like once they take over? “We have determined that we’ll be able to fill 80% of the user’s display with advertising before inducing seizures”...
Mocking API calls using WireMock

Mocking API calls using WireMock

  • 14 May 2021
It is rare in software development that you are building something in complete isolation from everything else. Generally, you are going to be making calls to other systems or components. If you are lucky you are building against an existing API that ...
Using ngrok to test local websites and APIs

Using ngrok to test local websites and APIs

  • 07 April 2021
Often when I am creating a new website, I want to see how it is going to look on an actual device like my phone or tablet. You can use Chrome Web Tools for mimicking a device but it isn’t the same as an actual phone. Chances are however that if you t...
Using GitHub Actions to Deploy to S3

Using GitHub Actions to Deploy to S3

  • 26 March 2021
Recently I went through the process of setting up Drone CI on my Raspberry Pi. The plan was to use my Raspberry Pi as a build server for this website as well as other projects. However, the Sharp image library that Gatsby uses to resize images doesn’...

Alex Hyett

Alex Hyett

Software Developer, Entrepreneur, Father, and Husband. Engineering Lead at

Want to get in touch? You can find me here:

Join the Newsletter

Subscribe to get my latest content by email.

    I won't send you spam. Unsubscribe at any time.