After 25 years in software development, I’ve come to realize that every decision involves a trade-off.
Do you need to make an algorithm highly performant? Then you may need to make some sacrifices in maintainability and readability.
Do you need to make the architecture of a software system extremely flexible and resilient to change? Then you may need to make the architecture more complex.
Do you need to use a framework that is a great fit for solving specific business needs?