22 May 2007

Several months ago, Seth Godin wrote an insightful piece on the difference between "electable" and "marketable," claiming that it is easy to get the two confused.

To be marketable, you must be remarkable. Marketing isn't about getting more than 50% market share, it's about spreading your idea to enough people to be glad you did it...

Godin uses Hillary Clinton and Barak Obama as examples of remarkable politicians that will be lucky to find themselves in the White House. They are, therefore, marketable but not electable.

Is this always true in software? Look at Java. It isn't just a language. Rather it is a "platform", a series of specifications that is only thriving because of timing in the mid-90's. It was "elected" (arguable) as a platform for the web by most industries and quite successfully marketed (again, arguable). I can still hear the ringing voice of my manager circa 2001... "You see, EJB's will solve that problem."

However, I believe Java's marketability is wanning in the face of much more marketable platforms...Rails, Django, Plone, et al. A language like Java comes around every decade or so. Fortran, Cobol, C, etc. Through strange market pressures Java became a ubiquitous language, in spite of its technical merits. I often ponder what 2007 would be like had IBM backed the Smalltalk horse.

I have been on projects where the motif was to "solve a constrained problem" yet the project failed because the scope increased behind our backs. On one level or another it is human nature to want to be "elected." In this case, to develop electable software.

Recently it has become my motto that...

Providing value to everyone, provides value to none

I remember, in developing a framework for ColdFusion several years ago, telling my friend and co-developer "everyone wants to build a framework." Why is that? Why do developers gravitate to building frameworks?