In the software development realm we all succumb to this at some point. We lose site of what is core (what absolutely needs to be there) in favour of what would be cool or only used by a few.

What is the essential set of functionality that defines your software? Really?

What would happen if you removed it? What percentage of application users would notice it missing?

When you define the core, you can focus on the core.

Get this right and spend 80% of your effort on this for version 1. Otherwise you will spend 80% of your time on the things that don't really matter.

I just recently went through this exercise with my development team for a product we are building.

We sliced the application across many perspectives:

  • Who would be using the application and what would be the primary things they would want to accomplish with the tool?
  • When they are performing those functions, what do they absolutely need to have available?
  • What does the application look like before any data gets added?
  • What should the application entry page contain so that they can quickly accomplish the core functions?

If you find yourself going "wouldn't it be neat if we?" then it is probably not core. Of course if having a cool application is your thing, then cool is core. Otherwise most people just want to get their work done as quickly as possible.

The KISS principle says keep things as simple as possible. Focusing on core versus cool is one way to do that.