Programming and safe theater or Things you have to do but shouldn’t if you can avoid doing them at any cost
Posted by Jason Baker on May 14, 2009
Joel’s (in?)famous article saying never to rewrite your software seems to be circulating again on Hacker News. Essentially, what Joel is getting at is that software companies must never, ever under any circumstances rewrite their own software. I must say that I agree with Joel for the most part. While I agree with most of what Joel says, I disagree with the ultimate conclusion that Joel draws from it.
I’m reminded of a scene from Hamlet 2 (which I’m paraphrasing from memory here):
Student: I was thinking: what if we had lowriders come across the stage in the final scene?
Mr. Marschz: That sounds dangerous.
Student: Ok, nevermind.
Mr. Marschz: No, I’m not doing safe theater. Let’s do it!
Joel’s stance is “safe theater” for programmers.
Still not convinced? Does safe theater sound just fine with you? Willing to quote Joel’s stance on this unwaveringly? Well, I counter your Spolsky with a Kay!
I believe that the only kind of science computing can be is like the science of bridge building. Somebody has to build the bridges and other people have to tear them down and make better theories, and you have to keep on building bridges. –Alan Kay, quoted from A Conversation with Alan Kay
Granted, I don’t necessarily agree with Alan 100% either. I think there’s a happy medium here. When you get down to it, the risks in rewriting your software that Joel mentions are very real risks. And several companies have found this out the hard way.
The problem is that you can’t innovate without taking risks, and a software rewrite is the ultimate risk. Unfortunately for us, we as programmers are in the business of innovation. Unwillingness to take risks is a sure route to becoming a “greybeard” who only codes COBOL on mainframes because it’s what they know. I don’t know about you, but that’s not the kind of career that I had envisioned.
So you’re saying I should rewrite, correct?
Remember, when I said that I agree with Joel for the most part, I meant it. A complete software rewrite is a crazy and maybe even a stupid move. If you really want to innovate, sometimes you have to do things that are crazy and stupid. But remember that the decision to completely rewrite a piece of software can be a job-ending or even business-ending move. So if a blog post by me is enough to convince you to do the rewrite by itself, don’t do it.
Credit where credit is due
In fairness, I don’t think even Joel 100% believes software should never be rewritten. In a book, he praises Microsoft for writing .net even though it violates his “never rewrite” rule. Granted, this is because Microsoft is “a center of gravity,” which is something that we can say about very few companies.
But even though this is a very small exception to Joel’s rule, it’s still enough to say that Joel doesn’t believe his blog post 100%. But even if he still believes it 99.9%, there’s still 0.1% of leeway. And never underestimate what a really good programmer can do with that 0.1%.