I feel like an old fart in this forum. I am 29. I have been doing web development for many years. Imagine being there from pretty much the start of the web and having to go back and "fix" all of your code. I used to code in HTML 2.0 and 3.2 for Netscape 2 and 3.
There was no such thing as "valid" code or the right way. IE came out with version 4 which had more "options" as they were called. There was no need for compliance. Making the transition from HTML 2 through XHTML 1.1 is a big leap for many developers (believe it or not).
So, when all of you teenages who are in high school are developing your websites in your spare time, understand that developers like myself (married, full-time, with family) don't have the extensive amount of time to always develop in compliance. I spend most of my time developing many. many projects. Some of which are meant to function strictly in IE as web applications. Many of our clients want their websites viewable in Netscape 4.x. So, with all of that said, I cannot always develop in compliance with the W3C recommendation.
So, I take back what I said about "validate your code" in the first post because in the grand scale of things, our clients create the market for which we work in. We adapt to their needs.
How would you explain to a client, "Sorry, we can't develop your website to work in Netscape 4.x because we develop in XHTML 1.0 Transitional and the code will not validate"