John does an alright job at explaining today’s functionality issues across various browsers and platforms. Earlier in my career, I had a very hard time explaining how complex of an issue this actually was and convincing people that there needed to be a line drawn in the sand. If no line was drawn, I would be forced to use old methods and in the rare case not be able to provide the intended functionality across all platforms and browsers. I’ve had many confrontations with team members as to why I chose a certain method for implementation while they had no clue of the numerous pitfalls and necessity for my implementation to reach such a wide a varying market of browsers and platforms.
For example, in 1995 I had to support just about every known browser and platform – no matter how slim of a market share they had or how far out of our demographic they were. Doing that caused me to bloat the code by probably 50% in some cases and still experience a few small issues in some of the less common browser markets.
Even back then, we looked toward the future where browsers would become more and more standards compliant and relatively use the same, or near the same, set of rules or standards. While advancements have been made towards that goal, almost every browser still has proprietary implementations that do not follow a strict guideline. This makes for a hard time when trying to code / script with new technologies and still meeting old requirements. User experience and performance are typically the two that probably suffer from it the most.