In Search of Simplicity

I'm a big fan of simplicity. Not because I do not like complex things. The most beautiful things tend to be complex (people, galaxies, life, etc). I like simplicity because when applied correctly it leads to a fuller better experience.

Now that sounds a bit vague and also perhaps pompous. Yet it is also true that if you want to lead a less stress filled life, you should simplify your life. To me simplicity is not necessarily something you need to use in extreme.

For example, one way to simplify your life is instead of having a breadth of hobbies that you do not delve deep into, is to have a few hobbies that you do delve deep into. Or another example, instead of dramatically changing your lifestyle and diet to loose weight, change a little bit of various things like fruits and vegetables as snacks, taking the stairs more often than not, and more water than soda.

You may question whether these are really examples of simplicity, and you would be right. They are examples of a less extreme simplicity. Simplicity is not just about non-complexity. It is how you view the world and your interaction with it.

Here is another example, more near and dear to my own heart, software. These days we have come to the age of software bloat. After several iterations and revisions software becomes complex, unwieldy, and generally a pain to use. When we see software that is new and not riddled with tons of features and legacy we think of this software as refreshing.

Software caught up in feature creep tends towards not only being complex but also suffers from features that just plain don't work. If one of those features is a piece core of the software it can be rendered unusable. By focusing on a core set of features, simplifying the software, developers can better guarantee that the software does those core things very well.

But of course, just as you don't want to take the simple but extreme choice of going on a major diet (regardless of tendencies to fail anyway), you don't want software that can only do a very small set of things (even if it does them better than any other software).

For one thing, you'll never sell another version of your software that way, you will always have to add more and more features. You just do it at a slower pace and always keep an eye on not loosing to bloat and complexity. Two, users want features! Each and every user wants that one feature outside of the core set. They will be passionate about it and will tend to not use your software if there is another available even if that other software is more complex, with more bugs and bloat, but does do what they want.

So whats the solution to that second part? Perhaps the most complex feature a piece of software can have. Plugins, extensions, the ability to build macros or use the API. It is complex, but perhaps the simplest solution to the problem. Developers can focus on the core feature set, and the plugin system, while users can to their hearts content add any feature they want. You end up with a loyal base of users doing things with the software that even the developers never thought of.

So simplicity comes into play to solve a complexity problem, even if the solution itself is complex, though less complex than the problem itself was.

posted by dharh 2:47 AM Nov 17th, 2007

2011: 5 3 1
2010: 12 9 7 1
2009: 12 11 8 5
2008: 12 5 4 3 2 1
2007: 12 11 10 9 8 7 6 5 4 3 2 1
2006: 12 11 10 9 8 7 6 5 4 3 2 1
2005: 12 10 7 6
2004: 10 9 6 5 4 3 2 1