Saturday, March 14, 2009

Truth hits

Every once in a while you hear a song and either through the music or the lyrics alone, it touches you deeply. For me, someone who touched me a lot with his music is Van Morrison. "Cleaning windows" was the first time, as I recognized myself as a "working man in his pride", but there are numerous songs by Van the Man that hit home.
During a tough period in my life Elvis Costello's "I want you" went straight through my heart. To have a paragraph of text in a mailing list touch you deeply is extermely rare. Still that is what happened when I read one of Ed Merks' contributions last year on the e4-dev mailing list about choices in architecture. I have been meaning to blog about that statement for a while and I will try to talk to him about it at EclipseCon2009:

Given that architecture involves tradeoffs, optimal is not at an extreme end of some simple curve. There are saddle points as well as various hills, dips, and valleys. So not only is optimal difficult to find, it's difficult to define. So, a design is ultimately arrived at that makes specific tradeoffs. Then someone new comes along and finds a specific tradeoff they feel is less than optimal. They call this a fatal flaw and it represents the reason for a new expedition to explore the territories to find the top of a higher mountain. They'll likely only find another hill and likely it will be no higher (since height is ill defined), but most certainly it will be in a different location, thereby ensuring that the process will always repeat. Given enough exploration, I can hope folks will see the similarities between the hills.

I think this is view is essential when you work on software tooling, libraries and API's. I have tried to bring this point across in many discussions, but never managed to put it as eloquently as Ed did. You make choices and you try to find a sweet spot. It is always easy to find an aspect that can be improved and say you better start fresh and take care of that aspect better. Refactoring is another matter, but throwing it away to do it al yourself is what they call the NIH syndrome. Especially in an Open Source project where people invest a lot of personal time and effort into it, leaving your own 'baby' and work on someone else's software to improve it, is not always easy. In the end though, most of the time it is better to work on it together and try to bring it from good to great.

The Eclipse community is a showcase of what can be achieved if you follow that philosophy. EclipseCon is the ultimate venue to talk to people who develop software this way. Only 8 days and counting!