On Being an Imposter

As a fledgling developer I often suffered from imposter syndrome thinking I was not (and indeed would never be) as good as everyone around me.

It’s very easy to feel swamped by all the latest JavaScript frameworks to learn, that terrible feeling that you really ought to learn Functional programming and all the while keeping up to date with the things you do feel like you know. You look at your peers, who are obviously better than you and have never struggled a day in their lives, and instantly lose all confidence in yourself on a daily basis.

Here’s the secret - I still get imposter syndrome. All the time. But what I’ve learned is - that’s okay. It’s normal. In fact, most of the best developers I’ve known suffer from the same thing every day. It happens because we care, and we want to be great at what we do.

If we don’t feel like imposters, we might be expert beginners or not pushing our boundaries and learning by being out of our comfort, fooling ourselves into thinking our learning journey with programming is no longer necessary.


It’s very easy to look around your peers and feel like the worst programmer in the room. In a previous job I was the only mid level in a team full of Senior Developers. I often felt useless, lacked confidence and felt like I just couldn’t compare. Now here’s the thing, of course I couldn’t compare. Those developers had been working at this stuff for 15 years plus. And here was me, with my paltry 2 years experience comparing myself to them.

This is a similar thing to coming to the JQuery library and thinking ‘I never could have written that’. Or looking at SkyScanner and thinking ‘I could never have built that’. You are right, of course you couldn’t have built that. It takes teams of experts to make these things, and we see them in their completed state. We don’t see the journey that gets them there. Everything complex has been built from tiny simpler steps that got to the finished product.

This is the same with more senior developers. We didn’t see them learning, growing, making mistakes, shipping terrible products. It happened, of course it did. We just didn’t see it. This was a real epiphany moment for me, because it’s really easy to assume everyone was just always incredible and didn’t need to work for it or ever feel they weren’t enough which is rarely ever true and doing them a disservice.

Compare yourself to yourself. What were you like last year, last month, last week, yesterday? Look at your own growth and how much you know. If you keep learning things every day, these are the smaller, simpler steps that get you to that level. Then one day you will be there, with junior developers looking up to you and you won’t even realise you have got there.


If anyone tells you that they know a technology inside out, unless they actually wrote the compiler don’t believe them. Even then, there is always more to learn. Always. To know a technology is to feel confident using it. It’s to feel like you can understand and tackle most issues with it comfortably. It is not to know every single line of code in a library, every single thing about how it works. You just can’t, while staying relevant in the other hundred thousand things we need to keep up to date with.

The most productive programmers I’ve worked with don’t hold all the minutia of a language in their head. They look up books, they use search engines, they ask their peers, they look in existing codebases they know where and how to find the stuff and that’s the real skill.

You just need to know enough to survive and where to find the rest when you need it. Know enough so that when a bug comes up you are not just flailing about in the darkness and you have a reasonable idea where to start from all of the things you have seen and learned. It’s all practice, practice, practice not the volume of data you can hold in your head. It’s fine not to know everything, because you can’t, it’s enough to be confident you can jump into a problem and have a go at fixing it.


Maybe you’re not the best at JavaScript on the team. Maybe you’re learning something new and everyone is better than you. Maybe you’ve joined a new job and know nothing about a technology they use.

That’s fine. You’ll get there.

We regularly feel out of our depth. Whether it’s learning the latest JS framework or adding a feature to an unfamiliar project, it happens all the time. It’s good to feel out of depths - this is where the real learning happens.

For many years I called myself a ‘.NET developer’. I wouldn’t look at jobs involving anything else because that’s what I knew. That was my ‘stack’. I knew it fairly well and I enjoyed it, and I felt like I was good at it.

However, when I took a job at CodeClan, a coding bootcamp, all of a sudden I was in the world of JavaScript, Ruby and completely out of my depth. I’ll admit it was a little scary, but it was also exhilarating. Everything was new and different but it was comforting how much of what I knew also applied. It allowed me to learn new skills while bringing the richness of experience I had from my .NET days

I could take my existing knowledge and use it to write better Ruby than if I knew nothing. Then going back to .NET I could apply much of the interesting patterns I saw in Ruby. My programming levelled up so much it was unbelievable.

It’s a great feeling to start again and learn a whole new set of skills. If you don’t feel like your brain hurts and you’re completely disorientated from time to time, you are probably not learning and growing and being the best version of yourself you can be.

Taking time to learn something when everyone else is ahead of you doesn’t make you ‘worse’ than them. You’re just learning, and that’s okay. Eventually you’ll be stronger for it. They just happen to be a little farther along the path than you, and that’s great. You can ask them for directions, and one day you might find it’s you that’s giving them the guidance.


It’s a very sad thing that in our profession, honesty can often be mistaken for a lack of confidence.

You’ve been put on a project you know nothing about. You have a tight deadline to deliver a new feature in a technology stack you don’t know. Everyone else could, obviously, do it better than you could. What do you do?

You stay up all night desperately trying to learn all the things and slowly but surely get more tired, more panicky and less able to learn as time goes on. Maybe you manage to hit the deadline, but the code is a mess. Maybe you don’t hit the deadline and you feel like the worst developer in the world. Everyone is better than you.

Truth is, they are not better than you.

Unrealistic deadlines on projects you know nothing about in a tech stack you have never used are unrealistic and unfair. We need to be strong enough to stand up for ourselves and say that it’s not achievable. We need to speak up confidently and say “I need support” or “I need time to learn”.

It takes a lot of courage to ask for help. Why would we spend weeks failing to learn something under pressure when someone else on the team already knows it and can show us how to do it, so we can grow and learn and the deadline can be met? It’s bad for us and it’s bad for the business too.

Unfortunately, this is often misconstrued as a lack of confidence. This is simply not true and is no reflection on our abilities, it takes confidence and courage to speak up when you are out of your depth.

We need to normalise that it’s okay to not be able to deliver something that’s unrealistic and that we sometimes need help. If we can be mentored successfully, then next time the same kind of project comes up we can deliver it confidently. The sad reality is though that you might be the first person to try to do this in your team, and that makes you vulnerable and can be really scary but if it goes well everybody wins. If your organisation won’t support you in this, or your line manager won’t hear you, it may be time to consider moving on if you can.


So maybe you’re not the best at JavaScript. Maybe you’re never going to build FaceBook. But maybe, just maybe, you’re the best team player they’ve got. Maybe you look after the junior developers like no-one else does. Maybe you had that chat at the coffee machine with John that brightens up his day because you took the time to care. Maybe you championed that change to the line management that made everyone’s life not suck so much.

We each have our own skills and talents that make us amazing and that’s not always raw technical ability. If you have amazing communication skills, that’s great! If you are the go to guy for mentoring, that’s fantastic.

As a programmer we are more than just coding machines. We should be kind to our colleagues, mentor our juniors and try our best to make our days as fun as they can be for us and those around us. Work doesn’t have to suck.

Next time you start looking at your peers and thinking you are not as good as them, think about these other skills. Who did you make smile today? What change did you suggest to make everyone’s lives easier? What did you do today to make life a bit more fun? Did you nail that presentation to a client? Did you give a mentee positive feedback and brighten their day?

I bet you did something today that no-one else did, in your own unique way. Be proud of that.


Imposter syndrome means you care about your craft and feeling vulnerable means your learning. It’s healthy and good and normal and most of us feel it every single day. Accept it and tame it and use it to your advantage, because you’re humble and hard working and an amazing hire for anyone to have.