How do we figure out what to build?
Now that we’ve been building our product – called Flashcrow – for a while, it’s worth talking about something tricky: how do we plan what to build? We’ve got 12 user groups, and a billion possible priorities. We use three processes that feed into one another in order to get clearer on how to build what matters, for the users that matter, in the time we have.
It’s the thing that says what outcomes matter, and in what order you’re gonna build them. It’s pretty vague on timelines, but it usually says what’s gonna happen within the 3 months with some clarity, and it has a bunch of ideas and some good priorities for 3-to-9 months away.
The roadmap gets made from our vision: whereas a vision just gives us something to aim at, the roadmap adds some clarity around priority and timing to that vision. It makes the dream real, but still a little unformed.
Sure, you might know what features a user needs – but what if you’re really putting an app together from nothing? You probably don’t know what they’ll look like, how they’ll fit together, or even which are the most important.
To solve those problems, you need something that helps guide your experimenting, that gives you increasing confidence and clarity over user needs, and that puts the focus on what you must do first. And that’s what our hypothesis dashboard did in the early stages of our product development. Sure, we don’t use it as much now that we’ve validated and falsified many hypotheses – instead, we’re leaning more on user stories and epics – but it was super important in getting us here.
The hypothesis dashboard was the way we turned hypothesis-driven validation into a process, backed by a kanban board. This is what it looks like:
Neat, hey? We can filter by what’s being validated (feasibility/viability/desirability), what slice of the product it could affect, and whether it’s ready to test (and should be added to our sprint plan) or already tested, in which case we’ll have to integrate its conclusions into our sprint plan too, or go back to the drawing board.
The roadmap tells you what’s important, the hypothesis dashboard tells you what we believe about how to solve what’s important, and the sprint plan tells us how we’ll try to go and build it, based on our view of what we need to do now, and with the expectation that we’ll probably learn we’re wrong in exciting ways.
Because the sprint is where the rubber meets the road and all our previous beliefs will actually get tested, it’s also where we discover the ways we’re wrong. So the sprint plan can’t be that we’ll do everything on here, or that we should even try. Instead, we’re setting priorities based on a simple question: what do we need to do first in these next two weeks to accomplish what we must? And the goal of our sprint plan becomes: do the important stuff first, and find out if the plan is still right along the way.
When framed as “what do we need to do first,” it allows us to take the pressure off ourselves needing to execute on all the things we could execute on. We’ll start with some riskier stuff that’s important, in case we learn that our roadmap or hypothesis beliefs were wrong in important ways. And that’ll probably affect our sprint plan, maybe even getting us to reprioritize stuff or adapt to adjust in the middle of our sprint if it’s important enough.
The sprint is the place where we learn what to adapt to, and then we adapt. The sprint plan needs to ensure we’re not wasting effort in adapting to the wrong things, and gets us quickest to the learning part. In concrete terms: the sprint plan needs to make sure that we’re getting closer to a hypothesis dashboard that has helpful and validated hypotheses, and that our roadmap is accurate and well-prioritized so that we get closer to realizing our product vision.
What’s the work, then, that ends up on the sprint plan? Anything that we believe could do those things well: getting closer to the truth, and to the goal. Could be user testing, or a UI design exploration activity. It could be some preliminary backend coding around the map tile pipeline, or frontend dev. It could be some communication work to express our vision or roadmap to get stakeholder feedback. In a sprint, there are only ever a few pure “research questions” that we ask in order to directly falsify or validate our beliefs; most of the time, we learn that our plan is right or wrong by doing the thing we thought was right.
The other reason that anything can make it onto our sprint board is because our roles are interdependent, and as a team, there are many ways we can unstick one another and create progress for our whole product.
Without the structure of the roadmap and hypothesis dashboard, it’d be hard to know what “progress” means, making a sprint plan hard to articulate. But sometimes, you have to do that anyway: you might just have to start with a sprint plan but no roadmap, and the need to get you closer to getting a roadmap. Maybe that’s a topic for another post, though: how do you bootstrap an agile, lean team that doesn’t have an established vision or roadmap to work from? We’ve got a little experience in that now, too :)