These days a lot of people talk about the magical wonderfulness of “minimalism” and living “simply” and take cute pictures of themselves meditating with a cup of matcha in their spartan apartments and post them on Pinterest or Instasnap or whatever. So pretty and aesthetic.
Screw that. This post isn’t about that. I care a lot more about what things COST. Real time, real dollars, real opportunities missed.
After you read this post today, I want you to just remember this one simple thing the next time you think about introducing anything new into your life or software:
It seems small and trivial today, but in the long run, it is massively expensive to add something.
Here are some examples:
A single checkbox.
It seems so innocent. Let’s JUST add it, right? How bad could it be! It’s so little and it’ll solve everything!
Hold up. Consider all the implications for the days or years to come:
- You can't easily take it away. If you do want to remove it, you’ll have to send emails, warn customers, deprecate it, gradually wean them off of it onto a new solution, then phase it out. This is a lot of work, so you usually end up just dragging it into the future with you.
- Reorganization of the interface must carefully consider it. You can’t just dump it anywhere. When you have N features on a product, your designers need to carefully evaluate the N * N relationships and come up with something balanced and beautiful. Adding one more thing makes it that much harder. The result is that design not only takes longer but also starts to lose cohesion.
- Code must be maintained to support it and at times must be refactored and reviewed, slowing new development.
- Automated tests must be written and maintained to ensure it works.
- QA must test it and its side effects. A single checkbox effectively DOUBLES your testable state space. To add salt to the wound: they’ll need to do this every single time you even touch anything near this thing.
- New engineers and new customer support staff will need to be trained in it, adding yet another thing to the long list of things they are required to know, slowing onboarding.
- Bugs can and will emerge around it and some customers will be someday burned by it. When it happens, engineers will need to divert precious time from important projects to fix it.
- Worst of all: a year later, you have some great new idea that may not conceptually jive with this checkbox and you will be constrained by it.
A side table in your living room.
It's only a hundred bucks. No problem, right? You fall in love with it. Impulsively buying it is quick, easy, and feels awesome. It looks SO spiffy in the corner next to your shelf of smart books. But then:
You now need to dust it once in awhile.
If you care for your wooden furniture and want to ensure they’re long-lasting, you must also continually purchase proper wood cleaning / polish products.
If you pay a person to clean your home, it will take up some of their precious time. Given enough items like this taking up 1% of their time, we’re talking a serious amount of effort every week of every year.
Next time you move apartments, you need to pack it or wrap it and pay movers to ship it. Or you can move it in a rented truck, which must now be a bit bigger to accommodate and reserve for even more time.
When you buy renters insurance, you must account for this side table in your possessions and pay a slightly bigger premium. Given enough items like this, you’ll be paying significantly more and at the end of the day basically insured a stupid side table you gave only 10 minutes of thought to buying.
Just the mere PRESENCE of a new surface invites you to add more shit on top or inside it with ALL THE ABOVE PROBLEMS.
Rinse, repeat, die by a thousand papercuts.
If you’d rather avoid all of the above bullshit and would prefer to actually live your life and/or solve real problems for your customers, just cut the crap. Make the burden of proof for adding things really, really high. Create a culture of restraint. You’ll thank yourself later.