⚙️ Output vs Outcome
Let's talk about Output vs Outcome.
🤔 Why you should care about it
"I directed our focus less to the prize of victory than to the process of improving—obsessing, perhaps, about the quality of our execution and the content of our thinking; that is, our actions and attitude. I knew if I did that, winning would take care of itself, and when it didn't I would seek ways to raise our Standard of Performance." - Bill Walsh, former head coach of the San Francisco 49ers, in The Score Takes Care of Itself.
During his ten-year tenure as head coach of the San Francisco 49ers, Bill Walsh transformed the team from the worst franchise into one of the bests. He defined and enforced a clear Standard of Performance, focused on outputs instead of outcomes, for each player.
😫 Problem(s)
Outcomes don't allow improvement —> it's tough to help a team member improve when looking only at their results.
You can't control outcomes —> luck and external factors can come into play to modify what would have been a good outcome otherwise.
Outcome and performance are not the same —> good outcomes are not necessarily the result of good performance and don't indicate if someone can repeat them.
😃 Solution
To help team members perform at their very best and allow managers to judge their performance fairly, you should create and enforce a clear Standard of Performance, the output (actions and attitudes) required for a performing engineering team.
The below table is an example of what those actions and attitudes would look like for a software developer.
Performing | Collaborating | Improving |
---|---|---|
Writes down technical architecture and assumptions before starting to code | Attends and participates in daily team meetings/standups | Spends time every week reading about key areas of expertise and sharing findings with the team |
Uses Clean Code principles (KISS, DRY, YAGNI, Composition over inheritance…) | Analyses and discusses new features with Product Managers before they become coding tasks | Spends time being mentored / peer programming with senior members of the team (or external experts) |
Schedule uninterrupted coding sessions rather than doing multiple things at the same time | Spends time mentoring / peer programming with junior members of the team | Attends industry conferences and meetups related to key areas of expertise |
💡 Key Concepts
Outcome —> the result or effect of one or multiple actions.
Output —> the sum of actions and behaviours.
Performance —> the execution or accomplishment of work or actions to accomplish a specific outcome.
😡 Detractors
"Ouputs are not measurable." —> it's false, but they're harder to measure. When measuring an output, you can leverage other team members' appreciation of the output and its repeatability.
"Only outcomes can allow you to measure if you're delivering value." —> I'm all for measuring outcomes; they're super important. But they're also unfair, hard to predict and don't help team members improve.
"It counter-productive to blindly follow processes if they don't make sense." —> the idea here is to ensure that the outputs in your Standard of Performance generate the desired outcomes. If not, you need to update and improve the Standard of Performance.
📚 Top book
The Score Takes Care of Itself: My Philosophy of Leadership - Bill Walsh, Steve Jamison, Craig Walsh.
🗂 See also
📝 Top content
📝 A Standard of Performance for Engineering Teams - The Unicorn CTO —> my take on how you can set up a Standard of Performance in a software engineering team.
📺 Joe Montana and Matt Maiocco talk Bill Walsh's "The Score Takes Care of Itself" - JSV Book Club —> some insights into Bill Walsh's philosophy from his legendary quarterback.
📝 What Silicon Valley Can Learn From Bill Walsh's The Score Takes Care of Itself - Sachin Rekhi —> how Bill Walsh's Standard of Performance provides a compelling model for tech startups.