I often read product and engineering documents that detail reasons for why the team/org/company should do something– launch a new product, refactor a system, etc.
The question I wish more authors would answer up-front, though, is: why shouldn’t we do this?
In other words, what’s the case against launching the new product, refactoring the system, etc.? Showing the case against is useful for a few reasons.
First, it helps the author really think through hard tradeoffs. They may discover a critical drawback they overlooked or convince themselves of another approach entirely. Deeper introspection helps produce a stronger proposal.
Second, it helps the author gain the reader’s trust. A well-constructed case against doing something– coupled with a thoughtful defense for why the proposal still has merit– suggests that the author put in some work to think more broadly about the problem space.
The hardest challenge is to genuinely identify and present the strongest case against a proposal. It’s tempting to present a “straw man” argument and tear it down, but doing so is a waste of time.
The goal should be to present the “steel man” argument– i.e. the one that lays out the most compelling reasons for why the proposal should not be done.
Adequately refuted, such a “case against” makes the “case for” doing it even stronger.