Do as little as possible

The best way to have no bugs and ship fast is to have no code and ship nothing. Of course you're in the business of delivering value and it's difficult to deliver value with nothing, but you won't stray further into building more than is necessary to avoid building the wrong thing and lock your code (and your mental model) into something that should never have existed in the first place. You want to avoid wasting time by building something that will never be necessary. This is similar to the 'You Ain't Gonna Need It' (YAGNI) and Keep It Simple and Straightforward (KISS) principles.

Examples

  • If you're evaluating building a new product that requires custom implementations of other significantly complex products (for example, Calendar, Ticketing, Video Calls), start by integrating with those complex products so you can ship faster and get a more clear understanding of the needs of your users (for example, Google Calendar, Ti.to, Zoom).
  • When building an abstraction that concatenates a user's first and last name because you do that a bunch of places and you need to handle a missing first or last name, don't add features to your abstraction none of your consumers currently need (like adding an optional middle name).