Fighting impostor syndrome in software engineering
What is causing impostor syndrome?
❗Disclaimer:
Impostor syndrome is a psychological state and I'm not a domain expert. I just learned how to overcome it by myself.
It was when I started freelancing that I experienced the impostor syndrome for the first time. I had to find my own clients and the thought that there is something I don't know caused me to panic.
In my mind, that's because "not knowing something" leads to "not being able to implement something". Which leads to "client will notice and end the contract".
At the end of the day, I'm gonna be incapable of providing an income for my family.
Impostor syndrome is especially widespread in software engineering. There are so many tools. So many programming languages. Countless ways to do the same thing and we don't know all of them.
Naive solution for impostor syndrome
To me, impostor syndrome surface when I figure that I don't know something - new.
Since that's the case, an obvious solution is to - Learn what you don't know.
In the short-term, that's good. You'll expand your knowledge and feel good. Yet, we forget that the more we learn, the more we discover how little we actually know.
It spirals down without control and the impostor kicks in more often and harder.
Social networks and interactions have an enormous negative effect
Scenario #1:
A colleague or coworker is tweeting about something you haven't heard of so far. To make things worse, others are engaging and talking about the same topic.
My mind:
- How is it possible that I hear about this for the first time
- Am I wasting my time on irrelevant things, while others are improving their knowledge.
- Who knows how many other things I don't know.
- I am plain stupid for this job.
- How did I even make it so far.
- I hope no one will notice that I don't know this.
- Quickly, let's learn all about it and go back to that discussion to show that I'm worthy as well.
Reality
As you learned something new, so did your colleagues. They wanna share that and ask for feedback, as you do.
There are hundreds of things you know of, that they haven't heard. But that's not the point.
It's completely ok not to know everything, or not to be first that's informed. Chill.
When the time comes, you'll take a couple of hours and go through unknowns. Even better, you now know whom to ask for help.
Scenario #2:
There is a new tool/library/architecture/language, and everyone's are loosing it's mind about it. Reddit is on fire. Twitter is trending.Yet, I have no idea where to start.
My mind:
- If I don't learn this new thing in 5 days, I'll be out of job in 6 months.
- There are so many libraries and architectures I still don't know.
- How can it be that other know all this stuff, am I late to the party?
- How did I even graduated CS without knowing this??
- I should accept I'm not fit for this job. I'm just pretending to know something.
- I am a fraud.
Reality
Development tools and libraries are also business as any other. Developer advocates are paid to talk about brand new things. It's a sales process, and you are the buyer. Conferences are organised, meet-ups. Adoption of new library, or programming language will determine the future of specific technology and its company.
I'm using social networks to learn and expand my knowledge. In such a process, I discover many smart(er) persons with lots of accumulated knowledge.
Instead of learning from them, I start asking myself "why don't I know those things as they do".
Again, it's a downstream spiral without an end.
Awakening
An awakening moment happened to me a couple of years ago when I was reading about another new thing. At one point, it simply made no sense anymore. Every month, something extraordinarily new. How can it be!?
We're using "A", adopting "B" and now you're telling me that "C" is actually the best and "D" is in the canary line already? Oh come on!
That's when I could sit and see with my open eyes for the first time.
"A" is working for decades.
"B" is working for a couple of months
Either of those will do the work. And I know both of them. I picked up "B" quickly. Actually, it took a couple of days.
So I'm not stupid. I'm not a fraud. It's the hyper-production of all new technologies that is happening and we as software engineers are victims to it.
How to control Impostor?
Impostor syndrome will kick in from time to time. That's inevitable. When it does, be wise and say to yourself:
This new thing - is it so urgent that I should pick it up today? - I can tell you straight away - not really.
Will I become obsolete if I don't learn this new technology? - No you will not, trust me.
Everyone's losing their mind about this new thing. Should I? - No, let them test it and you wait for a stable release. If you're curious about it, sure, go ahead and explore. But usually, you're just a beta tester and that thing will change by the time it goes to a stable track.
How come I never heard about X? - That's fine. You have it now, thus you're not late.
Dear reader, listen,
You came to this point of your career only with your accomplishments. No one did it for you.
Retrospect and see how long does it usually takes to go through some new fancy thing. It's days. In worst case, it's weeks to pick-up and start working. Thus, why worry.
We all start running at different time and it's normal for some to collect more experience. Yet, as time goes on, that experience and knowledge will converge.
When does the magic happen?
By saying "I don't know, can you explain this to me please?" That's when you can call out a complete victory over Impostor.
There is no shame in admitting that you don't know something. What's more, it'll show others that you're just like them, because they are fighting the same battle. Just watch how the magic unfolds with your colleagues when they admit they don't know it either.
A side-effect of this is the reduction of your own ego. No ego = supportive team culture. And I think it's beautiful.