ArticlesEngineering

Giving your best

A loose framework for mentorship & evaluating performance

I have been a technical / team lead at Stripe for about three years now. I came into the role out of necessity. There was a gap to fill as my team was relocated and I was the only one to choose to move with it and stay on the team. It was a tough situation, essentially rebooting the team from square one and I was that square.

The team has grown in both scope and humans-working-on-it size and I found myself playing a larger role in career development. People want to know how they are doing all the time, and I need answers for them.

I'm fortunate to not have to evaluate people alone. Many people take part:

  • The team's direct engineering manager and management chain
  • Other members of the team
  • Company criteria for job expectation for each role
  • Various unbiased committees

It's a big machine so I can choose where I spend my time in contributing to it. I've been developing and experimenting with this idea of putting an emphasis on "giving your best."

The cliché explained

"Giving your best" is subjective. I am not asking anyone on the team to give me my best.

Saying what should be done or what should have been done does not scale. We need to grow competent individuals who can act with autonomy. We have to motivate and improve the individual.

It's lazy to deliver feedback like "You should have done X." You may have decades of experience. Depending on your hiring process, the other person can be totally fresh to even more experienced. Between you and them there are years of non-overlapping experience that can make you think differently about any given task. We have to meet people where they are, not where we are or where anyone else is.

So if we limit ourselves to evaluating the individual in the absence of others or ourselves, we must evaluate like someone like they evaluate themselves. So we have to ask them, "What can you do better?" And hold them accountable to doing just that.

That framing makes everything easier. Say they mess up something, there will only be two scenarios:

  1. They didn't know they could do it better. You have to teach them how (and teach them how they can learn how).

  2. They already knew at that moment they weren't doing their best. You dig into why they choose to not do their best and orient them towards doing so next time.

Handling those two scenarios well, we need to:

  1. Keep giving them new problems to solve (easy in a software engineering job). They will develop their own notion of what is best by drawing from these experiences.

  2. Observe when they continue to make the same types of mistakes multiple times. This is where something is going wrong, so we need to dig in and hold accountability.

The final outcomes:

  • (Best-case) You're systematically getting people to do their next best work every time.
  • (Worst-case) You're giving plenty of feedback such that it won't be unexpected when someone is let go for poor performance.

Dealing with repeat offenders

It's an interesting situation when people make mistakes after you've told them not to because getting to the root of it requires a lot of introspection. There are many ways things can break down:

  • You've given the feedback incorrectly. "Object-oriented programming is bad," is a really fun snarky comment to say but terrible feedback. Something abstract like that needs hours to unpack and if you're not willing to commit, you need more tactical feedback.

  • They said they did understand, but they did not understand the feedback. The relationship isn't healthy enough to facilitate giving feedback. Habits borne from past work experiences die hard and new relationships need some loose "rules of engagement." You might critique through authority, not through reason and transparency.

  • They said they did understand, and they did understand, but for the next problem they didn't think the feedback was applicable. This is where we think, "oh this person just isn't smart" because they can't think to our degree of abstraction. We have to give more concrete advice (tactical) and improve their abstract thinking (increase autonomy).

  • They said they did understand, and they did understand, and they thought the advice was applicable, but didn't apply the feedback due to competing factors. Again, habits bore from past work experiences die hard. We have to hash out from the basics what trade-offs are appropriate and establish shared mental models.

  • They said they did understand, and they did understand, but don't think the feedback is right and so don't apply it. Resolving these breakdowns is absolutely key to fostering autonomy. It sucks they didn't listen to you but they had a mind of their own to disregard a direction. That's pretty awesome! You want peers with a diverse set of opinions. But you can't lack trust or integrity either. Invite proactive push-back, give their weak arguments more ammunition even if you disagree, foster a culture of laying it all out.

  • They applied the feedback too much. We have to again weigh trade-offs and share mental models.

  • They applied the feedback, and you were both wrong. Make sure you both are learning from this.

With so many ways things can break down, we must keep an open mind and prepare for lengthy discussions to really resolve issues.

Evaluating peers

Take stock of repeat offenses after some time and whether:

  • They are insurmountably incompetent. (They aren't improving.)
  • They are competent but lack a path to autonomy. (They are improving, but not at a fast enough rate.)
  • You suck at mentorship. (You cannot properly assess the situation.)

The incompetent people have to go. The competent but not autonomous people get a runway that you (or the organization, business) can afford, but then also need to go. If you are in a position where your job is mentor and you can't evaluate, you need to find a new role. This is the hard and harsh part, but everyone's time is limited.

You can't be spending more than, for example, 15% of your own work time helping someone else. You can't re-do other people's work for them later. You have to be solving the problems well enough to not have to come back to them for quite awhile.

You can't be mentoring a competent student forever. You can only aim to have them move on for better pastures or (the best) end up mentoring you (for a bit).

Not everyone wants to be a mentor and that has to be okay. Mentorship is a ton of work to do, to produce a good outcome or not. Bringing people along is really impactful because it feels like a positive multi-level marketing scheme. But some parts of a business don't need to flourish like one. You need to find a good place to do your best work, whatever it is.

This is massively important: if you (or your company/organization) can't follow through and let people go and put people in proper roles, then prepare for a grind. You will improve people marginally, but you will not be healthy. Find a company that can follow through.

Capitalization

Businesses almost always fail to capitalize on mentorship efforts (and use that as reason to not even try). You train the best people and they leave for absolutely good reasons and go off to live better lives, and the business doesn't get a cut. For the business it may have just been better to accept some mediocrity to stamp out anyone else's chance at success (zero-sum fallacy).

I mean really: you follow this "giving your best" framework and what are you left with? Only with some of the most productive, challenging, rewarding periods of your career. It's really hard to put a price on that.