Simplicity is Complexity Resolved…

A while back, I had the chance to visit the Nasher Sculpture Center here in Dallas. Like many museums, they give you a set of headphones and a portable media player which you can use to listen to additional information regarding the artists on display (you type in the number on the particular piece you’re looking at, and it dials up an audio clip on that particular work / artist).

While wandering through the exhibit, I came across some of Constantin Brancusi’s work. Constantin Brancusi was an artist back in the early 1900’s. He was famous for his simplistic, yet elegant style. One of his most famous works is entitled “The Kiss” (picture shown below) :

Brancusi, The Kiss (1907)

The audio clip for this work struck a chord with me because his commentary on simplicity certainly has relevance when applied to the discipline of software engineering. The clip for this particular sculpture was quoting Brancusi on simplicity :

“Simplicity is not an end in art, but one arrives at simplicity in spite of oneself in drawing near to the reality in things.”

And more succinctly :

“Simplicity is Complexity Resolved…”

I’ve always felt that software architects should be uncomfortable with complexity (this is not to say that they shouldn’t be capable of dealing with it, but rather that they should strive to eliminate it at every turn). This natural discomfort constantly spurs them to “look for a better way”.

During the development process, if you find that things are becoming overly complex, perhaps you’ve missed an abstraction. Maybe its time to stop and refactor… Personally I find it very satisfying when I refactor something that was becoming too complex into something that is dramatically simpler. In some ways, this sort of conceptual reduction seems analagous to reducing a mathematical equation into its simplest form.

As Fred Brooks might say : Ahh… the joys of our craft 😉