# posted August 18th, 2008 in Design "Culture"
Last week Valleywag posted a critique of usability guru Jakob Nielsen, who is apparently now taking some flack for his ongoing criticism of “web 2.0″ design. “Today, though, Nielsen’s dismissal of Ajaxy user generated content comes across as more crank than critic,” the article notes, taking issue with his “garish yellow-and-white design” and “tiresome refusal to use images to convey information and ideas.”
This editorial interested me because I struggle with the same issues as a designer at Google. I’ve watched the web 2.0+ world evolve around us, but our design mentality remains rooted in the early days of the web. Black text, white background, blue hyperlinks. And it’s not just Google and Jakob Nielsen - this aesthetic persists all over the web, despite many designers’ attempts to banish it forever.
Speaking for myself, the sites I use every day are still very much in line with Nielsen’s view of good usability. Google web search, Gmail, Reddit, Wikipedia, Twitter. Black and white and blue all over. Why does it work?
The interface needs to stay out of my way
Every application has a function. Assuming that function is well-implemented and something that I need to use, I will want to use that application. The interface should only be a tool that helps me get to that functionality. The moment I have to think about the interface - even to marvel at how cool the drag animation is - the application has failed in it’s primary purpose. It exists for the function, not the design.
“Now Anne,” I can hear you saying. “What if the point of my application is the experience? My Flickr/YouPorn/Facebook mashup is super-slick and fun to play around with. I get like ten thousand hits a day!”
Okay, yes. These apps do exist, and should exist. They can be anything from neat toys to richly detailed digital adventures. I’m not really talking about these kind of apps, because a user isn’t really trying to do anything with them. They are there simply to experience it.
When you have problems is when you get the bright idea to make your practical application, say a webmail client or a news aggregator, and make it “experience oriented.” A rich, novel interface can certainly give your site impact and memorability. I might tweet about how cool it is and it will probably generate a lot of interest and hype. These are good things, but they reside in the sphere of marketing, not usability. Designing for the launch is a mistake. Getting people to log in on day one is only half the work; getting them to stay is the other half. You want them to come back every day and the novelty of the rich user experience is only going to last so long. When it wears off, can they do what they need to do on the site quickly and easily?
Yes, latency is still an issue
…unless your target demographic really is rich, technologically savvy people with fast internet connections in the United States. Hey, it might work if your margins are really high, but if you’re writing a web app, chances are good they aren’t.
Reddit is… well, Reddit, but I keep going back to it as a source of things to read because it does what it does and stays out of my way the rest of the time. It is literally just a list of links on a page, which is exactly what I’m looking for. I want a service like that to load instantaneously, because I’m likely to hit it many times throughout the day. Waiting for an image to load annoys me. Waiting for a page full of them makes me want to go somewhere else.
If your app is going to have a rich artistic element, it had better damn well be customizable
Imagine if Apple set your desktop image for you. You use your computer every day, and even if it was the most beautiful photograph in the world, you would get pretty damn tired of that image. This situation sounds ridiculous when talking about client products because it’s well known in that world that customization is an important part of a happy user experience. I don’t understand why web developers haven’t picked up on this yet.
iGoogle is a good example of how to do this right. This is an application you’re meant to keep open in a tab all day while it pulls in news feeds and tracks your email and whatever else you configure it to do. When they realized iGoogle wasn’t exactly the prettiest thing to look at, they added user-customizable themes with colorful, rich banner images behind the Google search box. Even better, the image changes throughout the day, so every time you click over to that tab to check your email you might see something different. The end result is that it takes a while to get sick of a theme, and when you do you can always just switch to another one.
User experience is not all about the clicks, but revenue is
You don’t have to take my word for any of this, you know. You can use any number of free tracking tools (Google Analytics and Website Optimizer are my favorites) to learn more about the behavior of users on your site and run experiments with the design. Usage statistics certainly can’t tell you everything - they can’t tell you if your users are happy, for example. And there are some pretty ugly and/or misleading things you could do that would almost certainly increase the number of conversions on your site. I’m not trying to tell you to do these things. The negative impact to your overall user satisfaction and brand would not be worth the increase in clickthrough.
Even still, you have to be running these numbers and aware of them if you want to be an effective designer. “But the green links make users feel good!” is not an effective argument if blue links increase clickthrough by 5%. ROI is not a dirty word; embrace it, and if you keep a record of the data you collect and the tweaks you make, you’ll have a lot of ammunition handy when talks of a redesign come up. The first question you should ask is “What problem are we trying to solve?” and the second is “How can we prove that we solved it?”
The moral of the story
“So Anne,” you ask. “Can I use images or what?” The answer is, it depends. Pretty graphics and colors and AJAX and slickness are all great, when they don’t get in the way of what your app is supposed to do. No matter how you approach it, things that are clickable should be easily identifiable as clickable. Things that are meant to be read should be clear and easy to read. I’m stating the obvious here because it is the precise reason the text + hyperlinks paradigm is powerful and shouldn’t be overlooked.
Just look at Wikipedia. In many ways, it is the perfect web application. How empowered do you feel when you use that site? You have easy access to almost anything you could ever want to know, and anybody who has used a computer in the past twenty years can figure out how to navigate it. Even my grandmother knows blue underlined text is a hyperlink. It’s a big flag that says “you can do something here!”
Now, I know you need AJAX and pretty gradients and buttons to make your webmail client usable and attractive. Do what you have to do to make it work, but at that point you might want to ask yourself if the web is the appropriate platform for that application.
Remember, design is equal parts marketing and usability; approach it as such. Be pragmatic. Don’t mindlessly decorate. And don’t be afraid to use what you know works - even if you are in danger of Valleywag calling out your “so 1990s” design. Own it!
# posted July 1st, 2008 in Tell Me More About... Myself
Note: I was tagged by the wonderful Amy Hoy over at Slash7. This is a great meme; it’s interesting and educational seeing how various professionals got into the business. Other responses I know of: Giles Bowkett, Chris Pietschmann, Erik Kastner, Joe O’Brien, Maggie Longshore, Tim Wingfield, Jeff Blankenburg, and (as far as I can tell) the original post by Michael Eaton. There are many more I’m sure; these are just the ones that came up on Google.
As a side note, it’s amazing how many of these stories begin with the Apple ][. But more about that later.
How old were you when you started programming?
I suppose that depends on how you define programming. I was eight when I wrote this little gem in AppleSoft BASIC (the referenced "Sarah" is my older sister):
10 PRINT "SARAH SUCKS"
20 GOTO 10
I'm not sure if you can count that as programming, however. It's more like electronic vandalism. (Watching her figure out how to stop the loop was always fun.) I also liked to make pictures on the Apple ][ monochromatic greenscreen by painstakingly plotting every point; again, this "program" can only dubiously be labeled as such. At the time, I didn't even know how to save my work, so they were all blissfully transient.
BASIC nuisances aside, the first program I wrote that a normal person could actually use without having to shut off their computer to stop it was a calendar application I built in PHP many years later. I was 19.
How did you get started in programming?
It all started with this machine, still in usable condition over twenty years later: the Apple ][.

These pictures were taken only a few months ago in my parents' basement. Depicted is the ineffable Colin Barrett poking through the user's manual and trying to get it to load AppleSoft; unfortunately, the floppy itself had long since gone bad. In an era where most of us get an AppleCare plan on anything and everything, it's pretty amazing to think that this machine has outlived the very media that its operating system is printed on. But I digress.
What's amazing about the Apple ][ (and // and other related models) is that it provides excellent affordance for programming. As soon as you boot it up you are provided with an inviting, blinking cursor, a prompt at which you can type straight-up BASIC and be immediately gratified with a response. The built-in BASIC interpreter was probably the single most influential factor on my technological growth, and judging from the articles others have written I’m not the only one. Think about it; in today’s era a child using a computer has to take several complicated steps to get to an environment in which they can program. Back then, all you had to do was turn on the machine.
What was your first language?
BASIC and Logo. I learned both from a children’s guide to programming (unfortunately I can’t remember the title anymore).
What was the first real program you wrote?
The first “real” program I wrote was a trivia game written in BASIC when I was about ten years old. The user could input their name and then answer a series of multiple-choice questions, mostly about animals or science. Since the whole program operated on GOTO loops (hot tech, I know), getting a question wrong meant only that you would go back to the question and get another opportunity to answer. It was therefore impossible to get to the end with anything but a perfect score. It was, uh… a very forgiving game.
What languages have you used since you started programming?
BASIC, Logo, Pascal, C, HTML, JavaScript, AppleScript, ASP, PHP, Ruby, Python, Objective-C. As you can tell, my experience is definitely skewed towards web development and the Mac OS.
What was your first professional programming gig?
My first real job in college was working as an assistant webmaster for the school of Mechanical and Industrial Engineering at the University of Illinois. I had been making web pages in my free time for quite a while, but this was my first exposure to web programming. I was mostly hacking on existing ASP code the previous webmaster had written. It was scary, to be sure. I was an English major at that point and considered myself more of a designer than a coder. But reading and debugging this person’s code was actually a great way to learn, and I put myself through college with various HTML/ASP/PHP web development positions.
If there is one thing you learned along the way that you would tell new developers, what would it be?
I want to re-state something that Aaron Hillegass often says in his book Cocoa Programming for Mac OS X. This is hard work. It’s tough thinking and sometimes the problems are hard to solve. But you are not stupid. Repeat that to yourself. You are not stupid. Don’t give up before you’ve even given yourself a chance.
I feel that what keeps most people out of programming is fear. Fear that they will fail, that they’re not smart enough, that they don’t understand what makes the computer go. You need to understand that it’s not a strange new world; it operates by predictable rules in a predictable system. Learn the rules and use your brain. Don’t be afraid to think, and don’t be afraid to take risks.
And finally, don’t bite off more than you can chew. Any learning process is best taken one step at a time. Learn to type before you code.
What’s the most fun you’ve ever had programming?
That would actually be quite recently. As much as I love engineering, computers and problem-solving, I’ve had quite the love-hate relationship with programming over the course of my life. I’m fascinated by the power it gives you, but often appalled by how it is implemented. “This isn’t intuitive at all!” I would exclaim whenever a particular programming language’s syntax confused or frustrated be. Syntax in general has been a large barrier for me, and as a result I’ve often avoided programming whenever I could.
But then, in April of this year, I came across a project at Google that demanded automation. There was simply no other way to do it. I needed to generate over a thousand static HTML files and over four thousand screenshots across 14 languages. It was the largest marketing campaign we’ve ever done. And I needed to do it in just under a week, also accommodating time for QA and bug fixes. Doing it by hand was simply not an option.
I turned to Colin and said, “There’s a way to automate this isn’t there? There has to be. Otherwise it’s just not going to happen.”
He knew of a FireFox extension that could be accessed from the command line to take and save screenshots, so that’s where we started. He showed me some Python; it was my first exposure to the language. But Python is Python, and I was up and running within hours. And much to my surprise, I loved it. I took to it immediately. It was stupid, procedural programming, and certainly didn’t take advantage of Python’s more sophisticated OO features, but it worked. Within a day I had a script that processed the data files out of the spreadsheets they were in. In another day I was running one that would open the URL in all the appropriate languages (command line), take the screenshot (FireFox extension), open the screenshot in Photoshop and run an action on it for cropping/resizing (AppleScript), save the file and scp it to the proper location on the server (command line), and then move on the next one. Python was the glue that held all of these parts together; os.system was my friend.
A few days later I had made HTML templates that represented the static files in the project, and had another script which inserted the proper strings for all the languages and send the generated HTML files to the server.
For perhaps the first time since I was eight and using BASIC to harass my sister, I was really enjoying programming. It was empowering me. I didn’t feel trapped by it; Python is a beautifully intuitive language and quick to learn. And if I got stuck, I could ask Colin or find resources online. I realized what a large support network I have for programming, and how valuable of a resource that is too. It was wonderful.
And it worked. At the end of the day, the campaign launched successfully worldwide, when by any other means it would have been impossible.
Since then, I’ve had a better relationship with programming. I respect it, and I feel like I know how to make it respect me. I also know better how to approach learning it, and understanding it. And I know now that it’s worth it.
Phew. Sorry to ramble so long, but this is actually a subject quite near and dear to my heart. It’s an important part of my history and even my identity. Now then, here are a few people I would like to hear tell their story:
Mark Dalrymple
Aaron Hillegass (a pipe dream, I know… but I’m sure he has a good story to tell)
Mike Lee
Joe Heck
Jonathan Wight
Victoria Wang
Elliott Harris