A woman comes home to find her husband beating their kids with a bat. Scared, she runs to the closet, pulls out the handgun that they legally own, and shoots her husband.
A woman comes home to find her husband hasn’t made dinner yet. She goes to the closet, pulls out the handgun they legally own, and shoots him.
Now, we all agree that shooting someone is a bad thing (at least, I hope we do), which is probably why it’s against the law. But is there a jury that would convict the first woman, the one who shot her husband to protect her kids? What about the second wife? In both cases, the man is shot. The difference is context.
Context is such an important concept that I wish it was explicitly taught in school. What’s correct and proper in one context may not be so in another. Yelling “fire” may be appropriate if it was preceded by “ready, aim” but is completely inappropriate when yelled in a crowded movie theater. Context gives everything its meaning, and it still baffles me that web developers don’t quite understand.
What the standardistas (a word first introduced to me today by YUI‘s Matt Sweeney) fail to recognize is that web standards don’t always make sense in every context. I’ve talked before about having some sanity around the use and upholding of standards, and today I’m feeling like waving that flag once again. With context.
When creating a simple, brochureware web site, you rarely need to deviate from web standards and strict implementations because the product is relatively simple; the context indicates that adhering to standards is the best possible solution. If you’re building a next-generation Web 2.0 application that’s really pressing the limits of what a browser can do, you may find web standards to be too restrictive. In that context, following the rules ends up creating additional (unnecessary) work and delivering a sub-par user experience. In that case, I don’t see that there’s even a debate. If getting your application to work (and make money for your company) means bending some rules or breaking others, then I’m all for it.
I view web development not as a science with hard and fast rules, but as an art. As web developers, we’re provided with a canvas upon which to paint our picture and a number of tools to accomplish this task. If tables make your picture complete, go ahead and use them; if custom attributes are the solution, insert away. Just always consider the context in which you’re working before you either accept or reject a proposed solution.
Since I view web development as an art, I don’t see any solution is flat-out “wrong.” In all cases, there are solutions that are optimal and those that are sub-optimal. Choosing the optimal solution sometimes means going against strict standards, and I think that’s okay. Note that it’s not a “bad” solution, it’s not insulting anyone and no evil will befall you for using it; the most optimal solution in this context just happens to not follow the letter of the law. And guess what? The Web will survive.