Have you ever felt like an imposter in your software engineering career? I know I have. Many people from non-CS backgrounds describe the feeling of imposter syndrome when they’re talking about getting their first engineering job, especially during the interview process, which often feels like it favors those with traditional CS backgrounds.
What exactly is imposter syndrome? It’s a frame of mind where you doubt your accomplishments and become afraid of being found out as a fraud. It affects nearly everyone, including incredibly successful engineers. People with imposter syndrome often attribute their success to luck or the help of others rather than the hard work and effort they put in.
If you’re ever feeling imposter syndrome, you’re not alone! I’ve felt like an imposter many times throughout my career as an engineer.
Here are some tricks I’ve learned to fight it:
When you don’t know all the answers, it’s a good thing!
First, here’s my positive spin on imposter syndrome: if you feel like an imposter, it’s probably because you have a ton to learn! This can feel really uncomfortable at times, but if you think about it as an opportunity rather than as a burden, you’ll be much better off.
Remind yourself that you’re likely feeling like an imposter because you are challenging yourself. When you perceive everyone around you to be smarter or more qualified than you, that means you have a TON to learn, which is exciting. Take the opportunity to learn from others!
Fake it until you make it
When you’re interviewing or starting a new job, you have to be confident, even if you don’t feel like an expert. When I first started in my current role, I was working on a project with user-facing features, something I am more familiar and comfortable with. As soon as I finished that project, I switched into a server-side project, and it suddenly felt like I was starting a completely new job. I would be part of conversations with my team and realize I had no idea what half of the terms they were using meant. In these cases, I wouldn’t just pretend to know what was going on - I would ask specific questions when I felt that not knowing something inhibited my ability to understand it, but I wouldn’t stress out about all of the little details. I tried to focus on the underlying concepts that were most important.
There is a limit to faking it (i.e. don’t lie when asked a question if you don’t know the answer), but you also don’t have to understand every single detail of every single problem to be a good engineer. In fact, some of the best engineers I’ve worked with have faced many problems over time and have simply gotten better at figuring out how to figure things out.
Don’t compare yourself to others, compare yourself to your past self
I know it can be tempting to compare your progress to others. After all, it’s human nature to be competitive. Also, you may initially be on a team where you feel like the most junior person, so it can be easy to feel like everyone else is running circles around you. However, resist the urge to compare yourself to others and think about comparing yourself to your past self instead. Think about the progress you’ve made over the last month, 3 months, 6 months or 1 year. How have you improved?
When I was looking for my first engineering role, I was able to boost my own confidence by thinking back to what I knew when I started bootcamp vs. what I knew when I was applying to jobs. I reminded myself that before starting bootcamp, I barely knew what a function was, but by the end, I was able to build a fully functioning app from scratch. That is a huge accomplishment!
Also, think about all of the different ways that you add value. You may not be the fastest when it comes to coding up a solution to a problem, but maybe you are super organized, always test your code very well, or are very good at debugging. There are many ways to add value to an engineering team or organization, and each engineer has their own strengths. Think about what your strengths are and celebrate them!
So, what were you working on 6 months ago? Were you just starting to learn to code or were you working on your most challenging programming problem to date? Take a moment to think about where you are now in comparison to where you were a few months ago and remind yourself of the progress you’ve made.
Remember that you’re not alone
Despite what you may think, many people who you work with may feel like imposters at various times, too. Something you can do to help them is to compliment them on something about their work that you find valuable or ask them for help when you know they are more knowledgeable about a topic.
I often leave comments in code reviews asking why someone made a certain decision, thanking a coworker for doing something awesome (i.e. writing tests, cleaning up code), or when I’ve learned something from code they’ve written. Leaving comments and questions is a great way to learn how another person approached a problem, and will encourage others to do the same for you.
There will eventually be a time where you feel less like an imposter
So many people have moments like this, and you will eventually have yours too. For me, one of the first times I didn’t feel like an imposter was when I was working on setting up a new automated email. I was reading some backend code, trying to understand how the system worked. I asked the original author for some tips and he was super helpful. Then, he turned around and asked me if I could help him with some CSS. The fact that I could teach someone else about CSS absolutely blew my mind! I had just assumed that this engineer with much more experience than me knew everything, but clearly, I had something to offer him as well.
I had another experience recently that helped me feel less like an imposter. My team has a round-robin code review setup where we’re asked to review code from other engineers around the company. We often have less context on the actual changes that are being made, and simply have to jump into the code and try to understand it. I often find this challenging because sometimes the code changes are in a language I’m not as familiar with or dealing with code I’ve never seen before. However, I was recently reviewing another engineer’s code, and saw a clear bug. I left a comment, and she thanked me for catching her mistake. So, sometimes just by carefully reviewing another engineer’s work, you can catch small inconsistencies or mistakes.
As you gain more and more knowledge, whether general, or domain specific, you will start to become the go to person for certain questions and people will start asking you for help. When this starts to happen, you will feel much less like an imposter, I promise!
You will never completely get over Imposter Syndrome
This may seem contradictory to the previous section, but it’s an important point to make. As you continue in your career, you will inevitably face harder and harder challenges and you will feel like an imposter again and again, no matter what. This is ok! Remind yourself that you probably feel this way because you’re doing something outside of your comfort zone. If you need a quick confidence boost, when you need a break, I recommend finding a small task to work on that is more within your comfort zone. Getting a quick win like this will make you feel more empowered to tackle the harder problem you are facing.
Personally, one of my favorite things to do is deleting old code. It reminds me of cleaning up a mess and I get so much satisfaction from it. So, if I’m ever feeling pushed too far outside my comfort zone, sometimes I’ll just do some digging and look for some old code to delete. For me it’s an easy way to get a quick win, and someone always appreciates it!
Have you ever struggled with Imposter Syndrome? I’d love to hear about your experience. Email me at firstname.lastname@example.org!