Answer: > 6
I was looking at a prototype web project today. The one point that struck me was the number of languages and different technologies that were used in assembling a solution:
Cleint Side -
- HTML for the page templates
- CSS for the stylesheets
- JavaScript for the client side interactive code (and understand the browser compatibility differences when coding)
- AJAX toolkit of your choice (still JavaScript, but you need to learn the intricacies of the one you are using)
- Flash or Silverlight for embedded interactive animations, streaming video, or rich media element
Server Side (this is technology choice dependent) -
- Ruby or C# or Java for the server side code
- ORM Tool of choice (might be in the same language as above, but configuration file formats are a language/skill of its own)
- SQL - at some stage you are going to have to create database tables, script domain data or debug an ORM generated query! Face it, you need to know at least some SQL!
Developers not only need to have some understanding of these languages, but they also have to know how to debug and deploy each technology. What is the chance of hiring an off-the-street developer who knows all of these skills used in a project today in 12 months time?
It seems like the web development tier is undergoing an explosion of little point tools. Pick an AJAX toolkit, pick an ORM solution, pick a MVC pattern to use. Many of our choices today in leveraging a tool to "expedite" initial development incurs a cost in maintainability, and some won't make the distance and be around or upgradable in a few years time.
I'm simply not sure whether this is a problem at all. Whilst I think there are benefits in designing a solution without external dependencies and using as few technologies and languages as possible, I'm not sure how important it is.
Some other questions I have as I fall asleep -
1. Does Script# help? (write C#, generates JavaScript)
2. Does Silverlight offer hope? (write C# and have it hosted in either JavaScript or a cross-platform runtime)
3. Does using LINQ to SQL or the ADO.NET Entity Framework and/or Astoria offer enough ORM/Rest features whilst using C# as the development language?
4. Does Volta help us at all? "First, design and build your application as a .NET client application, then assign the portions of the application to run on the server and the client tiers late in the development process. The compiler creates cross-browser JavaScript for the client tier, web services for the server tier, and communication, serialization, synchronization, security, and other boilerplate code to tie the tiers together."
5. Should we use Flash totally using Adobe Flex and go with the time tested solution?