Throughout my career in tech (which honestly has not been that long), I've had two very distinct thoughts for a prolonged period.
One of them is "My goodness, everyone's smarter than me, I know nothing! I need to up my game otherwise I'll be outed as the imposter" and the other one is a contrasting "I'm not learning a lot, is there nothing left for me to learn? Why is there nothing challenging left?"
As engineers, you can probably already identify these thoughts as being part of "Imposter Syndrome" and "God Complex" respectively. But there is some more nuance to it. People can experience these thoughts in a matter of minutes (Going from "What in the world is this bug?!" to "Aahhhh this was such a simple yet confusing thing to fix, no one would have ever caught it except for me"), but from a career point of view, these thoughts arise at much longer time intervals, say, weeks or months or even years.
These phases are cyclical, you keep having these feelings as you go through your career, simply because of two facts:
- Given enough time, there's nothing you can't learn.
- There's never a single point in time where you can sit down and say "I've learned everything".
Phase 1: I know nothing
This is usually the phase all engineers start with. In fact, this is the phase all "humans" begin with in general. You're straight out of whatever you've been learning for a while, or a course, or college, and are part of a small team or are thrust into a large team at a large organization and everything is overwhelming.
This is the phase where you constantly feel like an imposter, that your abilities are not up to the expectations of your peers and that you'll never be as good as them. Now, you could accept the fact that being the "best" isn't real and that there's always something to learn and learn as much as you possibly can from everyone around you.
You will most certainly feel like you'll be "exposed" but it's important to know that there's no one in the world, who is good at their job, that doesn't feel like an imposter. It's part of the job description. The only ones who are not imposters are the ones who constantly feel like they are.
Regardless of how you feel, this is the phase you inevitably grow the most in. To grow, you need people around you who are smarter than you and this phase perfectly sets it up.
It is worth noting that you will have this phase several more times in your career, and most of the time it will come when you're joining a new team and exploring a new codebase that has a different way of working than you are used to. This is a phase where you can make mistakes and rub them off as caused by a lack of context, get battle scars that enrich your career due to experience, and try out things you wouldn't usually have time to do otherwise.
Put your head down and learn. This phase is a blessing, take it one day at a time and know that the point of feeling like "there's nothing left for me to learn" is around the corner.
Phase 2: There's nothing left for me to learn
As a Software Engineer, you're going to encounter this phase less frequently than Phase 1.
Most people confuse this phase with a temporary "God Complex", which is a completely different feeling you get when you feel like a God (Obviously) after solving a difficult bug that's been bugging you for hours and goes away the moment you encounter another bug in your code.
This phase is borne out of a lot of factors, including:
- Lack of growth in one's current position which can arise from:
- Mundane tasks on a day-to-day basis
- Being the smartest engineer in the room, and hence the role becoming that of a "context-machine" or "a rescuer" when others have a problem.
- Lack of challenging topics to learn from or newer avenues to explore.
- Vagueness in terms of where one's career is going after reaching a point of proficiency in one's current role.
Unlike Phase 1, this phase doesn't stay for very long if you're a curious enough engineer. Curious engineers can find new avenues to learn from, in and outside their jobs (In fact, great engineers make a habit of it) or actively lobby for newer and challenging initiatives to be part of.
Great engineers also know that there is no end to learning, they might feel like there's nothing left to learn but they realize it's only a very small subset of what is out there. They might call themselves an expert at Firebase but even something like Firebase has nuances and capabilities that they'll never fully know of.
No one stays in one phase forever. If you've stayed in one for a long time, it's time to sit and reassess your priorities and where you're headed.
This phase can also be a comfortable point for a lot of people who have already been in the industry for a long time and don't "feel" the need to grow any further and want to transition their focus to other more important priorities in life.
As an engineer, you'll have to learn to let go of your inhibitions in either of the phases of your career and more importantly, to live with these phases. We're blessed with a field that is constantly evolving and change is the only constant, feeling like an imposter is a part of the growth trajectory, and feeling like you don't have anything left to learn is a chance for you to take a break from the hectic cycle of learning-unlearn-relearn.