Starting brainstorming on a greenfield project or new product area is exciting. Unencumbered by any existing code or customers you can set your mind free to dream up possibilities.

When doing this it’s easy to think up some complex features that can do complicated things and solve complicated problems. This is intellectually fun and exciting. Unless you are completely sure that your customers have complicated problems they need solved right away you should park these thoughts in a document somewhere.

Instead break down the complicated solution into smaller pieces and see if you can make a simpler version of the features using those pieces to start with. If you solve the 20% of complicated problems without first solving the 80% of simpler cases then you’re only solving a fifth of the problems anyway.

You may find that you never build the complex features because it turns out none of your customers have problems that need them. This saves you from spending the time and money building and supporting a more complicated product.