It is common for engineers to obsess with designing the perfect solution prior to getting started on it. This is often referred to as Upfront Engineering or Big Design Up Front.

With the iterative approaches of Scrum and other Agile methodoligies, as well as Test-Driven Development we’ve learned that it often makes for a better, and faster, outcome if we instead gradually and incrementally refine our plans as we learn more about the problem we are solving.

This relates to the idea ”Increments are useless until they have been released” expressed in Lean and DevOps.