Beauty Is in Simplicity

From WikiContent

Revision as of 20:27, 9 August 2009 by Joelmheim (Talk | contribs)
Jump to: navigation, search

I love quotes. There is one quote that I particularly think is good for all software developers to know and keep close to their heart:

Beauty of style and harmony and grace and good rhythm depends on simplicity — Plato

In one sentence I think this sums up the values that we as software developers should live by.

There are a number of things we strive for in our code:

  • readability
  • maintainability
  • speed of development
  • and the elusive quality of beauty

Plato is telling us that the enabling factor for all of these qualities is simplicity.

What is beautiful code? This is a very subjective question, and peoples perception of beauty depend on their background (just like all our perceptions depend on our background). People educated in the arts have a different perception or at least approach to beauty than people educated in the sciences. Arts majors tend to approach beaty in software by comparing software to works of art (duh), while science majors tend to talk about symetry and the golden factor, and try to reduce things to formulas. In fact, in my experience, simplicity is the foundation of most of these arguments.

Think about source code that you have studied. Seriously, if you haven't studied other people's code, stop reading this right now and find some open source code to study. Really! I mean it! Go Google for some code in your language of choice, written by some well-known, acknowledged expert.

You're back? Good. I have found that code that resonates with me and that I find beautiful, have some common properties, chief among which is simplicity. I find that no matter how complex the total application or system is, the individual parts has to be kept simple. Simple objects with a single responsibility containing simple focused methods with descriptive names. Some people think the idea of having short methods of 5 to 10 lines of code is extrem, and some languages make it very hard to do this, but I think that this should none the less be the goal.

Personal tools