Menu

Posts tagged “agile”

Life beyond OKRs: Tools for goal-setting

Ok, here’s the thing. I didn’t share this talk I’m doing on Thursday when it was announced because as much as I tried, I just didn’t feel like the story was coming together. Writing this talk was much harder than some others that I’ve done, but I think I finally got there last night. So with only a few hours to spare, here you go…

In Life beyond OKRs: Tools for goal-setting I’m going to talk about our team’s foundation (principles & values), how we set goals, and how we plan and execute. If that’s your thing, come join us!

Interesting Learnings from Outages

Here’s a good post from Gergely Orosz discussing Interesting Learnings from Outages. It covers internal vs. public postmortems, how investing in reliability can have bumps along the way, and how to make the difficult decision to try and fix something on the spot, or to do a lengthy restore. This point stood out to me:

“Move fast with autonomous teams” often builds up infrastructure debt. Reddit is a fast-moving scaleup where teams move fast, and it sounded like they had autonomy in infrastructure decisions. The wide range of infra configurations caused several outages, and the company is now paying down this “infrastructure debt.” This is not to say that autonomous teams moving fast is a bad thing, but it’s a reminder that this approach introduces tradeoffs that could impact reliability and will eventually have to be paid down, often by dedicated teams.

There’s more to life than OKRs: using EOS and W Planning for effective goal-setting in empowered teams

At Postmark we’ve long been fans of the “Entrepreneurial Operating System” (EOS) as presented in the book Traction: Get a Grip on Your Business by Gino Wickman. We also love the “W Framework” as outlined in the article The Secret to a Great Planning Process—Lessons from Airbnb and Eventbrite by Lenny Rachitsky and Nels Gilbreth. Both resources are excellent and highly recommended for the thesis and theory behind each of these frameworks.

In this post I’d like to describe how we combined these methods to set goals and run our business and product delivery process. I’ll start with a short summary of each method, and then go into specifics on how we used them together to ensure our teams are aligned on the same goals and have all the context they need to work autonomously on projects.

I promise I’m not here to start an argument about what is the best way to set goals. Instead, I hope this could be useful to folks who have tried a bunch of different frameworks—including OKRs—and found that nothing quite worked for them. Maybe this is a good alternative to try…

Goal-setting using EOS

We tried a several different goal-setting frameworks before landing on the Entrepreneurial Operating System (“EOS” from here on out). There’s no way to cover all it entails here, so please read the book, it’s very good. What I want to focus on specifically here is one of the primary outputs/artifacts of the system. EOS calls it the Vision/Traction Organizer (V/TO), but we adapted it into what we ended up calling the Vision and Focus Plan. This is sort of the equivalent of an OKR document, but we found the additional context extremely useful, especially when we layered W Planning (which I’ll talk about next) on top of it.

In its simplest form the document has two sections, one section for Vision, and one for Focus. The basic structure of the Vision section, using an example from our 2020 planning session for the Wildbit brand as a whole, is as follows:

Every year our leadership team got together for a few days to work on any edits we needed to make to the Vision section. Principles, Values, and Purpose should not change a lot. These are the long-term guiding principles for the company and though they should be revisited at least once a year, frequent changes would indicate that we don’t really know where we want to go with the business, so that should be a red flag.

The 10-year picture is a level down from the purpose—a way to look into the future of what the business would look like in reality if we achieved all our goals. The 3-year picture is way more concrete, and where we spend a good amount of time modeling and debating based on what we know about our business and the industry at large. These are the revenue goals that we want to achieve in the shorter term.

The Focus part of the document changes the most, and this part is the most directly comparable to OKRs. We generally made one of these for each product line (and sometimes even for individual teams). Here’s an abridged example from Postmark that we worked on during 2021 planning:

The sections can be summarized as follows:

  • 1-year plan. Think of this as the “Objectives” in the OKR framework. In tandem with the Vision this is where we want to be at the end of the year from a business perspective.
  • Quarterly plan. Similar to the 1-year plan, but a more immediate timeframe to reflect our planning cadence (this could also be 6 months, 6 weeks, whatever cadence you use for planning).
  • Goals for the Year. This is similar to the “Key Results” part of OKRs. They are measurable metrics and indicators that will tell us whether or not we’re on track to meet our 1-year plan. It helps for this section to cover a longer time horizon so that you can prioritize projects and bets effectively, and avoid sudden changes in priorities (which are really disruptive to teams).
  • Tasks for the Quarter. This is the nitty-gritty prioritization of problems we want to solve in a given planning timeframe to achieve our goals for the year. The visual planning and delivery/execution of these tasks happen in Productboard and JIRA, but this single view keeps us honest about what we’re working on. (See the next section for how we populate this column)
  • Issues List. This is a core component of the EOS system, and is an ongoing list of concerns, things we’re worried about, obstacles or impediments that we have to address, etc.

