Most new products are upgrades

August 21, 2006

Most new products are upgrades of old ones. I don't mean in the sense of upgrade sales (although that too), but in terms of the code they're built from; they are revisions of existing codebases, not freshly written from scratch.

This has extremely rational economic and development reasons, as articulated by Joel Spolsky among others; there is a lot of money and value in existing codebases. But ignoring all the arguments about cost and captured knowledge and so on, there's another big reason this is necessary: it's our lack of programming productivity. We just can't (re)produce the code that fast; if we want to move forward, to have new features and so on, we have to reuse the existing codebase.

And having new stuff is what drives development; if there's nothing new, there's no point in doing it. (Mind you, sometimes the 'something new' is 'works on a new machine' or 'has less bugs'.)

The only area that I think still approaches a 'build it from scratch every time' model these days is games, and my impression is that even there it's no longer really true, now that there are graphics engines and physics libraries and so on. (And using them is increasingly necessary to get a modern game out in a sane amount of time.)

(To a fair extent the smaller your product is, the more you can change it each time. I suspect that this is one factor that gets companies into rewrite trouble as they grow, because they usually start with small products.)

Written on 21 August 2006.
« How not to set up your DNS (part 10)
fork(), wait(), and threads »

Page tools: View Source, Add Comment.
Search:
Login: Password:
Atom Syndication: Recent Comments.

Last modified: Mon Aug 21 23:16:33 2006
This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.