Overfitting is a term used to describe building products or features that are far too specifc to a use case and don’t allow flexibilty for new or unexpected use cases. It doesn’t apply to all types of apps, but it’s particularly important for creative tools. I have been building creative tools for over 10 years for e-learning authoring, and this is something I have always thought about but didn’t have the words to describe it until recently.

Source: https://lea.verou.me/blog/2023/eigensolutions/

It’s easy to build something that works really well for a handful of specific use cases, but it typically means your product or feature is limited and as new use cases emerge the product becomes far more complex and harder to use than it needs to be.

This article goes into more detail on Overfitting: Overfitting and the problem with use cases

But it wasn’t until Lea Verou published this great article — Eigensolutions — that I finally had vocabulary to describe how I think about designing and building a product.

In short:

  1. Create the primitives, the lower level building blocks first
  2. Compose features out of the building blocks
  3. If the feature doesn’t work for someones use case, they can compose it themselves using the primitives

It all ties back to the product design principle and well-known quote from Alan Kay:

“Simple things should be simple, complex things should be possible.”

Alan Kay