I was hired as a mid-level engineer, but I'm performing at the level below it. I had about a year and a half of experience coming into my company but didn't get much from it due to multiple re-orgs. In hindsight, I was a poor hire for my role and have felt this way the entire time. I am not interested in the niche and motivation is a struggle at times. I stayed because the team was really strong and I thought I could focus on the coding and grow technically. That was a mistake.
Fast forward a year and a half later (now), my manager tells me informally that my delivery is ok, but the way I go about my work needs improvement and I'm not growing, so I am performing at a level below. I need a lot of help from other engineers. And that I need fewer comments on my diffs and to do more research on problems because I'm not problem-solving well enough to be at my level. He's completely right. The team is full of high-performers and I know that I'm doing poorly by comparison. But I'm already consistently overworking into the evening and weekends.
I'm also hitting the limit with my mental health. I am putting in effort, but am being told it's not enough. For example, I spend some time understanding X and think I understand it, but teammate questions me in a way that makes me apply that knowledge and I realize my understanding is not so good or I did not think about it that way, so I am ashamed because I have spent a lot of time working on the task, but have failed to deep dive into this part. Or my teammate asks me for my thoughts on how to make something better, but nothing really comes to mind. How do I work on this behavior?
Some other questions:
Sorry to hear - Things are definitely bad, and I'm pretty sure you're at risk of a PIP. 😢 That being said, let's figure this out together. I think this is salvageable, especially since you were hired at L4. If this was L5 or L6, it would be far trickier.
I have a lot to say here, so I'll outline a step-by-step process across multiple comments:
Is this a sign to leave my team or company? And the profession? Despite my best efforts, I'm disappointing my team and it's taking a toll.
No and no. People get over-leveled all the time. It happens. Doing the time math, you were hired in mid-2022 when the market was at peak and layoffs weren't really a thing yet. That was also a time before RTO, and remote work is devastating for earlier-in-career engineers like yourself. This isn't your fault.
I haven't been served a PIP yet, but is this a sign that it's coming?
I think this is likely "pre-PIP", and whether it comes will depend mostly on the next 2 months (the remainder of Q1). However, I strongly believe that you can produce clear, positive, and impressive behavior change within 2 months. 2 months is a long time.
Naive take, but is it a bad idea/even possible to ask for a downlevel? The reasoning was that I'd rather keep my job than lose it.
I wouldn't throw in the towel yet, and the policy here will depend on company. Meta was pretty much 100% against it (there were very, very, very few exceptions). If the PIP does come, then you can try this as a last resort, but I wouldn't dwell on this right now.
Any advice?
I know that this is easier said than done, but believe in yourself. The only true limitations a software engineer has are how fast they can type and speak words to people. At the end of the day, we all have the same 24 hours, including your high-performer teammates. The difference between a L6 and an L4 or a high-performer vs. a low-performer is that the high-performing seniors are making better decisions across the hundreds of micro and macro decisions they get presented throughout each day.
Thanks Alex. I had a follow-up with my manager recently. I presented a doc on my growth gaps based on his prior feedback and the role guidelines and analysis on my most recent code commits to discuss the code metrics we focused on. But my manager said it was less about the number of comments and the small issues we pointed out in the code and more about reducing the amount of back-and-forth and building trust among my teammates. He said he would mainly rely on peer feedback as a sign of improvement. But there was some mention of metrics like the number of diffs compared to the rest of the team and less-back-and-forth sounds like fewer revisions. I asked him for specific examples for improvement and he told me it was in everything I worked on. So these points felt pretty demoralizing. I'm not sure how supportive my manager is. He's been pretty hands-off so far.
He also asked me to set some milestones for my current project for this quarter and he'll evaluate whether I'm meeting those deadlines and matching the standards for code quality. I'm supposed to get my formal performance review in the coming weeks, so am feeling antsy.
What your manager says makes sense: The subjective feedback from peers is the most important angle at the end of the day. Engineering metrics are just really tricky to talk about, which is why managers will almost always give a "politically correct" answer when they're brought up (i.e. "There's more to it than just numbers"). But at the end of the day, numbers do matter:
In terms of your manager's level of support, it feels at least neutral to me. Your manager isn't reviewing your diffs (a good EM shouldn't be), so they need to get this signal from your teammates.
Make it your goal to dazzle your code reviewing colleagues with immaculate quality. If you want an in-depth example, check out this GitHub PR: https://github.com/Gear61/tcg-android-archive-and-feedback/pull/19