Monday, August 27, 2012

Platform Churn...

This is another post that captures (indirectly) some of the complexity of the platform choices that devs need to try to make.

I have been thinking about this a bit recently, that the life span of the platforms is shortening and the uncertainty is increasing.  If you assume there is some sort of fairly fixed start-up cost for a developer to get on board a new platform, and to master it, then the useful lifespan of a platform from one of the large enterprises looks pretty horrible. 

My sense is that its only the open platforms with big community buy in (C++, Node.js, Mono, OpenGL etc) , built over other open or flexible platforms (HTML, HTTP etc) that have any sense of longevity.

Corporate platforms that require large investments and have similarly large political overheads can be canned simply because the corp changed direction, or the politics shifted. The point being that it takes only a few people to effectively kill the platform and the collective investment by the community.  This has to be seen as a giant risk to anyone thinking of committing to one of these monolithic beasts.  (Is there a word to describe single ownership ... I keep thinking "single-point-of-failure", "fragile", but they don't encapsulate the concept cleanly)

While trying to describe the situation I started listing some of the life-span issues:

* Shorter life-span
* Higher Uncertainty
* Greater evolution through their lifespan
* Less open and clear communication
* Abrupt terminations

The lost flow on effects are:

* Documentation and book support
* Best practice and body-of-knowledge growth
* User Community and Ecosystem curation and growth
* Third party integration
* Third party extension
* In-depth security research and testing

The biggest issues that I see is the fatigue in the whole developer sphere.   Committing to a platform is a multi-year investment by a developer. To commit, build experience and knowledge and then to have the platform die, can be traumatic in terms of business, job, product, but also in terms of leaving a hole in your CV, wasting all the "personal" time and attention that you may have invested and robbing you of the cumulative benefit of growing into and with the platform.

I see the net effect of robbing the total developer community of energy and resources.  There are only so many developers coming on-stream every year and for major products to bloom and die rapidly tears great big holes in the community.  Think of the millions of man hours of labour that have been poured into something like Silverlight.  All that investment, mostly not carried by Microsoft, but by independent businesses, individuals, students, courseware developers, book publishers, etc. Its all now basically been made irrelevant and trashed.  Not because Silverlight has been officially executed.. but its looks like its on life support.  Who in their right mind would start a new career focusing on silverlight at the moment? 

The same problem occurs around all the fad languages.  Especially those with closed business models (Delphi?) or have a single flagship developer who "owns" the language and its future.

I think that having a couple of these platform die-offs on your CV would pretty much end you.  If you assume 2-4 year commitment for a platform, and that your earnings suck when you are starting up on a new platform and suck as the platform is dying... then you may only see 1 out of 4 years where you are getting paid the market rate. (Assuming you are fully employed through that period...its my game, so my assumptions. I'm making a point, not telling a story.) That's pretty horrible odds.

So whats the answer?  Avoid proprietary platforms?  Wait for one to mature?  Let others take the risk? Follow the crowd?  Ride the pretty Unicorn?

It's getting harder as the walled gardens keep expanding.  Facebook, Apple, Google, Microsoft all control massive portions of the market place.  Every single one of them is using platform control to try to progress their political agendas.  The problem is that they are all trying to out evolve each other at the moment and thus churning their ecosystems quite badly.  I would expect there to be increasing churn, simply because none are able to dominate the space and achieve stability.

In the worst case scenario, dev shops can simply rent talent in whatever platform is currently hot then dump the staff when the platform goes cold. Individual developers are the ones who have to carry the cost of re-tooling and learning a new platform before they are employable again.
In the best case scenario, the dev shop re-trains the staff on the new platform and carries or shares the cost of acquiring the new skill set and experience.  
In neither of these cases does the cost fall on the enterprise who is responsible for the platform or the killing/uncertainty around that platform.
The platform owner is only interested in launching the platform and getting as many people "on-board" with the platform to make it a commercial/marketing success (or whatever the political objective of the investment is) Once the platform reaches a self sustaining level ( it has acquired enough support from the user/dev community to achieve its goals and is recruiting enough new talent to replace any losses) then the enterprise essentially is along for the ride.  Theoretically the platform ( given no changes in the environment) would continue indefinitely.  However, we all know that these things live and die based on the environment. 

There is rationale for killing a platform.  However, there seems to be little effort spent in trying to transition a community to a replacement platform.  Microsoft seem to be most successful at providing pathways from one to another.  (I use the term very gently... as success in its truest sense would suggest something more ...successful) They do usually provide some pathway ( or at least a suggestion in a poorly linked blog post about where the devs can go and what they should do to themselves once they get there...

In the end, I have no particular insight.  The fact that there is platform churn at the moment is obvious.  The fact that most of the cost of this churn is born directly by individual developers is also obvious.  The fact that the link from where the cost is born to the where the decisions are made about the platforms life cycle is why the system is particularly unresponsive.

Can this be fixed by people whinging on blogs or forums when their favorite platform gets the axe?  I doubt it, because the developer community is taken for granted. Any company that creates a platform expects developers to eventually colonise it, simply because its a niche to be exploited.  If there is no value to be had... no one will come.

I would predict that in the future the rate of platform emergence will escalate, the rate of platform death will similarly escalate, simply because more and more people want to own a platform.  In the middle of the pond, the big platforms will continue to life longer, slower lives, but still they will evolve more quickly to compete with all the flash-in-the-pan competitors that emerge.  If one of the big platforms makes a miss-step or the environment changes quickly, we may see a spectacular flare-out ( see napster or myspace etc for an example) but on the whole, betting on the bigger platforms will be a more secure way to survive as a dev.

No comments:

Post a Comment