March 8, 2018 Thrashing

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.”

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s