SVA: You’re teaching a course called “Practical Programming for Designers“ this summer at the School of Visual Arts as part of the Summer Intensive. It’s a four-week course in the evenings. How are you teaching programming without just describing the languages and what they’re used for?Ian Curry: The first thing I always need to do in these classes is convince students that coding is a creative act, and that their artist brains are perfect for programming. Designers actually have a lot of advantages in learning coding because they are likely to be better at visualization and organizing complex systems in their heads. One of the things I really stress is that computer languages are human languages. All of these languages were made up by humans, and they’re meant to be comprehensible to both computers and other humans. If you’ve ever learned a foreign language with all its quirks and irregularities, you will be relieved to discover how refreshingly regular and predictable most programming languages are.
I come from a literature background, so I can definitely empathize with how strange programming can seem at first. That said, a hugely important part of beginning to learn programming is just getting over the initial fear and beginning to see how beautiful and elegant these languages are. It may be trite to say that code is like poetry but it’s true in some important ways. I’m hoping to teach students to not write bad, confessional, teenage code, but elegant, economical code — like Kay Ryan would write if she programmed. Along with learning the mechanics of programming, I’m going to try to convince people in the class to fall in love with how beautiful these languages can be.
I’m also going to try to help students learn how to see patterns in how code works so they can learn programming independently. Much like any other language, programming languages have something like a vocabulary of functions. Just like you don’t need to memorize an entire Spanish dictionary to start up a simple conversation, a little knowledge will get you pretty far in a lot of programming languages. What’s helpful to know though is that there are common, core functions that exist across languages. For example, almost every language has a way of searching within a text string. I know the specific vocabulary to do that in several languages, but when I need to do that in a language I haven’t used much, I know that this probably exists and I can look it up. We’re going to learn ActionScript in the class, but I’m going to use that to show some of these core functions. After this class, you should be able to jump semi-confidently into any other language and make some headway by looking for these functions. It’s okay to Google how to do something but you have to know what you’re looking for. Four weeks is not a lot of time and that makes it especially important to have some tools to go out and learn more.
Most of all, I want to get students excited about what they can do with code. We’re increasingly people who spend a lot of our lives staring into the world of a computer desktop. Being able to code gives you the ability to change that world and to create new things within it. That’s a pretty big opportunity.
SVA: How important is it for graduate students of interaction design to understand basic programming ideas common to all languages?Ian Curry: There are certainly interaction designers who don’t know a lot about programming. I can say that if your work is pushing the boundaries, technology-wise, it becomes pretty important. At Local Projects, we often have to do a fair amount of R&D to figure out whether something we’ve schemed up would be possible. Thinking up those possibilities in the first place is often something that comes through an awareness of what different frameworks and languages are capable of. I’m often in a position where I need to determine whether something is technically feasible enough that we could responsibly commit to doing it. In that case, I have to have a confident sense of how the software could be made, and how long it might take. It would be very hard to do that without knowing something about programming.
On a more fundamental level, knowing how to work with, rather than against the technology you’re using is a big part of the basic programming literacy that interaction designers need to have. The classic example is print designers moving over to the web. Early on, they’ll tend to design things that may be beautiful, but not easy to cut up into a lightweight webpage. Understanding the strengths and weaknesses of the underlying technology is key to designing appropriately for the medium.
SVA: You’re a senior interaction designer at Local Projects in New York City, recently adding the The Official NYC Information Center to your list of accomplishments. How did an understanding of programming help you in the design process for that project in particular?
Having a sense of what was possible and being comfortable with a lot of different programming requirements allowed us to do something a little further out there.