An essential component of making this approach a success is that we review the Vision & Focus Plan every week in our leadership meetings. We review business metrics, we talk about our progress, where we might be off track, what needs to change, what issues we need to add, how we are doing in addressing the issues, etc. That way we have a weekly check-in where we can adjust our plans and solve problems together1.

One really important part that I skimmed over in this section is describing how things make it onto the “Tasks for the Quarter” list. That’s where W planning comes in…

Planning using the W Framework

As I mentioned earlier, the original article does an excellent job of explaining the W Framework, and it should definitely be on your reading list. But in the interest of time I wanted to provide a short summary of how it works here. The gist is that planning is most effective when it is a collaborative effort between Leadership (senior/executive leaders of a business unit) and Teams (people executing the actual work). This makes it a particularly appropriate framework for empowered and autonomous teams. The framework looks like this:

The four stages are described as follows in the article:

Context: Leadership shares a high-level strategy with Teams.

Plans: Teams respond with proposed plans.

Integration: Leadership integrates into a single plan, and shares with Teams.

Buy-in: Teams make final tweaks, confirm buy-in, and get rolling.

So when we go into our quarterly planning we use our Vision & Focus Plan along with W planning to come up with our tasks for the quarter.

Phase 1: Context

As a leadership team we review our annual and quarterly goals as laid out in the Vision & Focus Plan, and make sure we are still focused on the right things. We ensure that the entire team has the strategic context they need to successfully enter the planning phase.

Phase 2: Plans

Teams take the goals and strategic context, and create project plans as bets on how they would like to achieve those goals. Note that at this point the “Tasks for the Quarter” column in the Focus plan isn’t filled out yet—that comes from the teams based on how they believe we can achieve our stated goals. In the words of Father Cagan:

Instead of being given a roadmap of features, an empowered team is given a problem to solve and they get to figure out the best way to solve that problem.

We use our Project Plan template for this part, which you can see on Github. The plan does not have to have every detail figured out. We view it as “a road sign into the fog.” We make sure the direction and first few steps are known, then add and edit as the fog starts clearing down the road.

We then share the plan with everyone in the DACI section of the plan by posting a link in Basecamp and requesting feedback form the team. We discuss comments asynchronously in Google Docs, or synchronously on a Zoom call if a decision can’t be made quickly in the comments.

Phase 3: Integration

Once the team planning phase is done the leads team gets together again to discuss the plans, how it all fits together, and any trade-offs that need to be made. This is where we fill out the “Task for the Quarter” section and make sure we are not taking on too much work for the quarter.

Phase 4: Buy-in

As a team we then get together to finalize the project plans, discuss any final questions/feedback on our priorities, and move individual tasks to Basecamp/Asana (for non-dev projects) or the appropriate JIRA Epics (for dev projects).

Once we finish this process our teams are ready to execute on their projects with clarity on how each project aims to influence our goals. This includes essential engineering scaling and reliability work—for instance, if our goal is to significantly increase the number of messages sent, we’re going to have to make sure that the platform can scale with that!


So there you have it—a way to combine two different frameworks to create a seamless goal-setting and prioritization process for empowered teams. Admittedly, I left out quite a few details in this post—there are lots more to discuss in this process, such as how we track progress, how we adjust based on new information, how we aim for “healthy pressure” within teams using high-integrity commitments, and so much more. But I am hoping that this brief overview sparks some ideas for teams who might have been struggling to make other frameworks work in the context of their own teams and culture.

Like all things related to software, planning and goal-setting require discovery and experimentation to get right. Even this article should be viewed as a snapshot—capturing a moment in time that describes our planning process. But we are also still constantly evolving the process as we get feedback from our teams and learn what works and what doesn’t. So try this one out, and let me know how it goes if you do!


  1. I plan to write more about the structure of our weekly meetings in a future post. 

