Dealing with Imposter Syndrome as a Junior Engineer

Written By Rachel Opperman
Posted on
Share

Starting a new career is scary. I spent most of my life preparing to be a doctor, so when that changed and I pursued a career in tech instead, it was nerve-wracking. I always felt confident in my knowledge and skills as they pertain to biology and medicine because I had been honing them for many years. When I made the switch to software development, I didn’t have that confidence. I obtained a Master’s degree in computer science, but that was only two years of study, which, when compared to the time I spent learning biomedical sciences, felt like a drop of water in the ocean.

It took me almost 2 years and nearly 100 rejections to finally get my first job as a developer, and each time I heard that I wouldn’t be moving forward, or didn’t hear back at all, the more I wondered if I were cut out for working in tech. Every time I applied for a job, I felt that I met the requirements and that my skills were solid enough that I could do the work. But I was repeatedly told that that perception of my abilities was incorrect. Much as I tried not to let that discourage me, I’d be lying if I said that it didn’t plant quite a few seeds of doubt.

Even after getting hired at Zaengle, those doubts linger and make me feel like an imposter at times. When I get stuck on something, the little voice in the back of my head that feeds off of those doubts likes to chime in and tell me that I should be able to figure it out on my own. It tells me that the fact that I need help means all those people who dismissed me outright or felt I didn’t have what it takes were right. Additionally, the software engineering field is vast and always changing, so it’s easy to feel as though you’re not at all qualified to write code, especially if you don’t have much real-world experience.

So how do you deal with those doubts? Here are the 5 things that I’ve found helpful when dealing with imposter syndrome:

  1. Embrace the fact that you don’t have to know everything.
  2. Focus on fundamental concepts.
  3. Find the right team.
  4. Be open to criticism.
  5. Never stop learning.

Let’s expand upon each of these points.

Embrace the Fact That You Don’t Have to Know Everything

When joining a company, it’s natural to feel like you have to bring some knowledge to the table, like you have to prove that they made the right decision in adding you to their team. This is especially true once you see just how much knowledge the more experienced developers possess. It can be intimidating, which makes it difficult to ask for help when you need it. But it’s essential to keep in mind that even the most experienced developers don’t know everything. Even people who have been putting code into production for 10+ years still need to Google things or consult documentation. They still need to ask other people for help. Sure, maybe they don’t have to do it as often, but the key point is that they still need to do those things, just like you do. So the next time you feel bad about needing the help of a colleague, a GitHub issue, or a Stack Overflow post, remember that you’re not the only one, and that it’s not just because you’re a junior engineer. So cut yourself some slack.

Focus on Fundamental Concepts

In web development these days, there’s a lot of focus on frameworks, and there are a lot of frameworks. Even within a particular framework, there’s almost always more than one way to achieve the same goal. However, focusing on learning frameworks instead of on learning the core concepts behind them is a big mistake. For example, take two of the most popular front-end JavaScript frameworks — React and Vue. At Zaengle, we use Vue, but when I started learning a front-end framework, I learned React. So when I joined this team, I actually had no experience whatsoever with Vue. Problem, right? Nope.

Before I started learning React, I spent months learning vanilla JavaScript, focusing on the core concepts of the language, which are actually applicable to any programming language. Those concepts include what variables are and how they work, conditional statements, control structures, and functions. If you understand those concepts well, then you can apply them to any other programming language. From there, it’s just a matter of learning syntax. Case in point: Our tech stack also includes PHP. When I started, I didn’t know a lick of PHP. But after a few weeks of learning and doing a practice project, I was able to contribute to production PHP code.

How is that possible? It all comes down to those fundamental concepts. For example, I know how to write a loop in JavaScript. I understand how a loop works and what its purpose is. So when I had to use one in PHP, all I had to do was learn the syntax. The same thing goes for learning Vue. When it comes down to it, it’s not too different from React because both frameworks still utilize those same core concepts. Know how to use props in React? Then using them in Vue is just a matter of learning the different syntax. So focus on the fundamentals. They won’t let you down.

Find the Right Team

This point is perhaps the most important one, and I know that it’s easier said than done, especially when you’ve been trying to break into the field for a long time and you feel like you have to take the first offer that you get. But finding the right team is critical. It’s easy to feel like you don’t know anything if you’re working with people who treat you that way. That’s why you have to find people who remember what it was like to be a junior engineer, because then they’ll be patient with your questions, be more than willing to help you and point you in the right direction, and even make it a point to ask you for help with something if they know that you can help. Believe me, this is a big confidence booster.

With the team here, I was fortunate enough to find people who have those qualities. In fact, before they hired me, they were pointing out that I know more than I realize, and that I have to give myself a break when it comes to comparing my skills to those of people who have years of experience in the field. In an interview with Phil and Jesse, I started to say that I’m fully aware of the fact that they know a lot more than I do, and they both immediately stopped me in order to emphasize that, “It’s not more, it’s just different.” What I took from the exchange was that they know things that I don’t, but I may know things that they don’t. In short, they were telling me that I do have useful knowledge and skills and that I shouldn’t be putting myself down.

When dealing with imposter syndrome, that’s exactly what you need, so it’s important to make sure you find people like that. Don’t settle for the first opportunity that comes your way if you can tell that it won’t be the right environment in which to grow.

Be Open to Criticism

It’s a fact of life that, as a junior engineer, your code is going to be criticized, and it’s important to be open to criticism and take it the right way. You have to remember that the people who are reviewing your code and suggesting changes are doing so in order to help you improve. If you get offended by their suggestions, then learning and improving your craft will be an uphill climb. Your team members know what they’re talking about, and they’re not picking on you by asking you to change things, or by asking about your reasoning behind something. They’re just trying to help you get better. If you keep that in mind, then your code will improve and you’ll learn a ton. You’ll find that, over time, they won’t request as many changes because you’ve incorporated what they’ve been trying to teach you into your future code.

Never Stop Learning

One of the best ways to lessen the feeling that you don’t know enough is to keep learning, to keep expanding your knowledge base. If you don’t know something, or you feel like you don’t know it well enough, then go learn more about it. In doing so, you’ll help to assuage that feeling of inadequacy because it’ll be one less thing that’s on your list of things you don’t know. Most importantly, never be satisfied with how much you know. I work with a group of very talented, experienced engineers, and what makes them so special is that they continue to learn. They read articles and blog posts, take courses, ask each other for help, and learn from each other. They recognize that there’s always something else they can learn, some way in which they can improve. It’s that thirst for knowledge, that willingness to be a lifelong student, that can really separate the good developers from the great ones. So if you want to have more confidence in your knowledge and skills, then just keep learning and remember that there’s nothing wrong with needing to learn something. It’s not just junior engineers who need to learn. Engineers of all skill levels always have something to learn.

Keeping these 5 things in mind helps me when I struggle with imposter syndrome, and hopefully they can help you, too. I’d also like to note that imposter syndrome isn’t something from which only junior engineers suffer. There are plenty of developers with years of experience who still suffer from it because, in the world of software development, there’s just so much to know. But whether you’re a junior engineer, a senior engineer, or anywhere in between, always try to remember the most important thing: Cut yourself some slack.