The proliferation of Web technologies has been much on my mind lately. Last week, I talked about the continuum of Web development tools, ranging from traditional browser-based technologies all the way to applications deployed as binary executables. The interesting thing is that all of these tools are designed to achieve similar goals. So which do you use?
I'm not trying to start a flame war. Some developers will swear by Flash, while others will choose AJAX, and even within those groups there will be individuals whose preferences are even more rigidly defined. The question is, how do developers maintain their skill sets -- and, by extension, their value in the marketplace -- when the so-called state of the art seems to change on an almost daily basis?
In contrast to large biological systems, which favor diversity, large programming projects tend toward homogeneity. Excess platforms and technologies are costly and wasteful, both for developers and for the users they target with their applications. Each site will want to standardize on the one or two tools that best meet its needs. Identifying those tools for a Web project, however, can be a daunting task.
On the other end of the spectrum, proprietary platforms based on plug-ins -- such as Curl, Flash, and Silverlight -- offer developers more consistency and stability, owing to their centralized control and governance. Each brings with it a unique development methodology, however, and familiarity with one does not necessarily translate into skill with the others.
Which tool is right for the job? What are the best practices? When comparing C and Java for desktop application development, for example, it's easy to point out the relative characteristics and methodologies that each tool will bring to a project. The distinctions between AJAX libraries such as Dojo, JQuery, and Prototype, however, are less clear.
The market for Web development technologies appears ripe for consolidation. And yet, the barriers to entry are so low -- many of the tools are free -- that the market forces that might ordinarily eliminate competitors don't seem to apply here.
In one sense, that's great for the underdogs. In such a market, really impressive technologies have a chance to grow and thrive, with or without the backing of a name-brand vendor. Even the most obscure tools will eventually find an audience if they do the job better than what came before them.
On the other hand, this fragmentation of the market creates a kind of skills crisis. No one Web developer can excel at all of these technologies; the development methodologies behind some of them are virtual opposites. The pressure on developers, therefore, is to specialize. But how do you choose one tool to be your bread and butter from a field this broad? And by the same token, how do you recruit talent for your Web project when your technology requirements might eliminate most of the applicants?