Product Management and The Fog of War

I think about The Fog of War in the context of product management often. The term started as shorthand for an important concept during battle:

The fog of war is the uncertainty in situational awareness experienced by participants in military operations. The term seeks to capture the uncertainty regarding one’s own capability, adversary capability, and adversary intent during an engagement, operation, or campaign.

Of course, most of us of a certain age know this concept mainly from video games where it refers to enemy units, and often terrain, being hidden from the player until the area is explored. Here’s an example from Command & Conquer: Red Alert 2:

This concept—both in its military and gaming contexts—can be really helpful to guide our thinking about planning, prioritization, and execution. Let’s first look at the original meaning, and how the 3 uncertainties of the “fog of war” can effect our decision-making on planning and prioritization:

  1. The uncertainty regarding one’s own capability. We are often worried that what we build might not be good enough to win over customers.
  2. The uncertainty regarding adversary (competitor) capability. We are often worried that competitors might build something faster and better than we would (ChatGPT, anyone?) and that it will destroy us.
  3. The uncertainty regarding adversary (competitor) intent during [a project]. We don’t know what our competitors are planning to build next.

These uncertainties can sometimes paralyze our decision-making—or worse, lead us down a path of making decisions based on our fear of the unknown. When we go into our planning cycles we have to make sure that we act only on what we know about our business and our users, and the information we have available to us. We cannot let the fog of war derail us to make prioritization decisions out of fear and uncertainty of what others might do.

That leads into what we can learn about execution from the gaming context of this concept. When I talk to our teams about project plans I often refer to our planning documents as “a road sign into the fog.” I encourage teams to make sure the direction and first few steps are known based on the information we have, and then to add and edit their plans as the fog starts to lift.

At Postmark we use a project plan template that you can view on Github here. I’ve written about this document a couple of times (see here and here), and the most important principle we live by is our commitment to these plans being “living documents”. We don’t fill out the whole thing up front (there’s too much fog out there!), we host it in Google Docs, and everyone on the team has full edit access. We truly work on it together—and as the fog lifts, we keep editing until we feel comfortable with the level of uncertainty that remains in the system.

The next time you enter a planning cycle I encourage you to think about the fog of war and how it might be influencing your decisions. When are you guided by uncertainty, despite all the things you do know about your business and customers? When are you trying to map out areas that no one has explored, and that you simply don’t have enough knowledge about yet? How can you focus just on “the next right thing” and trust that as you go, the fog of war will lift, and the road will become clear?

Why stable software development teams are more effective than “agile” teams

In the latest Platformer piece Meta doubles down on layoffs we see a perfect example of why stable software development teams are more effective than “agile teams” where people are seen as interchangeable cogs in a machine. When leaders think that people can be moved around between projects and “initiatives” at will and without knock-on effects, they run headlong into the basics of systems thinking, as shown here by Mark Zuckerberg’s realization:

In retrospect, I underestimated the indirect costs of lower priority projects. It’s tempting to think that a project is net positive as long as it generates more value than its direct costs. But that project needs a leader, so maybe we take someone great from another team or maybe we take a great engineer and put them into a management role, which both diffuses talent and creates more management layers. […] Indirect costs compound and it’s easy to underestimate them.

As a side note, this is honestly a pretty frustrating thing to read. It seems like such a basic software development concept—was there no one in Mark’s orbit that could tell him about the indirect costs of building VR headsets? And now that epiphany is costing Meta another 10,000 jobs. Ugh.

Using “steel threads” to reduce product delivery risk

Jade Rubick resurrects an old engineering concept (and dead Wikipedia page!) in Steel threads are a technique that will make you a better engineer:

A steel thread is a very thin slice of functionality that threads through a software system. They are called a “thread” because they weave through the various parts of the software system and implement an important use case. They are called “steel” because the thread becomes a solid foundation for later improvements.

With a Steel Thread approach, you build the thinnest possible version that crosses the boundaries of the system and covers an important use case.

He explains this in detail in the full post, with lots of helpful examples.

The Myth of Velocity

Randy Silver in The Myth of Velocity:

When we measure how quickly teams ship stories & code, we’re measuring speed—how quickly they move. It’s only when we measure the effect it has on the target metric—the value that we’re after—that we’re actually looking at velocity.

