Tradeoff Analysis

Often times the factors you need to consider for making a decision are more complicated. You might be able to make better decisions or just reduce the time it takes to make decisions in multiple facets of your life, like picking what food to serve at a party, choosing your next car - hybrid, electic, or “efficient” fossil fuel burner, or picking a technology to use on your project. This approach gives you a process you can follow in order to make better quicker decisions aligned to what you care about.

What is a tradeoff analysis?

A tradeoff analysis is an approach for optimizing your decision making process for your specific needs based on comparing the impact of features of an item where some features might be beneficial and others less beneficial. This analysis compares the impacts of those features to get to an optimal decision. This can also be used to compare multiple items against each other using a comparison of the same features.

In 1772 Ben Franklin wrote in a letter of a similar approach that he used to help make choices - here
This is the simplest version you can use - and you probably have used it before.

Why should you care (technology perspective)

  • Less ecosystems today are single tool focused. There is more freedom to diverge and make decisions on a product by product / team by team basis —> so there are more decisions to be made and there is no excuse to go with a technology that doesn’t quite fit besides being a lazy/easy choice.
  • More highly opinionated and evolving products and technologies available to choose from. This leads to more technologies to choose from and each having a features (opinionated design decision) that can impact your product for better or worse. Our technology stacks are much deeper than ever before. Ten years ago your stack was probably html/js/.net/sql server (or a similar version) and now it sounds like someone speaking in tongues like (bootstrap/typescript/angular/jasmine/karma/protractor/.net core/autofac/jenkins/cosmos/mesh/azure …). With the need to make more decisions and leverage other products along the way, you need to make opinionated decisions matching your opinionated design decisions.
  • There is an increase in distributed systems / microservices and loosely couples systems. This is similiar to the other two points above where more decisions need to be made and you can drastically improve or damage your service with the right or wrong choice.
  • Team empowerment leads to less centralized decisions and more diverse technologies and tools where teams could be working in different technology stacks with different architectural approaches.
  • Easier to change and swap out technologies than in the past, which leads to more opportunities to pick and choose technologies.
  • With the increase in use of open source technologies, its not just buy vs build – now it’s buy, build, or leverage
  • When good enough is not good enough!

My alternate approach to doing a tradeoff analaysis

  • Watch the video above for an example (coming soon)

  • Whenever I realize that there is more than two criteria that I am weighing in order to make a decision or this is a high stakes decision that I want to improve the likelyhood that I make the best decision I can - I take a step back and pull out a piece of paper or my favorite text editor (VS Code).

    • Write down the things that I care about (features to compare, or areas I want to make sure I consider) with what I care about clearly detailed. (Let’s call these features)
    • Write down the things/approaches/options you are trying to decide between (** and let’s call these Items**)
    • Process
    • Go through each item individually and consider each feature. I think about how that item would work for that feature.
    • Then (this is the most important step the tradeoffs) consider if that feature could impact any other feature.
    • After I go through all of the features for that item, I review what I just did and in writing (or right out loud) I detail the reason why I would or would not choose that one. If you have a favorite, be careful that you are not embellishing that one or others - be fair and objective.
    • Then I go through all the features for the next item and recurse.
    • In the end the decision is yours, but this will give you a great summary to make the decision.
    • TIP - Imagine you are explaining why you are making the decision to someone else. Justify your decision with words - say it out loud - don’t worry everyone does it.

Tips for doing this

  • Focus on the dependencies [Doors and Corners] - that’s usually where items that could impact you the most will pop up
  • You done have to use a weight if you dont need to
  • Your documentation is for your future self and others that want to come back and understand your reasoning
  • Go at least deep enough where your reasoning for using the selected item makes sense, go deeper when you are honestly unsure
  • Don’t fake it or half-ass it - the quality of your work is what will stand out in the long run

The official industry approach

  • The other approaches I have seen in the industry (links below) are more product/choice/item comparison approaches than looking for tradeoffs across the specific product/choice/item. You may have seen these approaches in the past and just not known the names of them. They often look like a large matrix where the products are on one dimension and the areas to compare are on the other dimension and then there is a score and a weight on each line. Sometimes these are subjective and there is a tally of votes.
  • My personal experience is that when these become subjective that you should not do scores and just list out the benefits and/or concerns of the items. Scores often become biased in this cases where there is no exact way to measure it. This will help get the discussion points on the table early on which, (regardless of how painful it might be) is what will truly help you make the best decision possible.
  • Here are some examples of those methods:

When I think you should use either approach

  • My tradeoff approach

    • useful for non-technical decisions
    • useful for initial comparisons - perhaps use before you have your short list. You will learn more about the option itself this way
  • Industry Tradeoff Approach

    • useful when you have multiple stakeholders that all get to sit at the table for decisions
    • useful when the politics of multiple stakeholders prevents you from having an honest conversation about the options (it happens more often then it should)
  • Sucker’s choice —> Why not both?

    Often times when given two options we feel like we have to choose one or the other. But why not choose both? If you are in a crucial position where stakes are high and you really need to make the best choice you can with the information you have - then I recommend that you do the following.

    1. Use the “my tradeoff approach” first to help understand the tradeoffs of that item itself. This will help you get a more detailed understanding of that specific item and how it will work in your environment.
    2. If then you still feel like there is no clear obvious winner then it would make sense to use the industry approach to compare the individual items against each other to see which one makes the best choice.
    3. This is obviously more effort, but in the long run we excel through better analysis and in cases where you care more than just “good enough” this would be prudent.

Photo by Jens Lelie on Unsplash