In a couple of my last articles, I emphasized the importance of different software engineering trade-offs, for example, here. I have been trying to point out that focusing on maxing out just one trait can cause problems in others. I believe that the main part of our job as software engineers should be to min-max different software engineering trade-offs and even the trade-offs of different combinations of trade-offs.
Software engineering is the art of constantly balancing all these things. Below you can find eight trade-offs, plus their pros and cons. I will also share a very simple framework for navigating software engineering trade-offs.