Have you ever started a new software development job and thought: “Wow, what a beautifully architected system! Most of us are dreadfully aware of the dashes of technical debt we sprinkle into our codebases every day, all in the name of getting the job done.
Assuming you have good engineers, your architecture is probably bad due to business decisions, not technical ones.
It’s sometimes a good decision to take on technical debt, but we need to acknowledge that the debt must eventually be paid back.
Your goal is to engineer a system that does its job while delaying decisions you don’t need to make until you have more information.