How much code should designers know?
Keith Butters, co-founder of The Barbarian Group, provides a simple three-step process that guides you to learning enough code to be dangerous
I read a lot about the web design and interaction design industry – follow the blogs, LinkedIn groups, all that stuff – and one question I notice that continually comes up in heated debate is: “Do designers need to be able to code?”
That exact question is from an IxDA group and has almost 400 responses. It’s relatively easy to rationalise either side of the equation. You’re a designer, you do design, you let the coders code. Or alternatively, the manifestation of your work is code, so you should know how it's done. Back. Forth. I believe the question is phrased the wrong way. The question shouldn’t be, “Do designers need to be able to code?” but rather, “How much code should you know?”
There was this guy in my town growing up called Joe, who could flawlessly play the guitar parts to almost every Led Zeppelin song in the catalogue. He could also play maybe half of Paganini’s 24 caprices, and a bunch of insane speed-metal stuff – flawlessly. I got together with Joe and some other musicians and we started playing blues in B-flat. Joe didn’t know what a B-flat was or where he might find it on the fretboard. With all his talent and agility, he couldn’t play along. Essentially, the group had no common language for communication, and so, even with what seemed like amazing tools in the toolbox, we failed.
When you’re making things for the internet, that common language is markup and code. If you’re an established badass designer at the top of your field, you probably have people around you to translate where necessary (and you hopefully practice some Socratic honest ignorance). But, if you’re up and coming, trying to find your speciality, or frustrated that you don’t always have “someone to prototype this thing”, it’s crazy to me that you wouldn’t give learning some code a shot.
And you’re in luck. Believe it or not, those eight-minute-abs style programming books and tutorials are actually not selling you a giant rubbish bag of disappointment. You really can learn HTML in 10 hours (probably less). You can learn CSS in practically no time. I’m not saying you’ll be ready go join the conference circuit as a speaker or walk in to a new career with your new skill set, but you most definitely will be able to go make a thing.
The following is a simple three-step process (Step 3 is optional) that guides you to learning “enough code to be dangerous”. Focus on these three things for a couple of hours a day, and you could potentially be programming in less than a month.
1. Learn some basic HTML and CSS
Most people I talk to these days don’t agree with me (and that’s fine), but if you want a job doing anything on the internet, you should be able to make a basic HTML+CSS web page. In fact, I wish that was one of the tokens required to enter the industry </rant>.
There are plenty of online resources to learn HTML and CSS. Personally, I like the w3schools site for both HTML and CSS. They have nice cheat sheets for CSS properties and selectors, which is the stuff I never remember since I am not writing markup every day.
So make a page. Maybe a couple. Make them look nice. And prepare for Step 2.
2. Get an introduction to programming
This isn’t about learning how to build a site or learning how to write an iOS app. What I recommend is just getting a feel for what programming languages look like, and some basic understanding of how they work. A really interesting project that teaches coding that I happen to be a fan of is Codecademy.
Give it a shot. Or, if you're feeling ambitious, go grab just about any of those Learn-JavaScript-in-10-minutes books or a beginning PHP book. There are plenty that are freely available.
The goal is simply to understand how to make the computer do something you asked it to in code.
3. Follow a true development tutorial (optional)
It never ceases to amaze me how many wonderful development tutorials there are out there. There are a couple of ways to go here. The first (and far easier) way is to go through a tutorial such as PHP101: PHP For the Absolute Beginner. If you can make it through to the end, you will have built a nice, basic RSS news aggregator, and will be able to actually understand how the whole thing works.
If you really want to go for it, I highly recommend Michael Hartl’s Ruby on Rails Tutorial. Don’t skip the introduction. This may be too deep a dive for you. But, once you’re done (if you try and succeed), you will have built a basic Twitter-like web application from scratch.
There are plenty of other amazing tutorials out there. Search around and find one that interests you.
Now that wasn’t so bad was it? Suppose you hated every minute of it (possible). Luckily, you’re a designer and you can go back to doing the stuff of design. But even if you never write another line of code in your life, two important things happened: first, you probably developed a newfound appreciation for the coders you know and work with. Second, you’ve discovered that you communicate more effectively when talking about implementation of your designs. Two really good things.




16 comments
Comment: 1
I can code more than an average designer. I can make any design in to valid CSS, HTML and I'm pretty competent with Ajax and JavaScript. But sometimes I feel my knowledge in coding limit my imagination to design things / features that I know cannot be coded. How does the design evolve if we only did what we know we can do?
Comment: 2
I'm more of a developer, but if a designer knows even a little bit about coding websites, the transition from a design to a website is much smoother because he or she understands what needs to happen in get from A- to B, the capabilities and the constraints, etc.
Comment: 3
How much design should developers know? I'd love to hear your thoughts on this!
Comment: 4
Now I'm a content strategist working with not only several different types of content management systems, but also mobile. A colleague suggested I learn iOS, and at first, I totally rejected the idea. I want to focus on content strategy, not execution. But then I realized that to have some base knowledge would open doors, not shut them. It should make me aware of what's possible -- while helping me communicate and push the boundaries of what the medium can do.
Thanks for this post, Keith! I think all professionals should have a little cross-disciplinary training. :)
Comment: 5
Honestly, the concept of someone else even putting their fingers into my design or code really makes me a tad antsy.
Comment: 6
Comment: 7
I think the statement should be "A designer should understand markup if designing for the web". HTML and CSS is hardly "code" in terms of programming. They have no logic processing capabilites and are merely tools for representation. Programming skills are not essential for a designer, but why limit your skill set. Markup is simply understanding your canvas.
Comment: 8
Comment: 9
I think it's important for designers to understand how code works or what it can do but not necessarily know how to code for themselves. Many large agencies don't require a 'hybrid' type person, but it seems like smaller ones do. Each position has so much to learn and is constantly evolving, I think you can really either be ok at both or really good at one.
Comment: 10
Comment: 11
Print / Graphic designers print their work to see what it will look like. They may not know the in's and out's or a printing press but they will know how to print and how to use colour separation, spot Colours, pantone paper weight etc. At the very least they can make a prototype of their book or magazine. I think the same should apply to the web people.
Comment: 12
Comment: 13
Comment: 14
Designing to what is possible should be every designer's goal. Knowing as much code as possible will allow designers to push the limits of their designs to new levels while still being achievable.
Most designers could create something that looks great and cutting edge. Only good designers could build a beautiful, cutting edge design that is actually a realistic solution to the client.
Comment: 15
Comment: 16
The problem sometimes is explaining that to clients or employers which they just want all in one…