Douglas Crockford




2022 Appearances





How JavaScript Works

Electric Communities





I am a computer programmer. My job is instructing computers to do useful things. At a basic level, this is fun and easy. But as our ambitions increase, the behaviors we are designing and their expression as programs quickly get very complicated. That complexity increases the cost of further development and reduces reliability. Programming is mostly concerned with the management of complexity.

That makes me a sort of efficiency expert. I am constantly looking at the thing in front of me, pondering ways to simplify it. Can I express this thing with fewer rules, and especially, with fewer exceptions? If I can, then the system becomes simpler and easier to understand. When programs become so complex that they go beyond human comprehension, then bugs are an inevitable result.

That is how I look at programming languages, and also how I look at human languages. English is my mother tongue, and there are things about English that I really like, but it also contains weirdnesses and special cases that serve no purpose except to make the language harder to learn and harder to use correctly. These are not the worst things the English have ever done (I'm looking at you, royals) but they are problems, and I think that they should be repaired.

My recommendations might seems bizarre, but they are quite logical. They look bizarre because they are not what we are used to. They are unconventional. I am not a traditionalist. If there are things that we do that are wrong, then we should stop doing them, even if we have always done wrong. I am always ready to discard tradition to pursue a better way.