Wednesday, July 28, 2004

On Software Design: The Under-appreciated Art of User Interface Design

On Software DesignIt often occurs to me that user interface design is an under-appreciated art. Yes, there is a definite art to the design of a good, solid, intuitive, elegant user interface. Not every one can do it, just like not everyone is a great painter or photographer. Oh, someone may know how to use a camera, and they may know how to put brush to canvas, but neither of those abilities makes them a great photographer or a great painter. I think that in general, people realize and recognize this. Why is it then, that there is this belief prevalent in companies big and small everywhere, that anyone who can write code and develop software can design a good user interface?

I think the belief comes partially from the lack of exposure to really great user interfaces. People have to deal with bad user interfaces in life every day, all round them. While there are some very usable and very well done applications for Microsoft Windows, there are far more that are just terrible. I know, I've used a lot of them. But I'm good at recognizing what's good and what's bad. I've been trained to know the difference. I've had years of study, and years of design experience. Even with all this, I still don't get it right every time, especially if I'm also writing the code for the software.

Intuitive - known or perceived by intuition, which is the power or faculty of attaining to direct knowledge or cognition without evident rational thought and inference.

Elegant - of a high grade or quality, tasteful richness of design or ornamentation, scientific precision, neatness, and simplicity.


I've seen these terms bandied about for really poor, badly designed user interfaces in forums on the web and in discussions with users, more often than I care to count. This leads me to believe that people either don't know the definitions of these words, or they have really, really low standards. A user interface that is intuitive is one that has functionality that just sort of "falls" where it should. It's an application that feels like it fits on the platform that it is being run on. What might be intuitive on one platform is not necessarily intuitive on another. Take many Java applications for instance. I've been a Java programmer for many, many years. I've been a strong proponent of the language. It's great for so many things. One thing Java is still is not good at is being used for a write once, run everywhere user interface. In general, most of these applications that were written on Windows, Linux, or even the Mac, and designed to run everywhere, do poorly everywhere, unless the design is tied to at least one platform, in which case they work well on one platform and badly on the rest. Jack of all trades, master of none, seems to be a phrase that fits. I've seen SO many well written and functional Java apps that work on OS X but are really terrible OS X applications. They don't fit the platform. Things aren't where you expect them. They use different design paradigms than are usual for OS X. All this leads to an often frustrating and confusing user experience. Apple's "Introduction to Apple Software Design Guidelines" states: "An easy-to-use program offers a compelling, intuitive experience for the user. It offers elegant solutions to complex problems and has a well thought out interface that uses familiar paradigms. It is easy to install and configure because it makes intelligent choices for the user, but it also gives the user the option to override those choices when needed. It presents the user with tools that are relevant in the current context, eliminating or disabling irrelevant tools. It also warns the user against performing dangerous actions and provides ways to undo those actions if taken." THIS is what describes a great application. Many, many applications don't even come close to being able to be described this way.

I'm not claiming that usability and user interface design is easy, it's not, it's very difficult. I certainly don't always get it right. Even Apple doesn't always get it right. There are STILL some aspects of OS X that don't seem right to me (The font panel for instance). But I do know what to look for, I do know how to get information from users that helps me improve things. Design-centric companies like Apple do too. Unfortunately most companies are NOT like this. They seem to think design is secondary, even when it rises up and bites them on the ass at the end of a development cycle. They don't hire the right people to do the design for them. If they did, I might get a lot more work. Even when they DO hire experts, they often don't listen to them for "business" reasons.

Examples of bad design abound. BMW's iDrive is much maligned for taking some of the the simple operations of a car: heating, cooling, etc., and burying them under a cascade of confusing and hard to use menus. The best user interface is the simplest, every time. Not the most pretty, or the most clever. These traits often only serve to confuse the user. Bad user interface design also often shows up in TV or PVR remote controls. I've used some horrible ones, ones that I had a hard time figuring out, and ones that certainly couldn't be used in the dark. The exact opposite of these poor designs is the TiVo remove control. This is a perfect example of thoughtful and intuitive design. All of the TiVo buttons seem to fall right where you want them to. It's also so simple to use in the dark, due to the placement and size differences of the buttons.

Those who write software, in the vast majority of cases, should never, ever be the ones designing the user interfaces. I'd bet that, with some exceptions, most software developers have no idea HOW to design a user interface. If the design is also created by the same person or persons writing the code, the code will often actually influence the design of the user interface. This bottom-up design almost never ends well. I've been there, I've seen it. The best person to design the user interface is someone who is trained to do so, and someone who probably isn't writing any of the code beyond throw-away prototypes. Most companies, at least in my experience, seem to not know or not believe this. Most software developers don't believe this. Unless you know about contextual inquiry, and have done it, unless you know how to conduct usability tests, and have done them, unless you know about and have actually studied the wealth of user interface design principles that have been developed over the years, you should not be the one designing the user interface. If having used Mac and Windows applications is the sole basis of your "design experience", you are most likely not qualified to do the design. You may, in some cases, get lucky, but in far, far more cases, things will go wrong, and what you will wind up with is an application that is hard to use, and not very user friendly.

[Advenio is currently available for user interface design consulting, whether you need a new interface designed, or one reviewed for usability. If interested, send email to services@advenio.com.]

Saturday, July 17, 2004

MacGourmet hits beta 4, feature set is frozen

