You don't know what you do until you know what you don't do
Many years ago, I saw a Dilbert cartoon that went roughly like this. Frame 1: Supertitle – “Dogbert’s guide to project management.” Frame 2: Supertitle – “Not a project.” Dilbert answers the phone. “Sure, we do that.” Frame 3: Supertitle – “A project.” Dilbert answers the phone. “No, we don’t do that.”† I’ve seen a lot of software projects, and one thing I’ve learned is that you don’t have a product until you start saying “No”. In the early phases of product design, you’re all giddy with excitement. This new product will be so awesome. It will slice bread. It will solve world hunger. It’s designed for everybody, from the technology-averse grandmother who wants to see picture of her grandkids to the IT manager who is in charge of 10,000 computers. It’ll run equally well on a handheld device as in a data center. When I see a product with an all-encompassing description like this, I say to myself, “They have no idea what their product is.” You don’t know what you do until you know what you don’t do. And the sooner you figure out what you don’t do the better, because a product that promises to do everything will never ship. As long as you wallow in the “Sure, we do that” stage, you’re going to flail directionlessly, and the less likely the final product will actually solve the problem you set out to solve. Whenever I see a project description, I pay close attention to the section titled “What we don’t do.” That tells me how serious they are about shipping. And if there isn’t a “What we don’t do” section at all, I sigh quietly, since that tells me that they don’t yet know what they do.
†Commenter Thomas successfully tracked down the cartoon I was thinking of.