Sep 7, 2018 · 1 min read
Perfect is the enemy of good. Google it — this has been known for a long time.
You cannot finalize the design until you know you have the right requirements, which requires getting feedback on the delivery of vertical slices of working software.
Whatever design work you advocate can be done concurrently with delivering vertical slices of working software using simple code with automated tests that is easily refactored into whatever architecture is appropriate for what we discover the customer actually needs to achieve their objectives.
The more design you do before discovering what the customer really needs, the more difficult it is to refactor to the appropriate design/architecture.