The Creative Act of Coding: A Conversation with Ian Curry
May 20, 2009
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?

Jake Barton and Ian Curry at NYC Information Center, design by Local Projects, WXY Architecture and Urban Design
Ian Curry: Part of the concept for that project was that it was a bit like an iPhone; it has a pretty minimal physical structure, and a lot of the functionality is in the software. Over time, this framework allows the Information Center to change the space considerably by just changing the software. That also meant there was a lot of emphasis on having software interesting enough to carry the space. I was responsible for turning all our ideas into working software that could last in a long-term installation.
The core functionality is three touchscreen interactive map tables that recognize objects like the Microsoft Surface tables; an FAQ interactive in 10 languages; the ability to make guidebooks dynamically and print, email, or SMS them; and a 16” video wall with a Google Earth flythrough of all the places you want to visit. All the interactives needed to be able to speak to one another, and the whole thing had to update overnight with content from a content management system. That was a challenging juggling routine, but the fact that we got it all done on time is good example of what I was mentioning earlier about knowing what’s possible or sane in terms of programming. We had a relatively short timeframe to make it all run. Some of it was drawing lines on where I thought we could get the most benefit for the amount of programming work we’d have to do, and cutting things that were possibly interesting but might be too risky.

One of three touchscreen interactive map tables in the NYC Information Center
From a technical standpoint, the project ended up being something like 15 or 20 separate little pieces of software, ranging from Processing applets, to Flash movies, to computer vision tracking in C, some browser-based JavaScript stuff, and a lot of PHP on the backend. I worked with some really talented programmers and I also had a hands-on role with a lot of it.
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.
RELATED
- Local Projects can also be found at their professional site.
- “Practical Programming for Designers” is one of three courses offered this summer. Details on Summer Intensive in Interaction Design can be found here.
- Register for Elements of Communication Design, with Nicholas Felton here.
- Register for Practice of Interaction Design, with Carla Diana here.
- Register for Practical Programming for Designers here.


