Category Archives: Google

How Much Code Should a UX Person Know?

Published / by gavin / Leave a Comment

I spoke on a panel at UCLA week before last and got an email today from John Anzelc asking:

  • When you’re working with a UX designer, what what coding ability do you expect them to have? What ability would you like them to have?
  • Coming from a design background with only some basic HTML/CSS skills (with a little bit of Java way back in high school), what coding skills will I see the biggest benefit from learning if I want to get into UX design?
  • Any recommendations for books, websites, tools etc. on said skills?

My somewhat expanded response follows — books and websites are linked where appropriate.

Every career is a collection of skills. The deeper and broader your base of skills, the more you can accomplish and the higher level you can work at. At this particular moment of history, I’d say that a designer who wants to work on web and software products today should know at least:



  • Photoshop. Link is to the student edition of the entire Adobe Creative Suite, which you might as well get a legit copy of while you’re still in school. Learn these tools, particularly PhotoShop, deeply and thoroughly. Read books, work through tutorials, take classes. It’s the industry standard for manipulating images. You’ll use it (and/or Adobe Fireworks CS5 or other mockup tools) to create wireframes and sample screens all the time. If you’re strapped for cash, you can learn the most crucial concepts and do at least professional-looking work with the free GIMP software.
  • A vector art program, like Adobe Illustrator CS5 or the open-source and free Inkscape. Most web sites in the next few years will begin to move to vector art rather than pixel art. You’ll need to learn how to produce resolution-independent graphics.
  • A text editor. This would be something like TextMate on the Mac, or a real coder’s editor like Emacs or vim (both free and open-source). Pick an editor you really like (I like Emacs), learn all the keyboard shortcuts, and use the same one for years. Don’t use DreamWeaver as it will prevent you from learning things like HTML and CSS deeply.
  • A web browser with a good developer interface. Chrome, Safari, and Firefox with the “Firebug” extension will all teach you something. Even Internet Explorer 9 has good developer tools now. Read the documentation about how to use the debugger and the various inspectors and profiling tools.


  • HTML and particularly the HTML5 variant. Know what *all* the tags do, make yourself examples and tests, and play around.
  • CSS. Web designers are CSS experts. It’s arguably the most complex piece of technology to understand, so get going now. Learn what “float” does, and how to use the selectors. Work through the O’Reilly “CSS: The Definitive Guide“.
  • Javascript. I think there are more powerful libraries for “real” application development, but at a minimum you should understand how to use the jQuery library. Ideally, you should *read* the jQuery library and keep looking things up and asking questions on the web until you understand how it was implemented. Take a look at JavaScript: The Definitive Guide and JavaScript: The Good Parts for more depth.
  • At least one, but preferably several, server-side language like PHP, Python or Ruby. PHP lets you do simple things very quickly, but Python is likely to teach you better programming habits over time. The Ruby on Rails framework has tremendous traction among startups and small development teams, and puts a lot of power in your hands. (I learned it by working through Agile Web Development with Rails, Third Edition) You can also check out server-side Javascript frameworks like node.js, and narwhal.
  • Linux or some other unix variant (like Mac OS X, but via the “Terminal” application). I like Ubuntu, because it’s easy to get started with and widely deployed. Even if you use a Mac or PC for your personal work, you’ll want to understand how to update a website on a running server or virtual instance. This means command-line operations for things like moving and copying files, editing text, and using source control.
  • UPDATE: Brad Neuberg wrote a terrific post about how to become a Javascript bada**. Take it seriously and do the work and Google will so totally hire you*.

I’m sure there’s more. If anybody reading this has something to add in the comments, I’ll fold it into the main post. Good luck, and keep learning!

Disclaimer: I’m not promising you a job, don’t claim I did, but it would really improve your chances to do so.

Interviewing at Google

Published / by gavin / 1 Comment on Interviewing at Google

I’m posting this because I enjoy meeting new people and because many of the great technical people I meet are curious about working at Google. If we’ve spoken at a conference and you think I have forsaken you, please don’t fret. Email me your resume, remind me who you are, and I’ll add you to the voracious technical employer that is Google. I want you to work here and do well. Really, I do. To help, a few handy links to things people much smarter than I have written.

Here’s the official corporate video:

Stevey’s Hilarious Post about what to expect and how to prepare.

And finally, if you’re really serious about being a computer scientist, work through this book:

Structure and Interpretation of Computer Programs – 2nd Edition (MIT Electrical Engineering and Computer Science)

Which you can also find free on the web. (As my my vanpool buddy says “Just Bing it.”)

You might also want to work through this:

Introduction to Algorithms, Third Edition

If I interview you, you’ll be a leg up on most candidates if you read: Design Patterns. Seriously, do people think about this stuff anymore?

And for massive extra cred:

Art of Computer Programming, The, Volumes 1-3 Boxed Set (2nd Edition) (Vol 1-3)

Work hard, and read Outliers: The Story of Success, which explains why I’m not actually kidding with my link to Knuth.

Coder for the People

Published / by gavin / Leave a Comment

I write software for a living, these days at Google, but in the past at DreamWorks Animation, Idealab and ArsDigita among others. I think rich internet applications are The Way, and I like to make them richer.
I like people. I like meeting new folks, and talking to them, and meeting their friends, and walking up to strangers in public places and striking up conversations. I actually hand out a lot of business cards, just because it seems like the polite thing to do after somebody has done me the courtesy of getting to know me.

At work you can pick your own title for your business cards. Well, you can’t put “CEO” or “Vice President” unless you really are one, but the internal designations are pretty useless outside Google.

I thought for a while about what I do, and why I do it. What I do, ultimately, is try to make peoples’ lives more pleasurable, especially when they touch technology. That’s one of the reasons I like movies, and user interface, and open source, and the web. I’m here for the people.

Coder for the People

Coder for the People

I Love Information without Understanding

Published / by admin / Leave a Comment

I was just double-checking for my own Googlegänger, and found that I had a “game credit” on Uru, but my fave is my Hollywood Credits at the New York Times.

I especially like that I’ve “worked with” Bruce Willis, et. al.

The information is all “true” but doesn’t promote a lot of understanding about who I am. (I did update my profile on MobyGames, though.)