"Everyone else knows so much more than I do."
"What value do I bring to the team?"
"Am I enough?"
"Do I belong?"
These are all thoughts that have pervaded my mind at one point or another. These feelings of doubt, of not knowing enough, of being an imposter, are extremely prevalent amongst those starting out in tech— especially amongst those who are underrepresented or come from non-traditional backgrounds.
Personally, I minored in computer science, but even throughout my computer science courses, I've had a creeping feeling that I didn't quite belong or "fit the mold" of a software engineer, whatever that meant!
I am now a little over two years into my career as a software engineer. Recently, I've had a strange realization that much of the self-doubting thoughts I held when I was first starting out has faded away. Not to say I never experience them, but in these past two years, I've grown more confident, learned a lot, and changed in ways that I can't fully put into words.
If I could go back in time, here are some things I would have told myself two years ago. I hope this is helpful for anyone starting a new career in software engineering!
You may have a preconceived notion of what a software engineer looks like. You may feel like you don't belong in tech because you're xyz. Let go of those notions. The field of software engineering is beyond what you've see portrayed on media or the confines of your classroom.
There's no doubt that the field of tech, and software engineering in particular, is lacking in diversity. But that is in no way any indication of how the field should be.
From those who have been coding since age 5 to those who wrote their first line of code at age 30, you're going to meet extremely bright software engineers from every walk of life. You'll find that every individual has an immensely valuable and unique perspective to offer, including yourself!
As you start your new role, you may be flabbergasted by how much you don't know. You may compare yourself to your more experienced coworkers. In fact, you may put them on a pedestal and think, "Damn. They're so smart. How am I ever going to be like them?"
But the truth is, this feeling you have of not knowing anything is extremely normal when you're starting out. You're never going to know everything and you're definitely going to make a lot of mistakes. In fact, you'll realize that everyone makes mistakes. No one knows everything — not even the most senior member of your team. Learning to deal with ambiguity is a huge part of software engineering.
At the very least, as you become more familiar with the codebase and technologies you're using, that feeling of "Ah! I don't know understand anything!" will go away. You will start to develop your own opinions and thoughts around what's good and what's not. Discussions around the codebase that didn't make sense to you in the beginning will start to click. You will find your voice.
Production-level software development is an entirely different beast from personal or class projects. When you're new, you may work hard to "catch up". Learning a new technology working in a new team, and making sense of an entirely new codebase can be mentally exhausting. You may pass out after work and not want to go anywhere near a computer screen. You might feel guilty and think,
"Am I doing enough? Should I be coding outside of work?"
That answer is going to vary from person to person. Just remember that there are various ways to learn, grow, and expand your knowledge within software engineering beyond online tutorials and books. This is something I wish I had known sooner.
I've always love listening to podcasts. It never occurred to me until recently to listen to software engineering related podcasts. I've been amazed at the abundance of amazing content out there whether it be discussing a particular technology, career development, soft skills, etc.
In addition, there are meetups and organizations devoted to various technologies or causes within tech. You'll no doubt find a community that you identify with.
The feelings you experience, the career questions you have, and the technical challenges your team face are likely not unique. Finding opportunities to learn from others outside of work can give you new ideas to share with your teammates, bring you fresh perspectives, and also deepen your sense of belonging in the developer community.
When I was a college student, I remember not knowing at all what I wanted to do. I hustled away at career fairs mostly terrified at the thought of not having a job lined up. At the time, what I prioritized most was financial stability. I didn't know what I wanted from my career. I grew up with the idea that work was a means to making a living so finding fulfillment through work was not anything I had thought about.
However, when I started my first job, I quickly realized that something didn't feel right. The feeling of discontent I felt propelled me to think more about what I actually wanted. I ended up finding a new role at a smaller startup whose mission I identified closely with. That was in no doubt, one of the best career moves I've ever made!
If something doesn't quite feel right about work, take note of it but don't freak out. Remember, it takes time to figure out what you want.
- You belong.
- No one expects you to know everything
- Keep expanding your world outside of what you see at work.
- What you want from your work may change, and thats completely okay.
There can be a lot of ambiguity and self-doubting as you navigate a new codebase, technology, and team. Understand that these feelings of self-doubt you experience are normal, and may gradually fade away. Continue learning and trust that you're growing. :-)
I hope this is helpful to anyone who is early in their career!
Thank you for reading until the end! I'd love to hear any thoughts you have down below.