Taro Logo
2

Feedback that I'm underperforming for my level. Is this PIP? What now?

Profile picture
Mid-Level Software Engineer [L4] at Taro Communitya month ago

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:

  • 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.
  • I haven't been served a PIP yet, but is this a sign that it's coming?
  • 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.
  • Any advice?
295
7

Discussion

(7 comments)
  • 5
    Profile picture
    Tech Lead @ Robinhood, Meta, Course Hero
    a month ago

    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:

    Clean Up Your Mental State

    • Software is a brutal field where a burnt out engineer working 80-work weeks can easily only be productive as an engineer with a clear mind working 30-hour weeks (yep, not even 40). I'm 99% sure you are somewhere in this camp.
    • At the bare minimum, spend a weekend pretending that this isn't happening. During those 2 days, do something fun and live your life, preferably with friends and family.
    • If you have some PTO stored up, try to take 1 week off (9 days if you have a weekend on each side of it). Tell your manager that you understand the feedback (and appreciate it), so you need this time to come back refreshed to earn your spot on the team.
    • Come back from whatever break you take recharged, so you can actually follow through on my next steps.
  • 4
    Profile picture
    Tech Lead @ Robinhood, Meta, Course Hero
    a month ago

    Create A Doc Of Your Diff Shortcomings

    • Someone repeatedly getting 5+ comments on their diffs is definitely a red flag, especially at L4.
    • The good news is that these comments will rarely contain completely unique types of feedback after 3+ months.
    • I have reviewed literally thousands of diffs from L3/L4/L5 engineers, and 90% of my comments are coming from ~50 patterns. Assuming 5 comments/diff, you should exhaust this in 15-30 diffs or 1-2 months at most companies.
    • Go through your past 25 diffs at least, look at the comments, and extract those patterns into a checklist you run through pre-commit.
    • You can dig deeper into this topic here: "How to ensure mistakes do not repeat?"
  • 4
    Profile picture
    Tech Lead @ Robinhood, Meta, Course Hero
    a month ago

    Level Up Your Technical Planning

    • A big piece of the L3 -> L4 jump is a clear evolution with proactive thinking around code (i.e. how to write it well).
    • This is reflected in the scope taken on. With an L3, I expect them to take on tasks that are 1 month or less in time-scale. With an L4, I expect them to own meaningful slices of entire projects that are 1-3 months in time-scale (sometimes an L4 can even own the entire project if the scale is local enough).
    • With this increased time-scale, it is extremely foolish to tackle your work without a thorough plan. So how does this manifest? Like in my prior comment, as a technical document.
    • For anything >1 week, I recommend using whatever task-level object you have (Jira ticket, Asana task) to put down details (project context, code structure strategy, edge cases, rollout plan).
    • For anything >1 month, I recommend making a full-on product spec/system-design doc. It's like the task-level one but in far more detail.
    • After you have created these artifacts, socialize it among the team to get feedback. If the project is big enough, book a meeting. Treat all the feedback as a gift and address it ASAP.
    • For a great resource to model off of alongside a more thorough breakdown of steps, check this out: System Design Masterclass: Taro Playlists
  • 4
    Profile picture
    Tech Lead @ Robinhood, Meta, Course Hero
    a month ago

    Relentlessly Sharpen Your Productivity

    • Go as scorched earth as possible on your calendar as you can. Delete any meetings where you don't have a >20% chance of speaking within them. Identity meeting series where you're just sitting through them and kill those.
    • For your remaining meetings, group them up on certain days as much as possible to create focus days where you can do deep work.
    • Have Slack/Teams closed throughout the day. Only open it 3 times a day to batch responding to messages (beginning, middle, and end of day).
    • Ignore tasks that aren't part of your core roadmap work. Learn to say "No". Follow the advice here: "How to figure out what the most important projects are?"
    • If you have 80 minutes, go through this: [Masterclass] How To Write Better Code Faster As A Software Engineer
  • 4
    Profile picture
    Tech Lead @ Robinhood, Meta, Course Hero
    a month ago

    Answering Your Questions

    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.

  • 0
    Profile picture
    Mid-Level Software Engineer [L4] [OP]
    Taro Community
    20 days ago

    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.

  • 0
    Profile picture
    Tech Lead @ Robinhood, Meta, Course Hero
    20 days ago

    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:

    • If an engineer always gets 10 comments per diff and takes ~5 revisions to land each commit - There are very few engineers who can do this and still be meeting expectations.
    • If an engineer only gets 0-1 comments per diff and lands their commits on the first try 95% of the time - In 99% of cases (assuming the team is giving thorough code review), this means that the engineer has stellar code quality and is likely a high performer, especially as an L3 or L4.

    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