[A picture of private offices at Fog Creek Software]

Joel on Software

Elegance

by Joel Spolsky
Friday, December 15, 2006

Alain de Botton, writing in The Architecture of Happiness (Pantheon Books, 2006) has a section on elegance that any software designer will find familiar.

He compares the Salginatobel Bridge, in Switzerland...

  

...to the Clifton Suspension Bridge, in England:

... in one of the most amazing books about architecture I've ever read:

“Both Robert Maillart’s Salginatobel and Isambard Brunel’s Clifton Suspension bridges are structures of strength; both attract our veneration for carrying us safely across a fatal drop—and yet Maillart’s bridge is the more beautiful of the pair for the exceptionally nimble, apparently effortless way in which it carries out its duty. With its ponderous masonry and heavy steel chains, Brunel’s construction has something to it of a stocky middle-aged man who hoists his trousers and loudly solicits the attention of others before making a jump between two points, whereas Maillart’s bridge resembles a lithe athlete who leaps without ceremony and bows demurely to his audience before leaving the stage. Both bridges accomplish daring feats, but Maillart’s possesses the added virtue of making its achievement look effortless—and because we sense it isn’t, we wonder at it and admire it all the more. The bridge is endowed with a subcategory of beauty we can refer to as elegance, a quality present whenever a work of architecture succeeds in carrying out an act of resistance—holding, spanning, sheltering—with grace and economy as well as strength; when it has the modesty not to draw attention to the difficulties it has surmounted.”

In that context, I’d like revisit my recent themes of choices and simplicity and add a third concept, elegance.

People, for the most part, are not playing with their software because they want to. They’re using the software as a tool to accomplish something else that they would like to do. Maybe they are using a chat program to try and seem witty, in hopes that the person they are chatting with will want to spend time with them, so that, ultimately, they have a better chance of getting laid, so that, ultimately, their selfish DNA will get to replicate itself. Maybe they are using a spreadsheet to try and figure out if they can afford a bigger apartment, so that, ultimately, dates will be more impressed when they come over, increasing their chance of getting laid, again, benefitting the DNA. Maybe they’re working on a PowerPoint for the boss so that they will get a promotion so that they’ll have more money which they can use to rent a larger apartment that would attract mates, thus increasing their chance of getting laid, (getting the idea yet?) so the selfish DNA can replicate. Maybe they are looking for a recipe for goat cheese ravioli on the Internet, etc., etc., … DNA.

Unless they’re software reviewers for a living, they don’t really care about the software itself, and the more they notice it, the more annoyed they’re going to be.

Choices, therefore, can be good or bad. They’re good when they support the task the user is trying to accomplish fairly directly. I want to be able to choose who to chat with (duh.) They’re bad when they represent an intrusion into the user’s actual DNA-replication goals. Every few days some crappy software I can’t even remember installing pops up noisy bulletins asking me if I want to upgrade something or other. I could not care LESS. I’m doing something. Leave me alone! I’m sure that the team at Sun Microsystems who just released this fabulous new version of the Java virtual machine have been thinking about the incremental release night and day for months and months, but the other 5,000,000,000 of us here on the planet really don’t give a flying monkey. You just cannot imagine how little I want to spend even three seconds of my life thinking about whether or not to install that new JVM. Somebody out there is already firing up Gmail to tell me that the JVM mustn’t just upgrade itself “because that might break something.” Yeah, if the entire collective wisdom of the Java development team doesn’t know if it’s going to break something, how am I supposed to know? Sheeesh.

If you’re using the term simplicity to mean “grace and economy” or “elegance,” that’s terrific. A great example of this is the difference between the way you search for music on Rhapsody and the way you search for music on iTunes. Rhapsody makes you decide if you want to search for albums, tracks, or artists. iTunes doesn’t give you any choice: it just searches all fields, which works just as well and is easier. Economy means power, in this case, and it’s a feature.

On the other hand, if you’re using simplicity to mean a lack of power, a lack of features, that’s fine, if you want to be in the paper clip business, good luck with that, but the chances that your product will solve my exact problems starts to shrink and your potential market share does, too.


Have you been wondering about Distributed Version Control? It has been a huge productivity boon for us, so I wrote Hg Init, a Mercurial tutorial—check it out!

Next:

The Big Picture



Want to know more?

You’re reading Joel on Software, stuffed with years and years of completely raving mad articles about software development, managing software teams, designing user interfaces, running successful software companies, and rubber duckies.



About the author.

I’m Joel Spolsky, co-founder of Trello and Fog Creek Software, and CEO of Stack Exchange. More about me.

© 2000-2014 Joel Spolsky