You might read this article and think that having anxiety about not being good enough is, in itself, good enough. And no, it probably isn’t. But the reason why you have that anxiety can be a good thing. The idea behind this post is to discuss something I’ve spoken about with a lot of people: junior developers, senior developers, non-software engineers—many people. Imposter Syndrome.
Imposter Syndrome is this thing where we think our skills are not good enough. It can happen in many situations, such as when we switch jobs or join a team with more experienced developers. It’s part of life to experience imposter syndrome, and it’s actually really good that you get it; it’s a sign that you’re doing something good for yourself as you’re evolving.
Imposter syndrome only means that you’re putting yourself out of your comfort zone and that you’re evolving as a person. Unfortunately, this feeling can make us doubt ourselves, and that sure does suck.
I’ve had imposter syndrome plenty of times, and it happens less and less the longer I’ve been an engineer.
Iterations
I’ve thought about this topic every now and then and how big a part of life and our development it is. Iteration is everywhere and happens every day. It’s simply a big feedback loop.
When we’re young, we do assignments, give the teacher the results, and get feedback on why we didn’t get the highest grade.
We might decide one day to try something new in the kitchen, so we mix a stock cube and salt in a sauce and realize that both the stock cube and the salt add salt to the dish, so the dish becomes too salty, and we learn.
We build a new feature and release it, it breaks and kills production, and then we learn that if we don’t want to lock the database while we create a new index, we need to create it concurrently. So we learn.
And this is how your experience as a junior engineer should and probably is. You build something, push it to a PR, and get feedback that something might not work, and you learn and evolve.
The reason why junior roles exist in the world is that in order to be good at a job, you need to learn the job. For example, the role essentially signifies that you’re a person with less experience in the field. That’s why there are fewer expectations on a junior than on a senior, which is something I think is really important to understand.
I hope this doesn’t sound too harsh, but no one expects you to deliver top-notch results, except yourself.
My first 4 years as a developer
I started as a frontend developer at Rivercode, an agency building (at the time) mostly websites and e-commerce sites. I remember when I did the interviews, especially the technical part of it. The goal of the interview was to design and build a simple frontend that talked to the Unsplash API. I went home, built it, and sent it to my former boss, and went to the technical interview with a lot of confidence. And the reason why I went there with a lot of confidence was that I knew exactly what I was talking about because it was in my comfort zone.
I’d built a million React frontends using create-react-app and similar APIs, such as the Star Wars API. Piece of cake.
But then the real world got to me, and I started as a junior frontend developer and was assigned a WordPress site where my goal was to add all the PHP code needed to an existing template. I needed to understand PHP, SQL, MariaDB, and FTP, and I just realized that I knew nothing, and I got imposter syndrome, and I did all the things I shouldn’t do.
- I didn’t take breaks to clear my mind.
- I stayed stuck on the same problem for a long time.
- But most important, I never asked for help because, in my mind, I thought I should know all this; it’s simple.
It took a week or two before my boss at the time asked how it was going and realized that I hadn’t gotten far. He helped me to move forward, and I realized that I should have asked for help way earlier.
What I realized after that project and every new project I worked on was that I got the exact same feeling every time I did something I had never done before, and every time I finished that project, I felt more confident as I knew way more stuff.
A while later, I switched jobs, and imposter syndrome hit me again. I was building in Go, which I had only done in hobby projects at the time, but the key difference between this time and the first time was that I asked for help way faster.
I then realized that every time I had this feeling, I evolved, so I started to use this feeling as something positive and accepted that this feeling of imposter syndrome happens and it’s just a part of the process of learning.
Boosting my mindset
So why did I tell you about iterations and my first 4 years as a developer? The idea was to tell you that imposter syndrome is something we need to accept and learn to work with because it happens everywhere, at any time, and to anyone. It happened to me in my first game of basketball, and it happens only because of the pressure you put on yourself, really.
So the reason why imposter syndrome is a sign of a good thing is that you’re probably outside your comfort zone, and it’s outside of the comfort zone where you learn the most. So what we need to do is change our mindset when it hits, and what I usually change my mindset into is:
Good software is built on iterations in pull requests, bug & crash reports, production crashes, and data on how it performs. So there is no need for you to expect that you need to deliver a perfect, top-notch solution; you will get there eventually.
Take tiny steps, tiny iterations. It’s really easy to get stuck on the same problem for a long time and not get anywhere. This is what happened when I built the first WordPress site. I was stuck and didn’t get anywhere until my boss helped me. So asking for help can make you take another step, and yes, this even includes asking AI for its opinion. The only important thing with asking AI is to take its response with a grain of salt and not copy any code, but rather understand it.
The only person you are battling is yourself. The reason why you have these thoughts that you’ve taken on more than you can handle is that you have set high requirements for yourself. And I can assure you that a project built alone works way worse than a project built with multiple people, so use your team members.
You’re not hired to know everything, especially not if you’re a junior developer. Your job as a software engineer is to get a problem, understand it, work on a solution, build the solution, and ship the solution. The part where you learn the most is during the time you understand the problem and work on a solution.
Also, tech changes a lot. In 2 years, we will have new ways of working with certain technologies. Just look at how Next.js has evolved from only server-side rendering to building static pages back to rendering on the server-side, but with streaming HTML to the client.
See it from the bright side, you’re evolving. It’s a good thing.
The end
I hope this post might help someone and maybe teaches you that imposter syndrome is something we need to accept and work with, and it’s really not a bad sign that we get it. It just sucks to have the feeling of not feeling like an imposter.
I wrote this article head-banging to Skrillex’s new album while preparing to head to the basketball court, which means it’s about time for me to end this article.