Beginning my career I met a senior developer who was writing code like this:
I have done a lot of coding and used half a dozen programming languages but I did not understand what the heck the code was doing. Any code that I have written till now looked childish.
I believed I made a wrong career choice and I will never gonna be like that developer. I thought there was a mistake in the recruitment process and I am working here until they find me out. I felt like a fraud.
So, I made a promise to myself that I will work hard and prove myself before they find out my incompetence. I kept learning new frameworks, new programming languages and work harder for years to prove myself and not being caught as a fraud. Until one day, I met a developer Matt. He was a 'Real' developer-- the kind of developer that everybody wants to be.
One day Matt told me about his insecurities and why sometimes he felt like a fraud. I thought that Mat has caught me and now he is faking his story to taunt me. The truth is Matt was an impostor--like me!
I look around, I researched and found that impostor syndrome is common among developers and it is a major roadblock when they want to prove themselves. Today I will tell you how impostor syndrome is disguised in other feelings and how it is hurting you in different situations.
Impostor Syndrome: A Major Roadblock in Developer's Life
According to wiki: “Impostor Syndrome is a psychological pattern in which an individual doubt their accomplishments and has a persistent internalized fear of being exposed as a ‘fraud’.''
But you don't wake up one day and say, “OH -- Yesterday I was feeling imposturous”. It’s hard to identify impostor syndrome because it's difficult to express feelings in words.
You may say, I don’t feel like a fraud or I don't feel resemblance with your experience or wiki’s definition. There are so many variations to impostor syndrome. So in this post, I have catalog situations and feelings that indicate impostor syndrome in action.
Read these situations and find out if they match yours. Finally, I have researched all the solutions. Distilled them and create a set of tools that you can apply to cure impostor syndrome.
Here is a quick outline for situations and solutions
- When Someone Asked you a Question
- Comparing Yourself With Others on Linkedin
- Start of a New Project
- When There is a new Technology to Learn
- Because You Are Alone
- Seniors Are Not Helpful
- Grunt Work is For Juniors
- When Rework
- Giving estimates is difficult
- When Committing Your Code
- Change of Routine
- Express Feelings in Words
- Everybody has it even the ‘Rockstar’ Developers
- Keep up the Motivation
- Stop Comparing
- Accept you have Role in the Success
- Discussing With Others
- Advance Solution: Dance with it
Why the impostor syndrome happens
It is a complex subject for psychologists like Clance and Imes. But experts converge on our underlying urge to prove ourselves to our boss, teacher or even family. This can be either to please them or to gain benefits.
Proving ourselves is our basic need and similar to basic needs like survival and It is more important for every beginning developer. Unfortunately, no one is going to tell you explicitly except the HR department who at the end of the interview or at the end of probation did not call you back. Why? Because you were unable to prove yourself.
Perks For Real Developers
If you continuously prove yourself you will become a rockstar/real developer. One thing that rockstar developer can do is they work from home. Imagine a day when you don't want to wake up on the alarm clock and suit yourself for office. Imagine no commute delays or traffic jams.
You can get your coffee, open your laptop, open the repository remotely and start working right from your bed.
This is what ‘Real’ or ‘Rockstar’ developer means to me. Not what is shown as a hacker in movies.
For you, it could be different. By proving yourself you can earn more. With your enhance your skill-set and you can re-negotiate your pay package at the time of appraisal. Or you can switch jobs for more salary.
By proving yourself you can control your environment. If you don’t like the environment or the nature of your job or your manager you can switch. There are always job openings for real developers.
By proving yourself you have more time. Now you can complete the task in less time and you can use this free time for your own learning/leisure activities. By proving yourself you have the opportunity to do the real work. Recognized work--something that you can tell in parties.
The PLAN to become a ‘Real’ Developer
Our goal is to become a ‘Real’ developer. The biggest roadblock to this goal is impostor syndrome and following is the plan to achieve the goal.
Let's get to step one.
Situations and Feelings
These are the situations for developers where they feel a variation of impostor syndrome. See if any of the feelings are familiar to you.
1. When Someone Asked you a Question
Imagine when someone, junior or senior, asked you a question and you are unable to give an answer. How do you feel? Incompetent or bad?
Programming is a vast field and nobody cannot memorize everything. Even the programmer with decades of experience has to look up while programming.
So when you are asked a question and you don’t know the answer it does not mean you are incompetent. You just have one more thing to learn.
2. Comparing Yourself With Others on Linkedin
One of my habits is to browse the LinkedIn profile of other developers. When I see another developer experienced in dozen technologies and I have experience in 2 programming languages and one framework--I feel bad.
This is closely related to the highlight reel phenomenon. Looking facebook posts of your friends and see them doing all the fun and telling yourself ‘they are living a great life and I am living a miserable life’.
The problem is you are only seeing the highlights of their life. You are not looking at the failures or downtime that they have in their life. Because nobody shares them!
Comparing ourselves with others is the main source of feeling incompetent. The social media tools have amplified this feeling and it is one of the reasons for impostor syndrome in developers.
3. Start of a New Project
Recently, I started a new project from scratch. I have to figure out requirements, learn different technologies and work with abstract ideas. I feel incompetent. Working on an ongoing project is easier than starting a new project from scratch. Imagine someone developing enterprise applications for years and now has to work on the embedded processor using ‘C’ language. Therefore, if you feel bad or incompetent starting a new project then remember it is impostor syndrome.
4. When There is a new Technology to Learn
In the old days, I was working with a group of developers who were using Asp.net Web Forms that was going to be replaced by asp.net MVC.
They feel bad even threatened when the boss introduced them to MVC. Why? Were they incompetent? They were doing great work with web forms for years. They were not incompetent but they were feeling incompetent because there is a new technology to learn.
Learn anything new will always lead you to impostor syndrome. So whenever you are learning anything (driving a car or learning new framework) beware of impostor syndrome.
5. Because You Are Alone
As a beginner, mostly you are a learner in addition to the developer. In programming, your learning will never end. But as a junior, you will have to learn even more.
Learning and impostor syndrome are closely related and one of the reasons is that learning is a sole journey. People around could guide you but in the end, it is you who has to go through the fire.
This sole journey amplifies the negative feelings and developers get demotivated and think of themselves as incompetent. Beware it is impostor syndrome.
6. Seniors Are Not Helpful
Seniors developers often tell the story of their heroism. How they solve a critical problem five years ago that no one else can do. You will admire them when you listen to them. Also, visualizing their stories will make you feel incompetent besides admiration. Remember, when we compare we feel impostor.
7. Grunt Work is For Juniors
As a junior developer, you are not allowed to do any serious stuff like working on production code. You are only allowed to play in the back alley like updating the copy on a website.
This is necessary because they are testing you and would not give you the driving seat on the first day.
The problem is you are dying to prove yourself. These minuscule tasks belittle you and make you feel incompetent. Don’t be the victim of this fake feeling.
8. When Rework
For me rework means overtime. It also means shame. Whenever I made a mistake that leads to rework I feel shameful and incompetent.
This is amplified when the code is in production. Which means a lot of people are going to be affected by that. We are like other people and we make mistakes. We should not be hard on ourselves. I am not incompetent-- I just made a mistake.
9. Giving estimates is difficult
Giving an estimate for a task is difficult even for a senior developer. Giving an estimate for software development tasks is art as well as science. It will take time to be skillful in giving estimates.
When I was a junior I always gave heroic estimates. I want to become someone who can do the job on the spot or as quickly as possible. Which I could not. Poor estimation skills lead me to think that I am not a good developer.
But when I read the book Software Estimation by Steve McConnell then I realize that I was not a bad developer -- I was just bad in estimation. Here is my article on software estimation.
10. When Committing Your Code
Imagine you have completed a task and are going to commit the code. How will you feel just before you submit the code?
Because in the morning, there will be eyeballs on your code. What if the person reviewing your code catch errors. What if the person reviewing has a grudge with you and he wants to prove you incompetent. If these motion going through your head just before committing the code then this is impostor syndrome.
11. Change of Routine
As a junior developer, there is a big shift in your routine. Before joining the industry you were a student. Students of computer science in university, boot camp, online or even self-taught.
Now the routine is different. There is an 8-hour workday, commuting, colleagues and bosses. In the student days, you can sleep longer and work on your own terms. Now you will be guided by others and you have to stick to some rules.
This change of routine is exhilarating for many people. With this tough routine, they think that they are not good enough or fit enough for a programming career.
What If Above Situation/Feelings are Not Familiar
If any of the situations mentioned does not sound true to and you are still feeling incompetent. What should you do? Find is it impostor syndrome or you are really incompetent.
How would you know?
See the external factors. If anybody around you tells that you are good either explicitly or implicitly. Then consider yourself competent. This praise should be in a professional setting and not by your friends or family.
Also, look for inner motivation. If everybody tells you that you are not good but in your heart, you know that you want to be in a programming career. Then all you have to do is work hard and you will be in the league of top programmers.
Enough of diagnosis and identification now let's get to step two: the solutions.
Solutions for Impostor Syndrome In Developers
1. Express Feelings in Words
This post is inspired by Dr. David Burns's book Feeling Good. Where he teaches how to deal with negative emotions like failure, stress, anxiety and etc by putting a label on them. According to research, when you put a label on your emotions and feelings the negative effects of the emotions will be reduced.
Putting a label on feelings or describing feelings in 'words' will bring it from the emotional part of the brain to rational parts of the brain which will automatically reduce outbursts of emotions.
This is what I tried to achieve in this post. I outline situations and feelings disguised as an impostor. With this list of feelings, you can recognize an impostor feeling and say: "Oh Yes--Feeling incompetent when starting a new project--this is impostor syndrome".
Recognizing the feeling and describing them in words will help you reduce the negative impact of impostor syndrome.
2. Everybody has it even the ‘Rockstar’ Developers
When I was young I thought about ‘rockstar’ developer as someone flawless who can do any task without any errors in the first attempt.
This is amplified by the movies where one hacker writes scripts in minutes, runs the script and everything (most of the time a vault) cracks open. I know people believe who still believe in these movies. They are either junior or ignorant. They like to code as shown in the movies.
Once I attended a presentation by a rockstar developer. I was amazed by his presentation and the way he wrote code and shown the demo. I watched his tutorials and videos online. He is the kind of developer I want to be. His name is Scott Hanselman.
When browsing about impostor syndrome I was stumbled upon Scott's post on impostor syndrome. My rockstar developer thinks that he is phony--like me! HMMMM.
I was surprised and relieved to know that almost every rockstar in music, films, games have gone through this syndrome like Neil Gaiman and Neil Armstrong. They still have it but they don’t become a victim of it. Therefore knowing that even the top people in the industry have impostor syndrome will help you in relieving the negative effects of impostor syndrome.
3. Keep up the Motivation
It is very difficult to keep yourself motivated. You may feel motivated by reading about a top performer having impostor syndrome but it will not last.
I have created a tool of motivation that you can use it to keep your motivation up on-demand. I created it by documenting my progress. I use my journal to document my progress. Here is the step-by-step guide to documenting your progress.
At the end of the quarter and year, I review my past progress with the help of my journal. I always get amazed by looking at the projects I have completed. This is like a personal appraisal but an authentic one.
Keep this journal close to you and use it as harpoon of motivation. Whenever impostor syndrome hinders you, read your progress and you will be motivated.
4. Stop Comparing
Many emotions related to impostor syndrome were based on one human condition. We compare ourselves with others.
We want to be like them or want them to be like us. We forget we are different. We have different lives, different backgrounds, and different conditions. We will always be different therefore stop comparing yourself with anybody else.
Instead of comparing use the scale to calculate your competence level. Know your competence level and know the level of anybody who is ahead of you. Then just work hard to get there.
5. Accept you have Role in the Success
Recently, I heard a developer saying: "I have only 5% of the work but now it seems like I am responsible for the whole project."
Yes, he did the 5 percent work but he was a link in the chain or a part of the team. Without him, the chain will break and the product will fail. So yes he did the 5% percent work but he is an important person.
Similarly, it doesn't matter how small your contribution remember that you have contributed to the success of the project.
6. Discussing With Others
When professor Richard Felder tells his students about the impostor syndrome there was a moment of relief not only in students but in other professors as well.
The moment when you tell someone else that you have the impostor syndrome and he shares a similar experience. You will feel better.
This is what I am doing by writing this post. I am telling you about my impostor syndrome to get relief. You can do this to get relief from impostor syndrome by discussing it in comments.
7. Advance Solution: Dance with it
This is similar to dealing with any other emotions like fear. Every top-selling author when sits down to write another book he fears that he will fail. Every serial successful entrepreneur when starting a new business fears that his business will fail.
What do they do? They know there will be fear so they just learn to live with it. There is a great book and the title describes this whole idea “Feel the Fear and Do it Anyway” by Susan.
Know that there will be a feeling of incompetence or fraud and move on and do your work.
Opposite of Impostor Syndrome
Before leaving, let me tell you what is not impostor syndrome. Consider a spectrum. If one end is happiness the other is sadness. Similarly, if one end of the spectrum is impostor syndrome then at the other end is Dunning-Kruggar syndrome. It means, a fake feeling of competence. People who overestimate their capabilities.
You may have met such people but I bet that you definitely have met a genius jerk. If you add attitude to this end of the spectrum then you will get a jerk genius.
ATTITUDE + DUNNING KRUGAR = Jerk Genious.
This is someone who thinks the current organization is dependent on him. They ridicule every other developer. They are always angry, looking for other mistakes, reject other’s advice and always tell their stories of heroism. Research indicates that they are making harm to the organization even if they are brilliant.
While researching the impostor syndrome I found that there specialist doctors who treat impostor syndrome. Although, I have taken help from their published work but this article does not replace the professional help.
Everything that I shared is more of a curated work that is helpful to me and my friends.
Here are some of the great resources that I found during research of impostor-syndrome. These are amazing for anyone who is looking for more.
https://psychcentral.com/lib/15-common-cognitive-distortions/ About labeling
https://positivepsychology.com/cognitive-distortions/ Labeling and dealing with it
https://davidwalsh.name/impostor-syndrome The great post on impostor syndrome
Impostor Syndrome Wiki Page