Should Web Designers Code?

To define is to limit.

Oscar Wilde, The Picture of Dorian Gray

Yesterday Andy Rutledge has posted his position on web designers and code, essentially saying that markup and CSS are intrinsic parts of the profession. Davide Casali wrote up a response arguing against this notion, even calling it harmful.

The argument of whether designers should code or not inevitably brings out two sides to fight. There’s project managers who say they run successful teams of graphic designers and coders working side by side in harmony. Then there’s designers who can’t believe that some of their colleagues actually lack this essential skill that’s part of their job.

The truth is, they’re both right. You can run successful projects by splitting responsibilities and having designers who can’t code design your interfaces. You can create great websites by having a web designer do both, the design and the code, if that’s what they’re able to do.

The argument isn’t interesting because it’s not really talking about one thing in particular, and rests heavily on semantics. The word “designer” means something different to everyone. If we get more specific and ask: should “graphic designers” code? Now the answer is simple: no, they produce the visuals (i.e. graphics). Ok, so if we call “web designers” who can’t code “graphic designers”–after all, this is a title that doesn’t allude to the medium they work with–everyone should be happy, right? If only… We’ll now likely have people arguing about the responsibilities of a “web designer”, so let’s look at it from a different angle.

Does code help you in your profession?

A more interesting discussion would be about whether it would be benefitial for a web designer to learn how to code. Obviously if they can’t code then they have to partner with those who can–the end result has to be delivered one way or the other–but let’s assume they have that covered. I’m not going to argue about whether a “web designer” should already know how to code or not, let’s just assume they don’t, would then learning to code make them a better web designer?

Not all code is equal

Now, I’ve been using the word “code” above, but this isn’t strictly the right word to use here. HTML markup and CSS aren’t programming languages, and you’re not really coding a website, you’re marking up content and styling it with a stylesheet.

On the other hand you have programming languages like Ruby, Python and C. This is the “real” code if you were, the languages you code applications with. This is in no way meant to devalue HTML or CSS, I just want to make things more explicit for the sake of the argument.

Neither markup nor CSS are exceptionally difficult to learn. Markup is relatively trivial as it’s essentially about adding more information to the content, which is then used as hooks for the styling. CSS is also trivial to learn, although difficult to master. Knowing both of these allows the designer to put together a working site, something they can play around with in their browser and expecience the final product their customers will see.

Now, I’ve separated markup and CSS from “real” code, but even here things aren’t equal. For some sites, the quality of the markup and CSS will matter more than to others. A small business site or a small promotional site that will be built once and hardly ever touched again will just want something that works.

On the other hand, a web application will want fine tuned and polished markup and CSS because they’ll be re-using, modifying and building on top of this code all the time. I’m not saying that your code shouldn’t follow best practices in the former case–ideally it should–I’m saying that its quality is much more important in the latter cases as it will have a direct influence on the daily lives of developers working on those projects.


This brings us to CSS3. As our browsers gain great levels of CSS3 support, more people are starting to rely on it for styling visual elements on their sites. We don’t need to use images any longer for gradients, rounded corners and drop shadows–this stuff can be done with stylesheets now. Now, of course relying heavily on CSS produces a certain look and feel to the site by imposing its own limits, and arguments can be made for or against that, but I’m not going to talk about this here. What we can say is that an ever increasing portion of the styling can now be delegated to CSS.

This increasing reliance on CSS lets us easily prototype sites in the browser, skipping the initial wireframing and mockup stages. Now at this point you can still split responsibilities and have your designer create sketches and wireframes for the developer to turn into markup and CSS, but this defeats the advantage of cutting out those initial stages and instead using the browser as your experimental canvas.

An ever increasing advantage

From that I would say that being able to code is an ever increasing advantage to the designer working on the Web. Being able to use the browser to quickly try out ideas is valuable. Prototyping in the browser lets you instantly see how things will end up looking, and you’re experiencing the final product in its habitat, not through an aproximation. You save time by cutting out some of the initial prototyping stages and once you’re done, you’ve already got the final product ready.

Of course this varies from project to project. Some sites may want very graphical interfaces that cannot be created through CSS. Other sites, like a lot of modern web apps, can be almost completely created with CSS. In those cases being able to code puts the designer in a very good position.

Starting with code also puts the designer into a different mode of thinking, which I wrote about before. You’re placed in a more content centric frame of mind because your tools aren’t brushes, lassos and palettes, but the content itself. You end up with a design that embodies the content rather than one that focuses on visuals and styles external to it (as is the case with CMS themes that are built around dummy text).

Davide Casali wrote that learning to code will end up diluting your skill set. Where there could be one exceptional profession, you’ve got a hybrid, unable to master any one skill. I think this is false, and powerful arguments have been made to support the idea of delving into multiple fields. If it really is the case that you cannot make time to learn CSS and HTML, then sure, prioritize and focus on cognitive and social psychology as Casali suggests. You don’t have to know HTML and CSS to be a great designer, but if you have the time to learn I cannot see how gaining these skills would be anything but an advantage, especially for designers whose medium is the Web.

People aren’t simply “designers” or “developers”, these are just masks that we place on them to help us organize our environment, masks that we’re often too eager to wear ourselves too. But as Wilde’s quote at the start of the post says, by wearing such masks we artificially limit ourselves, and the longer we wear the masks the more we begin to believe in these limits. Learn the skills you’re interested in, and learn the skills necessary to deliver the product to your customers, but don’t close off opportunities by limiting yourself to a job description–let your work define you, not your title.