Premature optimization: the root of all evil

I have to post this – I ran across it again today.

Premature optimization is the root of all evil.

– Donald Knuth

The whole quote is actually “Premature optimization is the root of all evil (or at least most of it) in programming,” but it’s much more impressive in the short form, don’t you think?

I think it’s true in a lot of settings, business processes included. Why? Optimization, by definition, makes a particular engine/application/process better at doing a particular set of things.

The problem is that when you pick up one end of the stick, you pick up the other end too. When you optimize for X, most often you are de-optimizing for Y, and probably Z as well.

When you do that too early … you don’t really know enough about the problems you’re facing and the problems you’re going to face to know what to optimize. You’re actually better off having a un-optimized process, running through some iterative cycles, and then optimize it once you know more.


There are cases where you do not want to optimize at all. Example: the internet. Since it is so radically un-optimized for any particular thing, it has provided an incredibly huge field of opportunity for an enormous number of applications, protocols, and uses. That’s why, for example, France’s Minitel never became anything even close to the web.

. . .
. . .

Knuth is an author and computer scientist.

[tags] donald knuth, optimization, systems, minitel, improvement, john koetsier [/tags]