Tuesday, March 6, 2012

Pictures From Last Weekend

After my last blog post a few folks asked me what else I'm doing on weekends besides watching software geek videos :) Yeah I do that, and I also hack on some open source projects to free my mind from the week's routine, but I just wanted to reassure everybody that I also have a real life, with some pictures from last weekend.

Saturday - Squaw Valley
I had initially planned some ski races (slalom on Saturday, GS on Sunday) but preferred to do a family ski day instead. We had a great time! good snow, amazing weather and stunning views of Lake Tahoe as usual.

After last week's snowfall, Squaw was a little crowded, and I'm glad we drove up early in the morning so we didn't have to park like this:

Sunday morning - Breakfast in the backyard with a friend
Deers come to our backyard all the time as some of it is wild and not all fenced. Before moving here I never imagined that Silicon Valley was in the country!

Sunday afternoon - Pacific Ocean, San Gregorio State Beach
Picnic time, relaxing and enjoying the view. Isn't that beautiful? Where else in the world can you ski on Saturday and go to the beach on Sunday?

Simple vs Easy, or How Going Easy Creates Complexity

Last weekend I watched an entertaining presentation of the key differences between Simple and Easy from Rich Hickey (the inventor of Clojure).

I had already watched it last year, and found it enlightening again! In a nutshell, Rich Hickey argues that:

Simple is the opposite of complex and means one fold, one braid, one pure concept or dimension not polluted or interleaved with unnecessary aspects. Simple is an objective measurable quality of the end product, but simplicity, purity and design elegance are hard to achieve.

Easy is the opposite of hard and means near your capabilities, familiar, and requiring no effort or reflection. Easiness is relative and depends on who's building the software, as something easy for you may not be easy for me.

Unfortunately, many software projects choose to go Easy (cheap) vs Simple (hard and requiring to think harder up front). These projects create incidental complexity -- or just a mess -- by using tools and constructs that are not right for the job and drag unnecessary constraints and dimensions into the end product.

Sounds familiar?

One of the things I love with open source development is that you can't choose the easy route. If you sacrifice simplicity by choosing the easy route in the open, in public, there'll be no place to hide it. Be assured that someone will get on your project mailing list and comment on the mess you've created or, even better, he'll make the effort to think harder and show the world a simpler alternative to what you've done.

Could it be one of the reasons why open source wins?

The postings on this site are my own and don’t necessarily represent positions, strategies or opinions of my employer IBM.