I invite you to upgrade to a paid subscription. Paid subscribers have told me they have appreciated my thoughts & ideas in the past & would like to see more of them in the future. In addition, paid subscribers form their own community of folks investing in improving software design—theirs, their colleagues, & their profession. “I’m sorry but I only accomplished 3 out of my 6 goals for the semester.” “Excellent! You’re right on track.” What the hell just happened? I was so confused. The setting was my first performance review at Facebook with my manager David Recordon (hi David 👋🏻). I walked in with dread. I had 6 goals for my first 6 months. No matter how hard I struggled, I just couldn’t get 3 of them done. I figured I was done for—Facebook at that stage was notoriously impatient with under-performers. Instead, I got a pat on the back & an “exceeds expectations”. Some of the work I’d picked up over the semester, work that distracted me from my initial goals, turned out to be particularly impactful. 3X: Explore/Expand/ExtractIf you haven’t heard of 3X, it’s a framework for thinking about how Facebook in those fairly-early days (2011) managed to:
All at the same time. The basic idea is that there are 3 very different games going on in software product development:
What’s confusing about software product development is that all 3 phases look similar—we are shipping increments of value frequently & reliably—even though the goals & tradeoffs are starkly different. What Facebook at that time did well was adapt the management of projects to the stage they were in & then manage the transitions between the stages:
Managing ExtractSoftware development management has been in Extract for at least a decade. We’ve known how to manage teams for excellence, even if folks often don’t. Dependencies between teams imply the need for reliability. If my team only gets a cookie if your team delivers, then I want to be damn sure your team is going to deliver. If that means that schedule & cost stretch out, that’s the price I’ll pay to keep the whole machine humming. If you learned managing a few years ago & manage through KPIs or OKRs, you probably learned in an Extract environment—inter-team dependencies, scale, roadmaps. All makes sense. All goes together. P50 GoalsSo, what was going on in the opening story? Was Facebook going soft? Ha! Not likely. We drove about as hard as I’ve ever driven. So why was accomplishing half of the goals considered good performance? Even stranger, why would accomplishing all of one’s goals be considered under-performance? It’s the difference between Extract & Explore. So much of what we did at early-to-mid Facebook was exploratory. We knew social media was going to create value but we didn’t know exactly how. In such an environment, six months is forever. If I had accomplished all of my goals for the semester, that would have meant either:
And so the policy was that you were supposed to achieve roughly half of your goals. This policy creates incentive to learn & discover while also creating incentive not to coast. DependenciesExplorations should have as few dependencies as possible. They are small but extremely sensitive to delay. Extractions can & should have dependencies because you’re shooting for economies of scale. This is a fundamental difference often missed by those who have spent the bulk of their careers in one mode or the other. P50 goals don’t work when extracting—too many disappointing surprises. “What do you mean you didn’t get it done?!? We were counting on you.” But when the value of the surprises is greater than the potential economies of scale, P50 goals are a way to incentivize discovery. We have all been forcibly relocated from Extractistan to Exploristan, whether the topic is software development, managing software development, or software product development. It’s time to adapt to the local customs. You’re currently a free subscriber to Software Design: Tidy First?. Buying me more time to think & write means more thoughts & ideas for you. |