I’ve been spending some time lately mentoring junior product managers (PMs) and helping them take the next step into more senior positions. One thing that many of them are really stuck on is the global stack rank. While everyone seems to understand the value of a backlog these days, remarkably few of the PMs I talk to have a regular stack rank exercise. I find this distressing.
Let me start with a couple of caveats. One: teams are different. There is no magic one-and-only-one-way to build software. While I really like global stack ranks, they aren’t right for everyone. Two: I’ve spent the bulk of my career in large enterprise software organizations. Most of my leadership experience deals with larger teams. My last major product had over 150 engineers and a dozen PMs. The advice below stems from this background, so take it into account when reading.
What exactly is a global stack rank?
A global stack rank is a high-level list of the epics you would like to cover in priority order. It is similar to a backlog in that it sets overall priority but it is not a backlog because most of the actual work isn’t included. A global stack rank needs to be super high-level. Depending on how you manage your work, this may mean including only epics and not stories or tasks. When I worked on VMware Cloud on AWS, the project was so large that we had hundreds of epics each quarter. So, we started using Jira initiatives and stack ranked only the initiatives. Do what works for your product team. .
I strongly prefer that the global stack rank be composed of Jira epics or initiatives because that keeps the process grounded in actual work and you can then track team backlogs to this stack rank.
Why do I need a global stack rank?
The main reason is to help engineering plan. When you are managing a small project with less than 20 engineers, you can usually get everyone in a room and hash things out. If you only have one scrum team, you will wind up talking about this stuff at sprint planning. What if you have two scrum teams? Six? Twenty? At some point, you can’t do that any more.
So, you need some way to clearly communicate priorities and make sure that things like cross-team dependencies are prioritized appropriately.
Let’s say you have three teams. Team A has a deep backlog of 100 items. Inside that backlog is tons of work that is critical for them to get done. They also have one item that team B is waiting for and one item that team C is waiting for. Team A does their sprint planning and starts to groom their backlog. How high on the backlog are the items for teams B and C? Well, they go ask B and C. Wanna guess what B and C say? Yeah, they both say their items are extremely critical and top of stack. Now what? Well, they go to PM, of course. PM has to make a trade off call. What happens if A, B and C all have different PMs? Now, they pull in their boss. Let’s say that team C has a different boss than A and B. Now what? Well, now they call in the Senior Director. That’s me. Why am I getting pulled into a debate between A, B and C? It’s because I didn’t create a clear set of priorities for the team that allowed them to self-serve.
How do I set a clear set of priorities?
You guessed it, create a global stack rank.
How do I create a global stack rank?
This is the very interesting part. My guess is that if you haven’t done this already, creating a global stack rank will be difficult. That is because you probably don’t have clear priorities across the team. You probably don’t have clear decision criteria defined for how features get evaluated and prioritized. Thus, decisions are made without clearly defined success criteria. In many cases, it’s HIPPO (Highest Paid Person’s Opinion). That’s a really poor decision making process.
What you need to do is step back and look at your larger goals. Where does the product need to be in a quarter? In a year? In three years? If you are moving fast, having three-year goals may be a stretch, but I would encourage you to set goals at least one year out. You may be completely wrong about them, but the process of debating and setting those goals will tell you about yourself, your team and your product. You can always change them if you aren’t happy with the result.
Now that you have an annual goal, you break that down by quarter. This means that certain things need to be true by the end of each quarter. A quarter is about 13 weeks; realistically that means you’re doing about six two-week sprints per quarter. You have six chances to make something true by the end of the quarter. If you have six things, that’s one per sprint. Of course, things are not that neat, but you get the idea. You want to have methodical regular progress. You need to push things into production to test your theories so you can measure and adjust. Thus, your stack rank needs to support those things.
Let’s say I had an annual goal of reducing customer churn by 25%. The PM team does their research and the theory is that there are three main causes of user churn: feature gap to competitors, difficult onboarding process and lack of reporting. Further analysis is done and it turns out that addressing the feature gap is a massive pile of work. You break that work down further. You now have three new features, a new onboarding workflow and a reporting feature. Five features. You could just put all the feature gap work at the top, but then you get no work done on reporting which is important although not very sexy. So, you put your top feature gap at top of stack, then user onboarding, then reporting and then the other two feature gap features. Of course, it’s more complicated than this, but I’m just giving a rough example.
It turns out that reporting is a complex cross-team initiative. Like security or tenancy, it touches everyone. Thus, it requires huge amounts of cross-team dependencies. Without the global stack rank, I can guarantee that all three gap features would get done way before reporting. Features like that tend to languish because of the cross-team complexity. However, if reporting is stack ranked above the second and third compete features, you can then review each team’s backlog and ask, “Why is this task related to global stack rank four (your second compete feature) ahead of global stack rank three (reporting)?”
Now you are having a meaningful conversation with the scrum team about their backlog with the correct strategic and business context.
Does a global stack rank imply that features ship in that order?
No, certainly not. Some features are low on the stack rank but very easy to do. If I see something that my team can do in one sprint, I may just go ahead and knock it off to get it out of the way. Similarly, if I am blocked by another team, I’m going to go deeper in the stack rank until I get unblocked.
Similarly, let’s say that of all the work in the global stack rank, the very first item that I can work on is global number 100. Well, that’s my number 1 so I go work on that. Perhaps I get it done quickly, before global 1 or 2. That’s OK. This is about helping teams make good tradeoff decisions, not about forcing them to only work on the stack rank in order.