It doesn’t matter how much you ship if the end result doesn’t deliver value to your customers and your company. If you’re measuring story points, you’ve fallen into the trap of measuring outputs, not outcomes. When we talk about slowing down to speed up, this is the point: the only thing that matters in this equation is how quickly we can deliver actual value. Everything else is theater.

You can't stand under my umbrella

In You can’t stand under my umbrella the Raw Signal team makes the case for when it’s not appropriate for managers to be “sh*t umbrellas” for their teams:

When things are steady, and people know the right things to work on, teams are constrained by velocity. We know the course we’re racing, the question is just how fast we can go. In that context, it makes sense for a manager to clear every obstacle out of our way. But during times of significant change, teams are constrained by agility. It’s not that velocity doesn’t matter, it still does. But when everything has changed about the race, we need the ability to steer. A manager who tries to preserve velocity at all costs risks running us into a wall.

They go on to talk about how to Accept, Adapt, and Act in such moments of significant change.

Don’t delete your old backlog

There’s a sentiment I started to see in the agile development world that advocates for deleting old/stale items off a backlog completely. A good recent example is Jason Knight’s latest newsletter:

The backlog becomes a dumping ground for every single customer support query. Every account manager and every salesperson has something in there from conversations with customers and prospects. […]

It’s tempting to see “length of time in backlog” as some kind of vector for prioritisation, but it really isn’t. It’s quite the inverse, in fact. So let’s all try to get comfortable, embrace the idea of getting rid of old stuff in our backlogs, and give people a “no” rather than a “one day”.

I’m not trying to pick on Jason—his work is great and it’s another very good edition of his newsletter! I am just using it as an example that got me thinking about this a bit more deeply.

My take is that we should absolutely keep all customer feedback around in our backlogs, because that is continuous discovery data that would be a shame to lose. Instead, my proposal would be to normalize the backlog as a place to build organizational memory and a customer feedback knowledge base—not as a list of things that all have to get done.

Two tactics can help with this approach. First, a Now/Next/Later roadmap keeps the focus on the list of current priorities. The entire backlog doesn’t go into the “Later” column—only things that are currently prioritized to start within the next few months.

Second, have a standard process that the entire company (especially the customer success team) can use to collect user feedback and attach it to features. In our case that’s Productboard, and our success team can easily add and process customer feedback via a browser extension.

I guess our list of features in Productboard is technically our “backlog”, but it doesn’t cause us stress in terms of feeling like we need to work on everything that’s on there. However, as part of our planning cycle we can go through this list and figure out if anything is important enough to pull into the “Later” column of our roadmap. An added bonus: if/when we start to work on any of those features we have access to lots of customer data about each feature, and we can reach out to those customers to have more in-depth conversations with them about their needs.

So instead of deleting old issues off our backlogs, let’s rather remove the pressure and stigma around what backlogs are for (maybe we should rename it to “customer needs knowledge base”?). And then let’s use our actual roadmaps for the list of things we know we’re going to work on.

How to make the move away from “feature factory” successful

Itamar Gilad recently published a good post on Feature Factories vs. Value Generators. It starts off with some basic definitions that should be familiar to most readers, but the second half expands on the responsibilities product orgs have to ensure a successful transition away from feature factories. We can’t just sit back and hope the rest of the organization goes along—there’s a very important organizational change element here:

The product org needs to stop viewing itself as a production unit (you’d be surprised how many do). Our job is no longer just to work heads-down developing features per a spec. The product org needs to produce traction towards the goals, and this traction needs to be communicated clearly to the rest of the company (which helps in creating trust). Testing and evidence play a major role.

This bit about what to measure also stood out to me:

I see a lot of OKRs about boosting efficiency and improving productivity. Many CTOs see having developers work at 100% capacity as the prime goal and push their teams to deliver more story points per sprint. While there’s nothing wrong with any of these per se, they are at best second-order optimizations, and at worst major waste generators. The better optimization is pursuing a higher ratio of positive-value launches. If you embrace this goal, a lot of things that you do today will no longer make sense. It’s a long journey, but with persistence and hard work you’ll be able to put the antiquated feature factory model to rest.

The goal for product teams is not “stop being a feature factory,” it’s “provide more value to customers and the business.” Moving away from “the build trap” is just one of many tactics for making that goal a reality.