I think we're quite lucky in our industry. Software development is still a relatively young field and we just happen to be alive in a time when it is thriving. There are so may different flavours and styles; it feels like there are more new languages and frameworks and libraries every week.

Something that all have in common, regardless of the tool you use, is that we're attempting to create something meaningful out of the potential chaos of 1s and 0s. I'm not particularly good at drawing using the traditional tools of pen and paper. Nor would I consider myself versed enough to create beautiful mathematical equations to prove popular theorems. However, by being a developer, I've found myself in a position to be lucky enough to express myself in both aesthetically and mathematically through the code that I write.

When I was younger, I never really used to get that about our field, but as I gained experience, I could really see it.

The elegance of expressing an idea in the simplest way possible is, I think, quite beautiful. This beauty can be expressed in both aesthetic (how the code actually looks on the page, or for CSS, how the rendered markup looks) and mathematically (flow of execution of the program, the limiting of wastage) And these ideas are all stacked on top of each other to create something more meaningful that the sum of its parts.

I know this all sounds quite wishy-washy so lets imagine a quick example.

Imagine a function that takes a date and a time and converts it into a number. The higher the number, the more in the future the date and time is. OK, that sounds fine, but not very useful. It sounds like a simple exercise though, if a little pointless. Next, imagine the code for a sort implementation that takes an array of numbers (maybe those number we just compiled) and then calls itself recursively on a subset of those numbers in order to sort the list into ascending order. OK, this sounds pretty nice, but it's not really doing anything other than sorting a list of numbers.

Now, if we take this sorted list and put through a function that is the reverse of the original date/time function, we'd now have a sorted list of dates and times. This tiny implementation of a few simple steps could now be built on by a variety of other systems... anything from an airport departures board (this list could be fed into another function which cross references date/time with expected flights) to a digital To-Do list.

Small simple steps are joined together to make something more meaningful than themselves. The elegance, for me at least, comes from seeing these things built and interacting in the most simple way possible. This elegance also comes with the side-effect of the code being robust, as they have fewer moving pieces, there is less chance for things to break.

I think the funny thing with this 'less is more' mentality is that it is shared by many different philosophies and ways of thinking. For example, a man not known for his software development ability, Bruce Lee, once said 'It's not the daily increase but daily decrease. Hack away at the unessential.' I'm not sure if he was directly referring to obfuscated code, but I like to think he was!