> A complex initiative requires picking the right tech that gives you a good benefit/cost ratio.
That choice should never be a one way door, you don't control your customers or the future, it is the frame problem.
The idea is to be able to iterate and adapt, not get things perfect from the start.
It is fine and expected that one will use past experience as a starting point, but you always have to reflect and check your assumptions along the way.
It is a complicated topic ruled by nuances and contexts, but if you cannot pivot away from your initial assumptions over time, that lets you know you are leaking implemention details.
While time is limited and abstractions have a real cost, you need to apply them where they make sense.
Some, like just breaking code onto two files in the same directory are fairly low cost, others are much more expensive.
For several years I was jumping in to save failed cloud migrations.
Whenever tech was the 'blocker' it was because of a myth that there was only one way to do things.
But lets say you are writing machine code for Apple silicon? Do you really think those registers are concrete? They aren't. They are a facade hiding 100s behind a legacy interface.
Vendor mitigation important and often neglected and also results in people producing balls of mud.
But there are a lot of distributed monoliths pretending to be micro services out there. And we had decades of people producing fragile enterprise service buses that were built because people wanted to future proof their systems.
The sizing of components and balancing integration and disintegration drivers is incredibly hard, you will never get it right.
You have to leave options open, no matter if that is through abstractions or keeping biz logic centralized to assist in a easy rewrite of context boundaries that arise from scale or changing needs.
Obviously choices have benefits and costs, but for most needs you can keep options open, if not it is probably best to reevaluate the reason for choosing a solution.
Obviously there are predatory vendors like Oracle that base their entire income on captive customers, but that relates to the vendor mitigation above.
I think the US federal government de-risking guide is a good overview of that topic. Microsoft is a strong driver for this BTW.
https://guides.18f.gov/derisking-government-tech/