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:
Update for anyone interested. With Alex's guidance from the comments, I worked to turn the pre-PIP around.
The highlights:
- I immediately started candid conversations with my manager on expectations and what gaps I was missing. I spent my 1:1 meetings with him driving this myself. Inspired by this 1-1s are meant to be awkward video.
- I analyzed my last few diffs and created a doc of my diff shortcomings. Briefly presented it to my manager and it made a good impression. It was also a great exercise for myself in reflecting on my code quality.
- I dropped responsibilities that weren't in my manager's expectations and blocked huge chunks of focus time on my calendar.
- Followed advice in How To Write Better Code Faster As A Software Engineer and Level Up Your Code Quality as a Software Engineer Taro course.
- I went around asking my teammates for feedback (having awkward 1:1s again) and improved on it.
I landed in the Meet Most Expectations bucket during my performance review. They usually put engineers with this rating on PIP, but my manager noticed my improvement and did not. I was very lucky to have a manager and teammates who acknowledged my work, provided candid feedback, and believed I could turn things around. Fast forward to now and I'm consistently at Meeting Expectations now. I am doing relatively much better on the team and couldn't have done it without Taro!
I wanted to give kudos to Alex for his fast response to my question and guidance. I never would have been able to iterate on the critical feedback as well without it. Also want to shout-out Rahul for making the Ultimate Performance Improvement Plan guide. Though I was ultimately not put on PIP, the guide clarified the process for me and assuaged many of my fears.
Wow this is so awesome to hear! Meeting expectations at tech companies is actually super hard and great to be doing. Amazing work! I think the cool thing is also it's almost a blessing in disguise where it sounds like with the help of Taro you debugged many things about the way you were working so you can actually ride a rocket ship of excellent practices for how to be as a software engineer towards future promotions now.
This is amazing, so glad I was able to be helpful here ☺️
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