Some Reasons Why Web Standards Are Difficult to Learn
Web standards are wonderful. They help us make better web sites faster. However, they can be hard to learn. Here are some reasons why I think so.
The Box Model is Difficult
It seems like the box model shouldn’t be difficult to learn, but it is. I’m not sure why, but I think it may have to do with complexity that arises when you have boxes within boxes. At that point, it becomes an exercise of adding margin here, taking away padding there, and setting margins and paddings to 0 over there. Combine that with floating and positioning: relative, absolute, fixed, and it gets hard to know where the spacing between objects comes from, even when you’re working in standards-supporting browser like Mozilla. On top of this you have the box model hack…which only complicates things further. Even browsers get the box model wrong.
Separation of Content and Style is a Progammer’s Trick
Back when I was a computer science undergrad, separating parts of a project into conceptual pieces was pretty much the hardest thing I had to do. The best programmers could write code 10 times (literally) faster than I could, and it was because they used the highly-efficient object oriented methodology as easily as they ate with a spoon. I hadn’t learned the object-oriented paradigm in high school like they had. CSS and XHTML is a very crude (though good) attempt at this sort of efficiency, and it will only improve with time. XHTML 2 will also add more features in this spirit, further separating markup language into separate, logical pieces. But, as I learned a few years ago, it takes a lot of work to get used to when you’re new to it.
Browser Support is Still Spotty
Until designers can code things once and not have to check renderings in multiple browsers this will be an issue. I guess that over 50% of my time designing is spent checking the design in multiple browsers. In other words I could work twice as fast if browser support was equal. One thing I can say is this: lack of browser support has made me learn more about XHTML than I otherwise would have had to. Perhaps that’s a silver lining.
One Goal, Two Syntaxes
With XHTML 1 we’ve moved completely to a straightforward XML syntax: <tag>content</tag>. With CSS we’ve introduced a seemingly unrelated syntax. Why? I don’t know, but it sure complicates things. There may be an excellent reason why the two look so different, but wouldn’t it be great to have one syntax instead of two, with a doctype to declare the difference?
So Much to Unlearn
The turning point in Luke’s Jedi training with Yoda. “You must unlearn what you have learned”. For anybody who created web pages using table-based layouts, this is definitely an issue. Countless hours unlearning spacer gif techniques, valign, align, and padding for layout. Perhaps this is why the box model seems so hard…I’m a stubborn unlearner.