If it's not a tradeoff it's a mistake
Whenever I need to make a decision I use a model because in software, every decision has a tradeoff. I find that using a model is extremely valuable as it helps put polarising views into perspective. For kicks, let’s discuss choosing a javascript framework (yikes).
Gabriel Fortuna (@gee_forr on Twitter) once said something to me along the lines of “if you don’t consider the alternative, you’re not making a tradeoff, you’re making a mistake”. This has stuck with me, and as I introspect on pending decisions in my life, I noticed that many of my past decisions were not based on a tradeoff of the alternative but rather on my feelings at the time. Knights of Columbus! I’ve made so many decisions based on bias and personal preference instead of considering the spectrum of alternatives!
Software is weird
The world of software is strange to say the least. It’s a world where the answer “it depends” is simultaneously the best and most disappointing answer. In a world where there are, ironically, a million opinions but little authoritative data and where little is starkly black and white, I need to be rational and consider my options. In order to do this I use a mental model.
What is a mental model exactly? Without making this an academic exercise, a mental model is simply a thought process or framework to help one better understand something in the world. It’s quite a popular technique in productivity circles, but the one I am going to share today is particularly useful when discussing contrasting points of view.
The (invisible) Spectrum of Tradeoffs
Whenever I consider a polarizing decision or contrasting concept, I imagine an invisible spectrum. On this spectrum lies the opposites or extremes of whatever I am considering. In software it is often a belief that a specific methodology or coding style is the most effective. As a painfully relatable example, I will decide on what Javascript framework to use for a fictitious side project:
Questions? I’d be humbled and happy to help.