Don't solve problems, eliminate them

As you work on problems, you ask yourself whether a different approach higher up the 'problem tree' could help you and/or your users avoid having to deal with the problem in the first place. There isn't any solution better than not having a problem to begin with. Not only must a problem be compelling enough to solve, but it must also be compelling enough to solve the inevitable problems caused by its solution. You will not optimize the thing that should not exist.

Examples

  • Tesla's 'Gigapress' innovation allows them to make a single-piece casting of the entire back and front of the vehicle. This eliminates the need for dozens of robots to bolt and weld dozens of parts together.
  • React's 'hooks' innovation eliminated problems with code reuse. Before hooks, 'higher order components' and 'render props' patterns were required (and before that, 'mixins') which led to quite a few headaches.