We all have to make many decisions in life. It can feel overwhelming when you have to make a lot of them (whether or not “decision fatigue” is a real effect). In this post I’ll go over a framework for reducing that stress, by classifying decisions as “small”, “medium” and (rarely) “big”. Only for the latter category should you actually spend a great deal of thought, for the first two there are better methods available.
Small Decisions: Automate
The small decisions in life and work are those that don’t actually matter that much. Things like what color shirt to wear, what route to use to drive somewhere, or what font to use in your documents. It’s easy to fall into the trap of thinking that they do matter, and end up spending a lot of time on them, when in reality they warrant zero time. For these decisions the best approach is to automate. Make it so you don’t have to decide anything at all.
For example, Mark Zuckerberg famously wears the same shirt every day. This means he doesn’t have to think about what clothes to wear, saving mental energy. You don’t have to be that extreme, but, for example, you could prepare your clothing for the week ahead of time, and then just take the next one each day. This transforms a decision into an automated rule (choose the next clothing in the pile).
Routines are another powerful way of automating small decisions. We often set these up naturally, for example you probably don’t plan every day separately when exactly you will eat breakfast and brush your teeth. It doesn’t really matter exactly when those things get done, as long as you do them. So you have a routine of doing that at a certain time and in a certain order. This makes it easy to do those things without having to explicitly plan for them. Routines are another form of automation.
This applies just as much to work. Rather than have each programmer decide how to format their code, you should have a code style guide and code formatter. Rather than have each designer come up with their own styles and colors, you should have a design system in place. These turn small and mostly irrelevant decisions such as “how many spaces should I indent” and “what exact shade of purple should I use” into automated rules, saving time and mental energy.
Similarly, rather than have people monitoring dashboards and trying to decide if something is wrong, it makes more sense to have alerts with predefined rules. Of course, this can be more work to get right (both false positives & false negatives are highly problematic), but it’s usually worth it. It’s also valuable to have rules for how to handle the alerts (or other problems) that do come up–this is why SLAs have become so popular.
Medium Decisions: Satisfice
What about decisions that do matter a bit more? They could be either “medium” or “big” decisions. A “big” decision is one in which optimizing to the smallest degree (say 1%) is still worth it. Most decisions are not that sensitive, and those we will call “medium”. For example, deciding which restaurant to go to for a birthday dinner is a medium decision, because if you pick the third-best choice it’s still probably pretty good. On the other hand, deciding on the next market for your business to enter is a big decision, because getting it wrong can spell utter doom.
For medium decisions, automation may be insufficient, because you do need to exercise some judgment. For example, if you are going out to a special dinner you probably don’t want to go to the same one as last year, since that takes away from the occasion. But these decisions aren’t important enough to spend a lot of time on, so here the correct approach is satisficing. This means only doing enough work to find a reasonably good choice, and then stopping. Pick some key requirements, and then after you find something that meets them, just go with it. There’s no need to maximally optimize.
For example, say you are shopping for a new car. You come up with some minimum requirements (e.g., you want a certain capacity based on your family size, or you want it to have 4WD and Apple CarPlay, or whatever else). Then pick a couple vehicles that match, try them out, and pick the first one that seems good. Realistically, the differences between a Honda and a Toyota are miniscule, so as long as it meets your needs it’s going to be good enough. Some people consider buying a car a “big” decision because it costs a lot of money, but remember that the size of the decision relates to the marginal benefit of making a better choice, not the absolute values involved.
An example of a medium decision at work is choosing which technology or vendor to use. If you find one that meets your needs you don’t really need to try all possible variants. It’s going to be good enough at that point. For example if you want an issue tracker, and you find that Linear has all the features you want, you don’t then also need to test out Asana, Jira, etc. Similarly if you need an npm module to “left pad” your strings, then just pick the first one that seems reasonable. It’s easy to fall into the trap of perfectionism with things that don’t really matter.
Big Decisions: Research
Big decisions, the ones where every small percentage point matters, are the times to actually do all the work. The key thing to realize is that very few decisions are big. Many things we consider important have very safe fail cases, so getting them slightly wrong doesn’t really matter. For example, surely it matters a lot which house you buy, because it’s usually the single biggest purchase anyone makes. But realistically the difference between the best possible house and the second best house is tiny, and you may not even be able to measure it.
Big decisions apply when the measurement of something not only matters, but we can also measure accurately. This necessarily limits their scope substantially. A good example would be something like an advertising strategy for a business. The difference between a good ad campaign and a decent one can be huge. Consider notable campaigns, such as Nike’s “Just Do It”, that transformed entire brands.
Often big decisions involve money because it’s easy to measure and 1% of a billion dollars is still quite a lot. Thus we see them in areas such as finance, investment, gambling, advertising, and sales. These are the fields in which you should be willing to research a huge amount to achieve the maximum results.
Many big decisions are ongoing, and involve continuous change. It’s essentially impossible to maximize them, so you try to make improvements over time, never being satisfied (thus the difference vis-a-vis medium decisions). Thus if a hedge fund has a successful investment strategy they aren’t going to just sit on it, they will continue to work on improvements and new strategies.
In software, big decisions typically involve key business objectives. For example, figuring out product-market fit (what should your software actually do) is a big decision. Choosing methods for detecting fraud can be a big decision (depending on how prevalent and significant it is). For everyday software engineering work, rarely are you making big decisions. If you’re just building another CRUD app or using some existing infrastructure, just go with the satisficing approach (this often means just do what worked before).
However, there are rare cases in which seemingly everyday problems actually are more important than they seem. The very best engineers can identify these as being big decisions in secret, for which it’s worth investing in a better solution. Consider the development of something like MapReduce, Node.js, or GraphQL. These were all dealing in a space in which there were existing solutions that could have been applied. But the creators of these technologies realized that in this case it was important enough to do better that it was worth the extra investment. Being able to identify such opportunities comes with experience (and a lot of luck).