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.
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.