I was reading a book online about 20 things people should understand about the Internet. Number 7 is about keeping your browser updated. Here are the3 simple reasons given:
First, old browsers are vulnerable to attacks
Second, the web evolves quickly. Old browsers will miss out.
Third and last, old browsers slow down innovation on the web.
I wish I had this in mind when working with a client who insisted on a dynamic Web 2.0 look to the complex application but also demanded compatibility with IE7.
Delivering on both of these requirements (latest Internet bells and whistles like AJAX as well as backward compatibility with older browser versions) increases the difficulty level and cost of the site development considerably. First you have to test on these older browser versions in addition to testing on the common browsers, which increases the development time. Next you have to pare down features and functionality so that it works consistently everywhere, so you might have had a nice dynamic form or navigation control working in IE9 and FireFox 4, but it all gets tossed out when it cannot work in IE7 (see holding up innovation reason given above). Also for some "must have" site features or functionality: developers will usually have to code around older browser version quirks, so instead of writing code in one place to perform a task, it is written one place or one way for modern browsers and another place or another way for older browsers. This causes a code maintenance issue as you now have multiple places to check to fix problems or update code for a single feature or site behavior. This is a problem for HTML, CSS, and Javascript as all three can behave differently on different browsers. Yet another problem that can arise is your performance can vary widely in different browser flavors and versions, for example IE7 javascript benchmarks are miserably slow when compared with more recent versions of IE and other browsers like FireFox or Chrome. This can cause problems where failing to test on the required browser versions can really bite you. If a performance issue (or any browser version issue) is found late in the development cycle, either because the testing was not done along side development in that version or because developers only used modern browsers for their self verification and validation of the application, then the time to fix the problem is much larger and more difficult than if it had been caught earlier.
The best defense to this situation of having to develop Javascript for modern sites to be used by clunky old browser versions is to use a good library like GWT, jQuery or Dojo. These abstract away many of the browser specific cruft that would drive you mad when trying to implement your site. I am not sure of a solution for this problem as it relates to HTML/CSS however, cross browser CSS is a major pain in the you know what.