As I sit here trying to beat SQL Server into submission yet again, I am reminded of a story.
Many moons ago, I used to work for a small software company on the east coast. We were a 100% Mac development shop but were looking to expand. We wanted to offer some limited Windows development services to our clients, so we started interviewing Windows developers to fill that void.
But, we didn’t want just anyone. We were looking for someone who would fit in with our mindset, our office culture. During one of the interviews, one of our guys asked a candidate what he thought about UI. The candidate responded “I usually concentrate on making the code work first. Then I put a UI on top of it.” Well, that guy didn’t get the job.
See, Mac UIs have traditionally been designed by designers and from a user’s perspective. While designing the UI, the designer is (or better be) constantly thinking about how someone might USE this piece of software. The UI design should be done first, IMHO. You have to know what you’re developing before you develop it. In other words, do your UI before you code. Not the other way around.
Windows software, however, is very obviously (to me) designed by programmers, from a programmers’ perspective. That’s why you find horrible UI elements like menu trees that you have to keep drilling down level after level to get to what you want. That structure is extremely analytical in nature, and while hierarchies might not be hard concepts for most people, the problem lies in tying that structure, visually, to what it’s meant to represent. A programmer can keep that relationship in his head, but most people aren’t programmers. And I don’t know about you, but I don’t have a tree in my office.
Take a look at something developed for Windows and take a look at something developed for Mac. What you’ll see is the difference between a UI designed by programmers and a UI designed by designers. If you’re a switcher, you’ve probably already noticed this difference, even if you haven’t been able to put your finger on it quite yet.
As a programmer myself, I know first hand that it is next to impossible for a programmer to do decent UI design while programming the code. These two functions MUST be split and performed by two different people.
I think most software development companies focus too much on functionality at the cost of usability. Functionality isn’t enough. Functionality has to be a given. Of course the code has to work. But, usability is key. It is the most important thing in software development. Software is analogous to a tool. It not only has to do something, it has to do it in a way that makes it easy for me to do it with that tool. Otherwise, I’ll find a simpler tool that allows me to accomplish the same task with less hassle.
A good rule of thumb when designing a UI is to design it so that your grandmother can use it. And no, that doesn’t mean creating a bunch of wizards to cover every conceivable task your grandmother might want to do. Your grandmother’s not an idiot. She didn’t go through her life and not learn anything. Create the UI so that it uses concepts, analogies, and metaphors that she’ll clue in to.
And don’t cop out by trying to say “there’s no way my grandmother could understand a sql database.” I’d be willing to bet that your grandmother has cooked a thing or two in her life. And where did she store all those recipes? That’s right, 3 x 5 cards. Start there and then work your way into more complex elements. People don’t mind learning new things when they’re hidden in plain sight right next to something familiar.
That’s one misconception about Macs that I hear from Windows people all the time. Windows people tend to think Macs are designed for idiots and are therefore somehow inherently less useful. By contrast, I find Macs much more easy to use because they are designed with the user in mind. You can accomplish the same tasks on pretty much any modern OS. But it’s the way you go about it that makes the difference. There’s amazing power in simplicity.
And that is pretty much the main reason I turn into a spitting, snarling, computer-throwing maniac after I’m forced to use Windows for any length of time.