"Customers order and buy software to mirror the real world as they see it. For this reason, a deep understanding of their business domain is key to write successful software. Analysis is more important than ever but analysis is a lot more effective with an initial sprint zero—which is just a fancier name for a lightweight form of waterfall. Well-designed software is any software that understands and matches the business domain and that is easy to modify, adapt and even rewrite. Yet, developers make a point of using appropriate OOP techniques, inheritance, complex models that may enable a change via dependency injection. All good, except it’s deadly wrong and out of place in this version of the real world."