Editorial note: I’ve been on the road for the last week with a pretty hectic schedule — a mix of business and personal. Luckily, I have a lot of cross posts stored that were fairly popular. I originally wrote this one for the NDepend blog. Go check out the original and stick around to look at other posts while you’re there.
Last week, a post I wrote, “The Myth of the Software Rewrite,” became pretty popular. This generated a lot of comments and discussion, so I decided just to write a follow-up post to address the discussion, as opposed to typing a blog post’s worth of thoughts, distributed over 20 or 30 comments. This is that post.
First of all, I want to be clear about what I’m talking about. I’m talking specifically about a situation where the prime, determining factor in whether or not to rewrite the software is that the development group has made a mess and is clamoring to rewrite it. In essence, they’re declaring bankruptcy — “we’re in over our heads and need outside assistance to wipe the slate clean so we can have a fresh start.” They’re telling the business and their stakeholders that the only path to joy is letting them start over.
Here are some situations that the article was not meant to address:
- The business decides it wants a rewrite (which makes me skeptical, but I’m not addressing business decisions).
- Piecemeal rewrite, a chunk at a time (because this is, in fact, what I would advocate).
- A rewrite because the original made design assumptions that have become completely obsolete (e.g. designed around disk space being extremely expensive).
- Rewriting the software to significantly expand or alter the offering (e.g. “we need to move from web to mobile devices and offer some new features, so let’s start fresh.”)
A Lesson From Joseph Heller
Joseph Heller is the author of one of my all time favorite works of fiction, Catch 22. Even if you’ve never read this book, you’re probably familiar with the term from conversational reference. A catch 22 is a paradoxical, no-win situation. Consider an example from the book.
John Yossarian, the ‘protagonist,’ is an anti-heroic bombardier in World War II. Among other character foibles, one is an intense desire not to participate in the war by flying missions. He’d prefer to stay on the ground, where it’s safe. To advance this interest, he attempts to convince an army doctor that he’s insane and thus not able to fly missions. The army doctor responds with the eponymous catch 22: “anyone who wants to get out of combat duty isn’t really crazy.”