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.