Impostor syndrome and the programmer’s brain


Impostor syndrome is where you feel that you are in a position that you don’t deserve because you’re not good enough at something, in contrast to all the people around you who all seem to be good enough, and one of these days someone will discover you to be the fraud or impostor that you really are.  I’ve felt it, and I know of many other programmers who also have.  It can happen despite evidence that you are good enough, and it’s this part that I want to explore in this article.

Digression to pre-history

If you’re like me, you sometimes get mildly annoyed when someone tries to justify their argument by referring back to pre-historic times and what people must have done to survive.  I find this mildly annoying because this is often done lazily – without any evidence or decent reasoning to show that such a claim is in any way valid, and hence the main argument is also valid.

Well, that’s exactly what I’m going to do now – sorry.  Imagine one of our pre-historic ancestors waking up, going to the mouth of their cave and looking around.  Pretend that there are two possible kinds of reaction this ancestor has to looking around.

In the first case, the ancestor goes “Wow!  There’s a big oak tree!  Amazing!  Next to it is an elm sapling!  Incredible!  Next to that is a gorse bush!  Look!  Behind the oak there’s a wolf!”

In the other case, the ancestor sees the same stuff and goes “Look!  Behind the oak there’s a wolf!”  Or, in pictures, it’s the difference between these two graphs:

A bar graph showing high responses to seeing oak, elm, gorse and wolf

A bar graph showing a big response to a wolf, and a tiny response to oak, elm and gorse

My unsubstantiated, of course it must have been like this, claim about our ancestors is that their survival depended on being able to filter out some bits of information so that they could pay attention to other bits.  They would see everything, but then focus on just the parts that indicated a threat or an opportunity.

The present day

If you think about it, we still do this kind of thing today.  Unless you live inside the Arctic or Antarctic circles, you probably didn’t remark that the Sun had come up this morning.  You might have remarked that it was a nice sunrise, or it was cloudy, but the fact that the Sun came up wasn’t news to you even though it happened.

Similarly, you probably don’t remember in detail the last time you brushed your teeth or put on some shoes.  If, for instance, mental health problems or a physical disability mean that e.g. brushing your teeth is a major achievement – I salute you.  I hope that you still find this article helpful.  I also hope that you forgive me if I continue with the rest of this article assuming that these kinds of tasks aren’t remarkable.

If you’re interested in digging into the formal side of this kind of thing, then I suggest you look into information entropy, or how much information a message contains.

Familiarity breeds contempt

I think that much of the time, there’s a process that we go through as programmers for each new skill, concept or bit of technology.  To start with it’s some exciting / baffling / mysterious Other.  Then we start learning it, probably making mistakes, maybe getting frustrated.  It might be that we get things first time, or it might be that we must give up and start again one or more times.  Assuming that we eventually succeed, then over time our skill in that area grows, and we become able to do more stuff more reliably and more quickly.  Eventually the skill becomes part of our mental muscle memory and we can do much, if not all of it, without conscious thought.

The problem is that this lack of unreliability and the fact that we don’t need to think about it moves the skill into the sun-coming-up category.  Our brain shifts its attention to the next new thing we need to master, and ceases to pay attention to this thing that doesn’t need any further attention.

Bad news everywhere

I think it’s not just skills where our attention is skewed.  In my experience there are two lists of things that are relevant:

  1. Things you don’t pay attention to – completed work (because you can’t change it), skills and knowledge you already have, tools you already know how to use
  2. Things you do pay attention to – work still to start or finish (as it’s part of the story that’s not yet written), gaps in skills and knowledge, bugs

The gaps in skills or knowledge have a good side and a bad side to them, both of which attract our attention.  On the good side of things, a new skill could lead to new work or even a new job and / or a promotion or pay rise.  On the bad side of things, a new skill could help protect against things like obsolescence or being made redundant.

Bugs draw the attention because I hope that you take enough pride in your work that you take bugs personally.


Risk is a bad thing for management because it makes the future hard to predict.  Decent managers work hard to identify it, and hopefully reduce or mitigate it.  New things are risky, so we do things like spikes and other investigations to reduce the risk.  However, new things are the shiny and interesting stuff that programmers want to pay attention to, but reducing risk can neuter its newness and shininess, e.g. by breaking the work up into little pieces.  I’m not saying that managers and programmers shouldn’t manage risk, but just take a holistic view of risk and how it’s linked to novelty.

Taking stock

I suggest that the next time you feel impostor syndrome, go through your working day and the things you do.  Think of the skills and tools you used to do those tasks.  For each skill or tool, think back to when that was still new to you.  If you can’t because that’s too long ago, think back to the last time you helped someone else to learn it.

For instance, what did it feel like the first time you successfully used a debugger to run a program under your control?  What did it feel like being a tyrant who could get the code to execute or pause as the whim took you?  Did it feel like you were wearing x-ray glasses, that let you look inside the code to see the values of the variables, and see how the flow of execution bounced from line to line?  Did you think this is a cool tool, and now I know how to use it?

If you’re like me, you normally reach for a debugger when something’s gone wrong, and the main thing on your mind is fixing that problem.  You pay at most scant attention to the debugger or your ability to use it.  I encourage you every so often to think how cool it is, and how it gives you superpowers that not everyone has.

You could take the same kind of approach to tasks you’ve done.  Think how the world was before the task, and how it was afterwards.  How will this difference change things for people?  Will they be less likely to want to kick the cat at the end of the working day?  Excellent – if nothing else, you have made life better for cats.  I hope that you will have also made other improvements to people’s lives, even if those improvements are tiny.


I think our brains have adapted so that we are better able to cope with threats, by being able to zero in on just the incoming messages that contain the most relevant information.  A consequence of this adaptation is that our perception of our working life will encourage impostor syndrome.  Recognising this bias in our perception, for instance by occasionally taking stock, could help to tackle that.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s