Essay - Published: 2024.01.08 | business | create | creation-cycle |
DISCLOSURE: If you buy through affiliate links, I may earn a small commission. (disclosures)
I've now worked as a software engineer for 7 years across companies big and small from banking to BigTech to social media. In that time I've worked with dozens of teams on thousands of features, bugs, and product requests.
One of the biggest problems I've observed is product teams spending a lot of time / effort on things that aren't that important. Ultimately there's always more work to do than resources to do them so spending time on things that aren't the most important is a great way to ensure you never get to the important ones (and why I advise to Focus on Impact).
In this post we'll explore a simple method I use to prevent one of the most common causes of this waste - misunderstanding the incoming request.
Every incoming product request whether it's a feature, a bug, or a proposed long-term vision is a hypothesis about what the product is now, how it should work in the future, and why it's valuable to do that.
The thing to call out here is that all of these are just hypotheses. They aren't facts as we don't actually have a way to prove these things. So we need to treat them as hypotheses - things we can and should test.
Moreover we can see how this chain of information passing quickly turns into a game of telephone - where one person starts by whispering a message X to their neighbor and the message is passed all the way back to the originator where they announce what the message is now vs the original. Spoiler alert - the end message is rarely the same as the original.
This means that even if the originating hypothesis was mostly correct, by the time it reaches the product people actually fulfilling it, it's often morphed a bit from its original form.
So how can we combat this and build better products?
I can't guarantee anything about your outcomes. After all these are all just hypotheses and you've got to test those to determine whether they turn out to be true or not.
But I can offer a better system for playing this game of telephone so at least we're focused on the actual hypothesis (problem / request) that the business cares about rather than a morphed version that no one cares about (and therefore no amount of time / effort will make matter).
That system is to simply state your hypotheses clearly.
When we do this, we clearly extract the bits of information that most matter. We can then use this to check our own understanding of the hypothesis with those further up the information chain and those we collaborate with to validate early that this is an accurate representation of what we're thinking and whether it's true/false.
The way I like to do this is:
By doing this you get a lightweight signal for verifying you're still on course and whether that course still makes sense.
I do this a lot - for every request that comes in, every bug / feature I'm building, and especially for large projects we're considering spending a lot of time / effort on.
It serves as a simple, effective way to ensure everyone's aligned and highlight / call out mismatches early. When I first started doing this I was often surprised at the fundamental mismatches it uncovered - from context to base assumptions about how things worked.
Moreover I find having a clear hypothesis helps with context switching cause it provides everything you need to know to reload the context in which you're working.
The template I use is pretty simple and I've tweaked it over years of use to be as clear and concise as possible while covering the primary areas of misunderstanding. For small bugs / features you may just have one sentence per item but for large projects you may have a few bullet points with links to more fully capture the necessary context.
My Project Hypothesis Template
- TL;DR:
- Context
- Problem
- Impact
- Solutions
That's it - that's how I clarify all incoming product requests to ensure that I understand what the actual problem is and we're all on the same page wrt how impactful it is and how we want to go about solving it. It may seem a little robotic to do this at first but it becomes a lot more natural when you put it in your own words and I'm confident you'll uncover some surprisingly fundamental miscommunications after using this a few times.
If you liked this post you might also like:
The best way to support my work is to like / comment / share for the algorithm and subscribe for future updates.