Topics
Dates
200902 · 05 · 06
2008
01 · 02 · 03 · 04 · 07 · 08 · 09 · 11
2007
06 · 07 · 08 · 09 · 10 · 11 · 12
Also check out FishoftheBay.com for more thoughts about design and life.
Interaction Design: A Visual Command Line
Interaction Design February 28, 2008
Code is essentially comprised of a bunch of functions that achieve some task. In the old days of computers, users would utilize these functions by typing something in some kind of command line. Even these days when writing programs, users can "interact" with them by simply writing function calls like the following:
> Cat c = new Cat("Muffin");
> c.meow()
> int x = c.calculateExponent(4,7);
In a visual design class, people create some form of static artwork (graphic design, drawing, painting, photography, etc.). In these cases, we are able to simply look at the final product, though we can't interact with it necessarily. There are plenty of design principles when it comes to layout - and in a sense, you would "interact" with a magazine based on its layout. Still, there's a limit to what choices the user can make. For instance, the user can't contribute anything to the magazine as though it were a public forum. Likewise, the user can't comment on an article in real-time nor can he/she add photos and whatnot.
Enter technological interaction design - a way for us combine the interactivity associated with command-line interaction with the visual designs we see around the world. Websites have, by far, the closest relationship between code and visual design. Yes, there plenty of elements of visual design in software, but websites are essentially a virtual piece of paper with all the same abilities that print design have and one extra component of interactivity.
Webpages are called "pages" for a reason. That terminology isn't used in software. We have the ability to print text and images just like we could in a newspaper, magazine or flyer. But whereas a poster you might see on a wall somewhere is static, we can now include users in our technology, allowing them to add to it, shape it, use it.
So when we design for a website, the functionality is more of a given. Everyone can write code. The focus is on how the code gets executed and the experience the user gets when interacting with it. This is interaction design - fusing visual design with coding functionality and defining how the two relate to each other and to the user.
Other Interaction Design Posts
Multi-Touch Interfaces
The multi-touch interface is emerging of late as the new interface for digital devices, what with the iPhone, Macbook Air, Microsoft Surface and others. With this comes a whole new way of human-computer interaction which...
Apple Breaks The Consistency Rule
My friend Elliott informed me that there's a discrepancy between the MacBook Air multi-touch interface vs. the iPhone interface and it's quite fascinating. A major part of Apple's Human Interface Guidelines (Found Her...
Is Prototyping Necessary?
Many web designers stress the need for heavy site prototyping and planning before the actual coding happens. That is, they sit down and after outlining the information architecture, plan the design with all the images an...
Choices: Less is More
How many ways can you eat a Reeses? How many ways can you turn off your computer? People like choices, but they don't like too many. I was reading a bit from Barry Schwartz's "Paradox of Choice" and was intrigued on the ...
Design is an Experience
What is design? Is it the graphics we use? The colors? The fonts? Yes, those all have some effect on the end experience, but I'm talking about something bigger. Something more encompassing. Design is the whole experi...
Spaces
Define spaces in your application. Too many websites and desktop applications jumble everything else. Again, like a house floorplan, divide everything into spaces and figure out the 'transition functions' between them...
Designing in Steps
If you're creating an application that DOES something (as opposed to say, a website where users just search for something) it's essential to design in steps. What does that mean? You need to figure out how to user int...