You probably have never heard of Dieter Rams (pictured at left) but certainly know of his work. For many years he was a product designer for Braun and other German companies. Back before Frog and Apple put the "i" in many of its products Braun was selling very elegant items that were well designed, such as calculators, shavers and household appliances. Many of these items can be found in museum collections all over the world today. Rams has had several design shows over the years and is known for his ten principles of "good design," and I thought if we substitute the word "code" for "design" that there is a lot software developers could learn from his principles too. Here they are, with some of my comments.
- Good code is innovative.? One of the exciting things about working in the tech industry is that we still have plenty of innovation each and every day. And the best coding takes advantage of this innovation and wows us.
- Good code makes an app useful?. This seems fairly obvious. We buy or download apps to use them, just like products. But the best apps carry code that can showcase their use and avoid distractions.
- Good code is aesthetic.? Some IDEs can turn code into quite elegant arrangements that could almost hang on your wall, they are so attractive. But understanding the aesthetic of what your code does is also important. In the design world, aesthetic is very important because it is reflected in the products we use. Just look at the crowds inside your average Apple store and how things are laid out, and contrast that with the aesthetic, if you can find it, in your average Best Buy. No comparison.
- Good code helps us to understand an app. And bad code helps us to see a badly designed app too.
Things which are different in order simply to be different are seldom better, but that which is made to better is almost always different.
- Dieter Rams, 1993
- Good code is unobtrusive. Perhaps this talks more about the resulting UI than the actual code itself. But it could also refer to the ability to easily read someone else's code too. Certainly this is the case for open software.
- Good code is honest?. No tricks, no hidden trap doors, no malware needed. And no false advertising either: the code is the core essence of an app, nothing more, nothing less.
- Good code is long-lasting.? Some of the best software programs have been around for decades. They don't go out of style, just like well-designed products.
- Good code is thorough, down to the last detail? Squash those bugs! Find those corner cases! Test and retest with different browsers and environments. Don't leave anything to chance.
- Good code is concerned with the environment.? Again, somewhat obvious.
- Good code is as little code as possible. Sadly, we have moved away from this tenet over the years, look how bloated our operating systems have gotten. I remember the early days when APL was considered the ultimate in coding - a single line could pack a ton of programming horsepower. You needed a special keyboard to code in it:
If you want to see some of Ram's work, go here.