Software is the most malleable building material we've ever created, and yet Technical Debt continues to plague the choices we make when building applications. When we talk about starting new projects, there's always a debate over getting something out the door knowing we're taking on Technical Debt in order to "move faster" versus taking our time to build it properly and risk over-engineering and possibly overfitting our application to an unknown problem. Can we avoid this Kobayashi Maru? Like what Docker did to decouple the Infrastructure Layer from the Application Layer, we can decouple the Business Application from its Technical Architecture. From 20 years of experience building software applications for different domains, I'll use many code samples and example applications to show how we can change the technical architectural choices of without affecting the business logic, and prove it's possible to decouple the application from the architecture so we can be fast and build it right.