Monday, July 24, 2017

Simplicity


Came across this nice talk on the pursuit of simplicity in building software - by Rich Hickey, the father of Clojure. Apart from correcting a few mis-notions around the terminologies of simple versus easy, he also contributes his new-found dictionary word, "complect", to the software vocabulary! And goes on to draw such a nice parallel between the human limitations in dealing with complexity/complected pieces vis-a-vis those in juggling too many balls in the air. Here's his very apt analogy -
The average juggler can do three balls. The most amazing juggler in the world can do like nine balls or twelve, or something like that. They can't do twenty, or a hundred. We are all very limited. Compared to the complexity we can create, we are all statistically at the same point in our ability to understand it, which is not very good.
Tells you something about how important undivided time and attention really is, and why distractions, multi-tasking/context-switching are such sure productivity-killers for even the smartest amongst us!; and why some of the finest minds you meet seem to be frantically striving to simplify and avoid what has come to be known (and dreaded) in software as "accidental"/"incidental" complexity (as opposed to "essential"/"inherent" complexity) - un-tangling things so as to be able to grasp them in isolation, stripping them down to their bare essentials, and putting them neatly back into their right place.

The philosophy of simplicity, of course, uniformly applies to every facet of life in general - for instance, falsehood, in whichever of it's multifarious forms, hugely complicates life by tangling the true with something that is not true. And Christie would extol the virtue of simplicity even in unraveling mysteries! - by claiming that the simplest explanation is always the most likely! :)

No comments: