Not being the first to get into this argument, I’ve picked a less offensive title than one that might otherwise get a lot of attention:
Why CSS should not be used for layout
“I would rather spend my allotted time skiing or making love to my wife than worrying about whether or not I need to define a virtual destructor in my base class.”
That quote really sums up the argument pretty succinctly, but you may need additional persuasion depending on your circumstances. It also comes from his second post on the topic. A follow-up to the masses that commented on the original post with sundry opinions. Some simply stated that the author was an idiot while others took the time to tear him a new one proper-like. As the author states, many that would condemn have forgotten to add their own supporting cases; a common problem with these antagonistic debates.
For my part, I see the logic in the author’s comments. That doesn’t necessarily mean that I agree with him, but it at least gives me some ideas of how to defend his method. We all have to do things we don’t like to do, and sometimes we do things that compromise our abilities. Web development is no different – in fact, it’s probably one of the defining cases for compromise.
Being a casual web developer myself, I have the luxury to code for standards and play with some of the latest methods available in technology. Not everyone gets that luxury, and indeed at times, I don’t either. I have to analyze the amount I can make on a given job versus the time spent on it. As a hobby along side two children, a wife, and a few other hobbies, I’ve really got to make the most of my time. As such, if I’m not going to get paid the amount I want, then something else is going to suffer. At my day job, we’ve talked about Price, Quality, and Time as being the defining parts of a project. Together, they all make up a circle and have to adjust dynamically as the others get larger or smaller. If you sacrifice price, and there’s a time limit, then the only thing left that can slide is quality. It tears at my nonsensical work ethic, but it’s reality. On the otherhand, a lesser quality job doesn’t have to look like it. We web developers have the benefit over some other industries because we can hide most of architecture mess behind a beautiful presentation layer.
So back to the conversation at hand: CSS versus Tables. To bring this all together for you – and I trust you’ve either read the linked articles above or already know about the discussions surrounding the virtues of CSS and table design for XHTML layouts – let me settle the argument for myself.
I am an Arts and Crafts of Olde appreciatist. I love my work as a craftsman; that is to say, I love the process of reaching a goal through creative and oft eccentric means. I am learning to be a more pragmatic person in my work habits – at least when it’s necessary. It’s a slow process, but I’ve made headway in little ways throughout my life. It’s about compromise and keeping in mind the circle of Price, Time, and Quality.
It’s simple enough to imagine I could always remain vigilant on this circle of project specification goodness, but I wouldn’t. Sometimes you just want to do a project. So when either I have no boundaries per the specification, or I’m just personally driven to work at a project for my own reasons, I’m going to use CSS and standards-based coding practices. When time and/or money are the object with which I am to contend, then I might use tables, or worse yet, a WYSIWYG editor. The later approach ultimately saves me the most time and a customer’s money, but will ultimately take more time should the customer want some specific types of feature modifications to the code later. I tend to view cheap and/or quick projects as being throw-away because of this.
I hope this insight has helped you to shed some light on your own dilemna in whatever craft it is that you persue – ever-mindful of the art in your craft, while carefully weighing the cost to your lifestyle (whether monetary, socially, or time management).