One of the most popular areas in the software development nowadays is undoubtedly the Web. And at the same time it is the area of the most incompetence. Now I am going to say a few things that every Web developer must know. No excuses!
First thing. There is The World Wide Web Consortium.
Second thing. I do not know what is different between URI and URL, and think it is not worth to know anyway, but what is worth to know about them is that URL is not a "network path". And the other thing is that “cool URIs don't change”. What is the most important of all that is the very concept of the resource: a resource is something with fixed semantics that have global unique identifier (URI), file path is just a way to identify a bunch of bytes on the particular piece of hardware. They may look similar and may have a mapping between them, but they are conceptually different things. Using something that is not related to the resource concept as the part of the URI just like writing “please deliver this to the big blue house standing next to the crossroads at the east part of the town” instead of the street address on a letter. What will you do when the house will be repainted green? Or when there will be more crossroads in the east part?
Third thing. “L” in HTML stands for “language”. And this is true for XML and XHTML too. Basically this means that you can make lexical, syntax and semantic errors in the XHTML page as well as in C++, for example. Error is a bad thing. And the fact that the page with an error may look nice in your Internet Explorer, while even a small error in C++ will fail the compilation, does not make this error better. Only worse, actually, because this makes it harder to spot and fix the error. The same goes even if your page looks fine in Firefox, Opera, Lynx or whatever. Therefore I conclude: every Web developer absolutely must read at least HTML 4.01 specification. No, he is not going to learn it. He is going to understand basic concepts (for example, what the hell are the block and inline elements) and understand the language better. Oh, and there is no “L” letter in CSS, but that is no excuse.
Fourth thing. Surprisingly enough, technologies do not exist just to be used. They exist to solve particular problems. (X)HTML exists to mark up hypertext, PNG and JPG exist to store graphics data, CSS exist to describe the page appearance, PHP and CGI to generate content dynamically. Therefore, if you find yourself using something just because you can, stop and think first about what you are trying to do, and only then about what you should use to do it. For example, entire Web page could be made out of PNG files included in (X)HTML file without single English word in it. This will sure do the job, but not only it will be harder to do, it will also increase bandwidth usage, scare away search engines, make it impossible to read the page on the text terminal and the Eternity knows what else. This goes not only for the Web development, and even not for development or IT at all, but it is the Web development where people tend to abuse technologies just too often. Take Macromedia Flash, for example. Surfing a Web site made entirely of it is just like walking in the forest without a map and blindfolded – you do not know neither where are you nor where are you going.
If somebody just does not know about these things, that is okay as long as he or she wishes to learn. But as for people who know, but do not care about it, I would kill them all right away if I could.