MacGourmetThere comes a time when you have to stop adding features, even though you want to, fix all remaining bugs, and push your software out the door. Beta 4 is this first step. Way more new features have been added to beta 3 and beta 4 than were originally intended, but users made a lot of good suggestions, and a lot of great feedback came from the time MacGourmet was in the Apple UI lab at WWDC, so the changes made for 1.0 are all great improvements.

So, no more new features, even little ones. As a developer it's hard not to keep adding "just one more feature" but if you do that, you keep destabalizing what's been tested and you have to test again. So, that's it. Finito. Please keep sending suggestions, comments, etc. though because they are all collected, evaluated and logged for future versions. I already have a pretty good idea about what the first few major post-1.0 releases will include, and feedback helps prioritze things.

Tuesday, July 13, 2004

Macworld Boston Day 1 Summary

MacworldI remember my first Macworld Boston. I was in college and worked part-time at Liberty Mutual's Portsmouth, NH location. It was a big deal back then, especially since Liberty was standardized on the Mac platform, and they actually provided days off and buses to get there for pretty much anyone who wanted to go. It was mostly people in the IT department that went, but it was still a significant number of people who made the trek. Back then it was huge. I don't remember the keynote being that big a deal, I mean keynotes by Scully and Amelio were hardly the Steve-notes of today. I do remember the launch of the Newton, which had it's own venue in Symphony Hall, and I remember Macworld Boston being so big that it filled both the World Trade Center and the Bayside Expo and sometimes additional buildings on top of THAT. Attendees had to take buses between the two major halls and we always started at the WTC first, as it had the biggest booths, the biggest vendors and the best stuff. It was easy to spend at least an entire day seeing everything.

Flash forward to Macworld Boston 2004. My how things have changed. I am well aware of the tift between Apple and Macworld's parent, IDG. Apple said that under no circumstance would they follow Macworld from New York to Boston. I think that really, this gave them an out from what had become the "Macworld" ship schedule that they were stuck with. Apple was clearly tired of having to come up with "one more thing" two times a year, on a schedule dictated by someone else. This spat gave them a good excuse to bail out, though the bad blood has certainly changed things.

Let me first say that the new Exposition center is beautiful. Let me also say that it currently sits in the middle of an uncompleted wasteland of confusion. Where do you park? Who knows? Signs, both for Macworld and for things like parking, were pretty scarce. When we entered the exhibits hall, the first thing that stuck me was the number of exhibits. Now, I wasn't expecting anything similar to the size of shows past, but this was tiny. What made it worse was that the layout and flow was terrible. They only used half of the hall they were in, and everyone felt crowded. Places that were popular pretty much blocked traffic flow completely. The second thing I noticed in the first pass around was that there was a clear lack of applications on display, of any kind. What I mostly saw was hardware, gadgets and the odd software package. It seemed that the only software vendor of any size, after Quark, was Software MacKiev. That says something I think.

The uber-booths of a lot of shows were also missing. At the big shows, a lot of the bigger vendors have theaters where you can sit and watch their demos. There was maybe one or two of these, tops. This was a Macworld on a much smaller scale than previous ones, in pretty much all aspects.

I attended because, well I'm a diehard Mac guy, and also because I wanted to see if it might be worth getting a booth next year. A booth is a huge expense, but with a lot of traffic and sales, it can pay for itself. What is needed for both of those, though, is a lot more exhibitors, which means a lot more people browsing in general. As it stands now, unless they give big discounts to exhibitors to increase attendance, it's not going to happen. I really, really want to see a successful Macworld again. I WANT to see Advenio there with a booth. With that in mind I offer some suggestions for next year's Macworld:

1. Spread things out, use more of the space you have. Come on, things were WAY too crowded and no one was fooled, because we all knew how small the space was.

2. Add an showcase for indie developers. Give them a large section, and make the booths reasonably cheap. We'd go in a second. I think this would be an incredibly interesting area to visit, as Indie Mac developers make up a significant portion of the software market.

3. Get more software there, period. There was hardly anything new to see or kick the tires of. Not even the major players showed up, like Adobe and Microsoft. I didn't see any pre-release software either, as was common in past shows.

4. Where were the games???? I didn't see a single major Mac game in sight. This is a huge omission.

5. Essentially it takes money to make money. Give more exhibitors more incentive to be there, then raise the prices later. Macworld is back to square one, so you need to build from here. With more exhibits, come more reasons to attend, and more money.

I think the show can be summed up best in the words of a guy standing next to me at one point, while talking on his cell phone: "We came here at 12:00. We finished at 1:30. That was about it. We're leaving in a few minutes."

Monday, July 05, 2004

WWDC summary

WWDCIt's unfortunate that I had to leave WWDC early due to family scheduling reasons. I was having a blast and learning a lot of amazing new things. I did manage to pack as much as I could into my three days, so it certainly wasn't a waste.

Attending it was definitely worth it. It was a great way to see what's coming up for Tiger. There are many, many new cool features that will make things better for the users, and certainly make things better for the developers. Will it be a "must-upgrade" upgrade like Panther was? That remains to be seen. There are a lot of cool new things that were not shown in the keynote and it looks like OS X is certainly on VERY solid footing for much bigger things in the future as well.

It's also great to be able to make connections while at WWDC, We were able to make some that will hopefully put our products in the hands of a lot of new users, which would in turn allow us to work on turning out more great software for OS X.