vladimir piskarev's blog

Musings on the Eclipse Handly project and software development in general

Category: Quotes

Alan Kay on delight in complexity and the joy of simplicity

It seems that I’m in the mood to paste some quotes on the blog. I hope that the reader will forgive this weakness of me; my purpose is not to amuse you per se (though I would be happy if you’re amused), but rather to leave some reminders to myself on what can be important to think about in general.

This quote is from Alan Kay’s Turing Award talk at OOPSLA ‘04:

An ancillary problem is that our field and people in general take great delight in complexity. If you go to schools, it’s remarkable how much work they make the poor kids do, when if they taught the math better and differently, the kids would be doing much less work. But in fact, people delight in complexity and think that putting immense amounts of hard work in, even if there’s an easier way, is actually — there’s something morally good about it.

And so I think for our field, one of the hardest things is the delight in complexity. Because of many levels of structure in computing, and difficulty of going from one level to another, pretty much everyone who gets interested in computing and successful at it is a person who has mastered staggering amounts of complexity. I believe that most of this complexity is absolutely unnecessary, and I believe it can be proved that it’s unnecessary.

So what we really want is to find the joy of simplicity… All the projects I’ve been involved in have been successful, successful because the people who worked in them put quite a bit of effort into keeping things simple, and this community of ARPA and then Xerox PARC was outstanding at being simple.


A quote from “Hints for Computer System Design” by Butler W. Lampson

Designing a computer system is very different from designing an algorithm:

  • The external interface (that is, the requirement) is less precisely defined, more complex, and more subject to change.
  • The system has much more internal structure, and hence many internal interfaces.
  • The measure of success is much less clear.

The designer usually finds himself floundering in a sea of possibilities, unclear about how one choice will limit his freedom to make other choices, or affect the size and performance of the entire system. There probably isn’t a ‘best’ way to build the system, or even any major part of it; much more important is to avoid choosing a terrible way, and to have clear division of responsibilities among the parts.