The joke is that the consultant's answer to any question is "it depends". An even funnier joke - it actually does!

"It depends" is not a get-out clause; it's an opportunity to surface and understand the trade-offs underpinning a decision. As much as we may reap the benefits of happy accidents, nobody likes to suffer unintended consequences.

Having an understanding of the critical trade-offs at play helps us to make better decisions.

At the coding level, common trade-offs focus on concerns such as resource usage (speed, memory and complexity) and integrity (duplication, consistency, naming). Higher up, we perform "build versus buy" decisions - should we accept a dependency (in the form of a framework or a library) or go bespoke and roll our own implementation? Further, trade-offs inform commercial decisions. For example, launching a new feature before the end of the financial year will have a predicted return. Deferring that feature may mean missing the window of opportunity - a competitor could beat us, or market desires may move elsewhere. Trade this off against what's needed to make this happen and the impact elsewhere. There may be an old product ready for decommissioning, but the longer it stays live, the more maintenance costs it will incur and the higher the chance our team may spend rectifying incidents.

There isn't a correct decision on what to do in these situations. Our role is to make the best decision we can with the information we have. It depends!