Tuesday, November 02, 2010

Software Cadence

I was intrigued by Bob Muglia's use of the word "cadence" in an interview last week about the future of Silverlight.
“As with anything as it matures, the (delivery) cadence changes.”

Mr Muglia is the Microsoft President in charge of the company’s server and tools business. The interviewer, experienced Microsoft commentator @maryjofoley, interpreted this to mean that the delivery pace of Silverlight is slowing [Mary-Jo Foley, Microsoft: Our strategy with Silverlight has shifted ZDNet 29 October 2010].

Yesterday, Muglia issued a statement in which he apologized for any surprise, controversy or confusion resulting from what he said, and sought to "expand" and "emphasize" some important points. The comments below this statement display a range of responses from reassurance to betrayal - this debate seems to be more about perceived commitment and trust and developer morale than about the technical issues. Muglia didn't repeat the words "maturity" or "cadence", and to date only one comment has appeared demanding that these words be clarified [http://team.silverlight.net/announcement/pdc-and-silverlight/].

Cadence is an ambiguous metaphor in this context. In music, it refers to the last few chords in a piece of music. Traditional cadences were very quick, but Beethoven introduced cadences that continued for a fair while, loudly repeating the last few chords over and over again without developing any new material, and this style is also found in some rock music. An entirely different meaning of the word is found in cycling and running where it means rotation speed - in other words, the number of times the pedals go round, or the number of times your feet strike the ground. I'm guessing Muglia is using the word in this sense, as a metaphor for the frequency of software release.

Just checking Wikipedia (where else?) I learn that elite runners don't vary their cadence much - if they want to go faster or slower, they simply put more or less energy into each step, rather than changing the number of steps - and this might be a relevant pattern for the software industry as well. However, I can certainly think of software products that continue to be upgraded regularly, even though each release seems increasingly trivial, almost empty of meaningful content, as if we were following the Beethoven cadential style.

The relationship between cadence/maturity and developer confidence is a peculiar one. One might think developers would prefer tools and platforms to remain stable, without a constant flurry of new complicating features, but there is clearly a fear that the rest of the developer community will abandon the platform as soon the new features stop coming. In other words, the viability of a platform relies on its not being perceived as mature or even maturing, and therefore a platform that wishes to retain the confidence of its developer community must get progressively more complicated and difficult to use, because of the accumulation of features that have been added for the wrong reasons.

I don't like that conclusion, I hope it's not true, but if it were true it would certainly explain a few things.

No comments: