Archive for the ‘Design’ category

Do Not Try to Levitate

April 12th, 2010


leaving_the_opera_in_2002

Recently Wikipedia showed one of its gems, a late 19th century futurist painting of the year 2002. In the picture, style has not changed. Neither has locomotion, paddles are used on the aircraft. But levitation has been achieved. Hmmmm » Read more: Do Not Try to Levitate

Software Idealism, Pragmatism and Elegance

January 28th, 2010

GraceKelly

Often when working on projects there are two opposites types of personalities at work: Idealists versus Pragmatists. Often both sides show great animosity for each other. What’s so problematic about battles between idealists and pragmatists is that great solutions to problems are most often combinations of these two approaches. Results come from elegant combinations of pragmatism and idealism. Dogma is the enemy…
Elegance is our best friend. Now before the Dogmatists (Idealists + Pragmatists) claim the elegance of their respective approaches, lets look at the actual definition of elegance: pleasingly ingenious and simple, related to Latin’s eligere, ‘to choose, or select’. Elegance is choosing or selecting a simple and ingenious solution. Nothing more, nothing less. Idealists over-design, in love with excess flexibility.  Pragmatists under-achieve by rushing to action, in love with excess quantity.
Elegance is in finding a fine middle point between these extremes. How to achieve elegance in software design and implementation is not always intuitive or straight forward. One the the best talks on this topic is Jim Weirich’s from Mountain West Ruby Conference 2008. He skillfully combines the approaches of the noble blue collar pragmatists with the space-age white collar idealists. He advocates a path that does not over-design, or over-implement. He points out that a solution must be appropriate to be elegant.
James Joyce said that great writing comes from Wholeness, Harmony and Radiance. I think he meant understanding the problem, creating the right goals, and selecting or choosing the elegant path to meet those goals.  It sounds easy, but simple is much harder than complicated. If one persists, a certain timeless beauty becomes possible. This feeling transcends elegance, and feels like Grace from the constant struggle of the programmers trade.

Often when working on projects there are two opposites types of personalities at work: Idealists versus Pragmatists. Often both sides show great animosity for each other. What’s so problematic about battles between idealists and pragmatists is that great solutions to problems are most often combinations of these two approaches. Results come from elegant combinations of pragmatism and idealism. Dogma is the enemy…

» Read more: Software Idealism, Pragmatism and Elegance

Phil Bolger: An Open Mind

December 28th, 2009

ply_yawl_sail_plan

I have not been writing, nor reading for that matter, over the last several months. So I was excited to have Santa bring me a copy of Phil Bolgers’s Boats with an Open Mind.  Spending the last few days leafing through the work of Phil Bolger reminds me that design is not a job for wimps, or for folks afraid to have strong opinions.

» Read more: Phil Bolger: An Open Mind

The Blue LED of Death

September 11th, 2009

Blue_LED

Recently I bought a nifty little USB charger for my iPod touch and mobile phone.  You can build these things, but I was in a rush, and Radio Shanty had them on sale. I was so pleased at how tiny my vacation bag was without my enormous collection of wall warts.

» Read more: The Blue LED of Death

Software Postmortems are Software Management

August 13th, 2009

Skeletal_Sections

So having been careful about requirements, prototyping iteratively, testing with real users early on and getting it out the door quickly, what now?  No doubt users are calling, or emailing questions, feature suggestions, raves, rants and some, hopefully occasional, hate mail.  There are some naysayers at this point hollering that it went out the door too soon.  Be calm…

» Read more: Software Postmortems are Software Management