Ronald Reagan allegedly said that, refering to his performances as an actor. My clients usually want good work, but sometimes speed matters even more.
Last week a client called to ask if I could do a website on short notice; this wednesday I finally received the graphics design, and apart from some finishing touches I completed the work by Friday (it’s due by tomorrow – it’s a site for an exhibiton that starts on sunday). The code is not bad, but I could have done better. It always hurts to have to admit that, which means I hurt a lot these days, but all in all I’m a lot more comfortable than I was at the beginning of my freelancing career, when I was constantly aiming for perfection and, most of the time, failing big time.
The sites’ javascript is unobtrusive (meaning it doesn’t mix with the HTML) which is good, but the functions are tied specifically to the markup if the page which is not s good. Most formatting is done with CSS, however the basic layout is table based which is bad – we are really not supposed to use tables for layout these days.
Still, I used tables.
Maybe I’m not a good programmer, although I like to think that my work is at least decent. But for me CSS is something that works when everything is well prepared and nicely planned – and then it usually works better than the table based tag soup sites of the 90s. Only when I’m in a hurry the purported advantages of CSS seem to evaporate. Less markup code? Not really, I’ve seen very few layouts that can do without additional divs and spans and classes and ids and stuff. Switch elements around in the page at will? To try this taught me a new english word, “ramifications”, which is what you get when you find out that position of elements matter, sometimes alas to other elements on the page. Easier Maintainance, because you can control the layout from a single CSS file? But my markup resides i a template file, so I control the layout from a single file anyway. And every time I go for CSS only some bug shows up that takes hours to work around, especially when the client works with some obsolete browser version on an for most intents and purposes defunct operating system (happens a lot when the client is a public institutions – upgrading costs money and public money is scarce).
So I did use tables and I finished the job in time, on budget, and I did not lose too much sleep over it. But my point – and there is a point to this post – is that the web business is first and foremost a business. If you have time to aim for perfection (or if your are some kind of programming prodigy and write perfect code at the first go) that’s great, but to do a good job means not only good code, it means also to deliver when it’s due and not to spend more money than is on the table – which also means that you don’t work more hours than you get paid, since any business should serve your own interests as well as your clients. If it doesn’t it’s not business anymore but, in one direction or the other, abuse.
This might be trivial, but since it actually took me a couple of years to find out I thought I share the insight.