A 2 minute detour in a conversation with my mentor at my work, Gusto (we're hiring... a lot1!), connected the dots on big trends in the software industry that are so foundational, I am embarrassed to say, I missed them.
The last 30 years roughly fall into three eras with regarding to how we evaluate the performance of software engineering teams.
Pre-Agile: Plan Accomplished
Make a plan for what you are going to achieve. Communicate the plan. Give progress reports on the plan. Track and evaluate how much you completed the plan.
Pros: You get really good at accomplishing your plans. Cons: Sandbagging of goals (so plans ar accomplishable). The nagging question: Was there an opportunity to do something better than the plan?
Agile: Velocity Maintained
Plan for what you want to achieve. Break it up into really small pieces. Estimate the complexity of the pieces. Allow for feedback to change the order and composition of the work. Track and evaluate how much complexity you work through in a timeframe.
Pros: You get really good at breaking up big work into small work (and can get more feedback as a result) Cons: You don't have to get feedback.
Post-Agile: Impact Realized
Make a plan for what you think will be impactful. Work on what is impactful (more or less related to the plan). Track and evaluate how much impact you make.
Pros: You get really good at talking about impact. AND... Achieving impact on metrics that the business cares about creates complete alignment between software engineering team and business. Cons: The higher the level of team/engineer, the higher the demanded impact is, the longer it takes to achieve -> Evaluating impact over time gets really difficult.
Which era do you live in?