The 3 Classes of Hacker-Designers
You hear an awful lot of praise for designers who code these days. But you don’t hear much about why it’s good for a designer to be able to code. In my mind, there are a few separate levels of hacker-designers. Each has it’s own unique benefits. So I thought it would be a good idea to separate out what I think are the three classes of hacker-designers:
1. Designers that can code HTML, CSS, and presentation-layer Javascript
These people can build better webpages than designers who only work in PSDs, because they understand the building blocks of the web. They understand interactions. Also, it’s not very hard to learn HTML and CSS and a little jQuery-flavored Javascript, so it’s a sign that they’re willing to dip their toes into code-land.
2. Designers that can prototype an app
If you can code a bit of ruby, use a simple framework like sinatra, understand the basics of SQL or at least an ORM like ActiveRecord, then you’ve just leveled up in your value. Now you can build functioning prototypes of apps that look and feel a lot like the real thing. They may not be scalable or secure, or fit well into any sort of existing codebase, but they are real working apps. You can put test users in front of it and see how they interact with it and really hone the experience before you invest engineering resources in scaling up the project.
3. Designers who can code production features
At Olark, a lot of times it’s incredibly valuable for Roland or I to be able to just jump into the codebase and fix a feature or build a new simple feature on our own. If you’re not comfortable with understanding how a large application works based on reading source code, then you’re not going to be able to do this. You also have to have a pretty good understanding of the frameworks and tools your startup is working with. But it’s definitely a huge plus.
…
My goal this year is to focus on #2. I want to be able to prototype mobile applications, and more advanced web-applications. That way, I can create this really nice feedback loop where I can think of an idea, talk to users, design an interface, talk to users, code a prototype, talk to users, and then scale it up if, after all this testing, it still seems valuable.