Steve McConnell helped us understand how poorly timed thrashing sabotages every failed software project. It turns out that the problem extends far beyond software.
Any project worth doing involves invention, inspiration, and at least a little bit of making stuff up. Traditionally, we start with an inkling, adding more and more detail as we approach the ship date. And the closer we get to shipping, the more thrashing occurs. Thrashing is the apparently productive brainstorming and tweaking we do for a project as it develops. Thrashing might mean changing the user interface or rewriting an introductory paragraph. Sometimes thrashing is merely a tweak; other times it involves major surgery.
Thrashing is essential. The question is: when to thrash?
In the typical amateur project, all the thrashing is near the end. The closer we get to shipping, the more people get involved, the more meetings we have, the more likely the CEO wants to be involved. And why not? What’s the point of getting involved early when you can’t see what’s already done and your work will probably be redone anyway?
The point of getting everyone involved early is simple: thrash late and you won’t ship. Thrash late and you introduce bugs. Professional creators thrash early. The closer the project gets to completion, the fewer people see it and the fewer changes are permitted.
Every software project that has missed its target date (every single one) is a victim of late thrashing. The creators didn’t have the discipline to force all the thrashing to the beginning. They fell victim to the resistance.
Seth Godin. “Linchpin.”