Please create an account to participate in the Slashdot moderation system

 



Forgot your password?
typodupeerror
×
GUI Software Books Media Programming Book Reviews IT Technology

User Interface Design for Programmers 331

ellenf contributes this review of User Interface Design for Programmers. "Aimed at programmers who don't know much about user interface design and think it is something to fear, Joel Spolsky provides a great primer, with some entertaining and informative examples of good and bad design implementations, including some of the thought process behind the decisions. Spolsky feels that programmers fear design because they consider it a creative process rather than a logical one; he shows that the basic principles of good user interface design are logical and not based on some mysterious, indefinable magic." Read on for the rest of ellenf's review.
User Interface Design for Programmers
author Joel Spolsky
pages 144
publisher Apress
rating 8
reviewer Ellen
ISBN 1893115941
summary Aimed at programmers who don't know much about user interface design and think it is something to fear, Joel provides a great primer, with some entertaining and informative examples of good and bad design implementations, including some of the thought process behind the decisions. He feels that programmers fear design because it is a creative process rather than a logical one and shows that the basic principles of good user interface design are logical and not based on some mysterious indefinable magic.

Spolsky's light writing style makes this book an easy read, and his personal stories and anecdotes help make his thoughts on user interface stick in your mind when you're done reading. He provides programmers with a few simple guidelines to follow, such as "People Can't Read," and "People Can't Control the Mouse."

His focus on the logic of good user interfaces and his push to develop a good user model is bound to resonate and get programmers to think about making their interfaces logical from the user's perspective, rather than the perspective of the inner architecture, which the user could typically care less about.

The reminder to focus on the tasks the user is trying to accomplish rather than the long feature list that usually gets attached to product specifications should be read by product managers as well, of course. In fact, the absence of specific platform details makes the book a good read for anyone involved in software design -- with the caveat that it is not aimed at people with much design experience. This is a great starter book and makes the process understandable, friendly, and fun-sounding. (One of the things I appreciated was how much fun it sounds like Spolsky has when he's working.)

Spolsky encourages showing the in-progress software to users and watching them use it. I think one of his best points about usability testing is that if the programmers and designers cannot bother to watch the users during the testing, they're unlikely to gain much from a thick report by a testing lab. He encourages simple, quick, and casual usability testing, something even the smallest firm could afford and from which they would could draw useful improvements.

If you have much design experience, you'll find this book a bit basic, but even then the examples are worthwhile to read and remind yourself how a good idea can be poorly implemented sometimes -- usually by taking it too far! I was personally hoping for some richer comments about designing web applications, but if more people start paying attention to the basic guidelines he's covered here, web users will benefit.

In summary, the book is aimed at programmers without much design experience and Spolsky does a great job of hitting his mark. I think product managers without much design experience would benefit as well, as it provides a good basis for thinking about user interface design.


You can purchase User Interface Design for Programmers from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.

This discussion has been archived. No new comments can be posted.

User Interface Design for Programmers

Comments Filter:
  • by fiannaFailMan ( 702447 ) on Wednesday October 01, 2003 @12:45PM (#7104526) Journal
    Some of the guys who work at our place are excellent programmers and are extremely knowledgable about the underlying technology that they're using. When it comes to interfacing their software with the user though, they start to get some funny ideas about what the user needs.

    "Yes but that's how I would think it works" they'll say. Says I, "Yes but you're a certain type of guy who knows what's going on underneath it all, from the user's point of view he's looking for something completely different."

    That's why our company has people like me, renaissance people if you will, who can think with both sides of the brain and provide a bridge between the technical people and the creative people who design the user interface.

    It's a good learning process, all this interaction means that they get to learn a bit more about the needs of the user and I get to learn about the underlying technology. Books like this would probably help us all.

    Another book that's doing the rounds at our place is The design of Everyday Things. [amazon.com] It covers much more than just computing and gives a good insight into the psychology of the user. Some of the psychoanalysis stuff is a bit deep for my liking, although overall it's quite informative.

  • by banky ( 9941 ) <greggNO@SPAMneurobashing.com> on Wednesday October 01, 2003 @12:45PM (#7104529) Homepage Journal
    Programmers know UI based on what they do as programmers.

    Programmers need the 80-bazillion options Visual Studio requires, because Visual Studio is a tool for making other tools.

    On the other hand, users don't need all those options (at least, for the average user). Users want a hammer, not a combination forge-lathe-grinder with optional fiberglass extruder.

    The argument is constantly made, "What about 'power users' and people who really do need extra functionality?". Fine, OK: put that stuff "under the hood" and document its location and functionality. But don't put in a user config dialog with 27 tab groups, 40 options per tab, with an 'Advanced' button on each one.

    In fairness, there's less and less of this. Windows programmers are starting to understand the value of simplicity, just like Mac programmers are starting to understand the value of "power user" options (the `defaults` command, for example).
  • by kisrael ( 134664 ) on Wednesday October 01, 2003 @12:53PM (#7104614) Homepage
    Well, speaking as a programmer who "uses" many other pieces of software...yeah, I think I do have some better ideas for many of the pieces of software I use...

    Of course, many of my potential suggestions have to do with "improvements" made in UIs I know, so I have to sort out "I don't like it because I'm not familiar with it" from "I don't like it for these specific functional reasons" (and that's always with the risk of not seeing why the "improvement" was made...there could be decent reasons for some of them.)

    That said: some of my favorite gripes...
    Windows. Ctrl-F in file explorer ... I really miss the old independent app that would pop up. It was so clear that it was a seperate task. This newish sidebar sucks...I hate how I can't tell at a glance if the right pane is search results, or if maybe I had already hit the "X" button and the window is just displaying an ordinary set of folder contents. Duhhrr.

    Windows. Ctrl-F in IE...considering how many decent ideas they've had w/ autocomplete of previous URLs in the Address bar, I'm impressed that the Ctrl-F box is so bad. Would it be so hard to make a list of my past searches into a dropdown combo box there? Is there a logical UI reason why sucessful in-page searches have a larger chance of showing up when I hit Ctrl-F next time, when usually it's the failed in-page searches that I want to repeat? Most infuriating is when a page hasn't finished loading...ctrl-F pulls up one of those wacky sidebars again "gee, if your page is taking more than a few seconds to load, maybe you actually want to search the entire frickin' internet through your special OEM-branded portal". GAWD, is there a way to turn that off?

    Also recently I upgraded to the latest version of the newsreader Tin (on an old academic user account)...the misfeatures multiply, and only some of them seen configurable, from showing the msg header even after paging down (thus making it 4 times harder to see where one msg stopped and the next began) to color-coding instead of displaying the characters *stuff* _like_ /this/ used for emphasis, to always asking if I want to mark all messages as read when exiting a group without reading all of its messages...

    See, it's not so hard to play armchair UI guru...
  • by Miguel de Icaza ( 660439 ) <`trowel' `at' `gmail.com'> on Wednesday October 01, 2003 @12:55PM (#7104634) Homepage Journal
    Wierd. I think the paperclip is a great idea.

    I have even been thinking about how to make a framework for guessing what the user is doing in GNOME.
  • by IceFox ( 18179 ) on Wednesday October 01, 2003 @12:57PM (#7104658) Homepage
    What you really want it GUI Bloopers [amazon.com]. GUI Bloopers take you step by step through the majority of the UI widgets out there and tell you what it is, why it is there, what it should do and what it should not do. This way you have a much better feel for WHY something should be one way over another. I own both the above books, but I tossed out the reviewed book. Way to much theory (some of which I very much disagreed with) and little to no substance at all. Yes every programer should know a little theory about how users interact, but the key words are "a little". What developers really need is what GUI Bloopers provides, an explination of what you should and shouldn't do with widgets.

    Benjamin Meyer

  • by BetterThanCaesar ( 625636 ) on Wednesday October 01, 2003 @01:19PM (#7104915)

    The name GUI Bloopers made me think of this [asktog.com].

    Example: "Explain why a Macintosh pull-down menu can be accessed at least five times faster than a typical Windows pull-down menu. For extra credit, suggest at least two reasons why Microsoft made such an apparently stupid decision."

    The questions and answers are quite interesting.

  • Example of bad UI (Score:4, Interesting)

    by lightspawn ( 155347 ) on Wednesday October 01, 2003 @01:26PM (#7105002) Homepage
    Windows' file dialog - not only does it not remember the scrollbar location or sort order, it doesn't even remember the 'details' view - the thing that makes sorting even possible (why is any other option?), so to open the file you want, you need to:

    * select the "file/open" menu entry
    * move to the view drop-down list, click
    * select the "details" option, click
    * move to the column you want sorted (say "modified"), click
    * scroll down to the desired file
    * move to its name, double click

    How many man-hours are lost worldwide to this UI idiocy alone?
  • by kisrael ( 134664 ) on Wednesday October 01, 2003 @01:29PM (#7105050) Homepage
    Heh, reminds me of Donald Norman's book The Design of Everyday Things [amazon.com]. He loved picking on things where aesthetics weere given priority over utility, like doorhandles that were the same for push and pull. He dismissed it with a sniff and "probably won an award".

    Of course, his own book suffered from the same problem...it was originalled "The Psychology of Everyday Things", which let the book refer to itself as "POET", kinda nice.

    Of course, bookstores and other catalogers kept putting it under "psychology" rather than "design".

    And indeed, it had won awards. ;-)
  • by nachoboy ( 107025 ) on Wednesday October 01, 2003 @04:00PM (#7107111)
    Microsoft has contemplated this for years as it is a fairly common request. Raymond Chen, whom you might know better as the creator of the wildly popular TweakUI, has been a Windows developer for several years. He has a blog entry [gotdotnet.com] describing why they've never done this.
    On a side note, I've come to realize that Microsoft only makes products for 2.1 audiences:
    • 1. Home/Inexperienced/Novice Users. This is your corporate drone, your mother, and the kids at school. They all want to get on the PC, get the email, write some documents, and surf the web. Don't care much for how or why things work, only that they do. This is why we end up with the gaudy Fisher Price interface and wizards and all sorts of unfunctional junk.
    • 2. Systems Administrators. Your friendly neighborhood BOFH. He's just gotta keep the servers going, the desktop machines running, the database functional. Plenty of options, tweaks, dull grey backgrounds, policies, ways to make things work if you're sitting at the server console.
    • 2.1 Developers. Yadda yadda yadda... need apps to sustain a monopoly... the whole bit. They get things their way inside Visual Studio and not very much else.
    What I object to is there's no class for the ever-growing market of Techies. People who understand the desktop machine they use every day. Many of these are programmers or systems administrators so they know what's going on, they know how they want it done, and they know how they want the computer to do it. Unfortunately, theirs is a life of constantly changing unfunctional defaults to more efficient alternatives, which is of course a mind-numbingly difficult task after you've done it more than once. If we can have predefined security templates [microsoft.com] that apply to a machine to change a slew of default options, why not expert templates?
  • by Vaughn Anderson ( 581869 ) on Wednesday October 01, 2003 @04:23PM (#7107381)
    Unfortunately, UI can also be an area that should *not* be consumer-driven.

    You are actually sorta wrong here. People don't ask for those ridiculous bubble-alien interfaces, they are often times shoved in their faces by over zealous graphic artists. (read MS media player, ugh I can't stand that thing anymore, I like version 6.4...) Though I do agree with the rest of your comments and think they are right in line with the reality of the end user.

    The absolute worst interfaces I have seen in my life are made by pure artists, and then the poor programmer has to make the thing work.

    I am a designer, artist and programmer. I have found my niche here, I design interfaces for about 1/3 of my job, I get hired just to do that at times. A couple of things I found are that -

    1. I have to force myself to keep things simple.

    2. The graphics have to amplify the use of the tools.

    3. You have to always put yourself in the position of the end user.

    These keys basically make my interfaces look like everyone elses out there except for some basic visual look and feel things. There is only so many places and so many ways you can make a button or a menu and have it be useable. My job ultimately comes down to dealing with custom interfaces for dealing very custom data. (not really like media players which are very common and a VCR style control can only be made so many ways)

    End user's scream for easy to use stuff. Graphic designers are impressed with _cool_ interfaces and tend not to consider useability, but ultimately get the job of UI design regardless of their qualifications for it.

    Programmers tend to not consider useability in the sense of where to put buttons/menus, what context to place them in or what to name them for end users.

    So outside of these two camps is where I have to sit. I have to argue with the management, the other designers and programmers to make it obvious to them that the users' need things these groups don't consider important.

    The values of the graphic designer are they make you feel good when you see and use the application. The value the programmer brings is that the application runs well and the controls work as they should. The value I bring as the UI designer is that I make sure everyone plays nice together to make something that an outside user will want to use, can use and ultimately doesn't have to be taught how to use, as it is intuitive.

    What the basis of inituitive _is_ though is a matter of a different debate.

  • by key45 ( 706152 ) on Wednesday October 01, 2003 @10:40PM (#7110328) Journal
    Ok, this is mostly off topic, but speaking of Windows and consistency:
    It drives me nuts that Visual Studio .NET does _not_ use F7 as the default for 'build'. Every Windows IDE since the dawn of time (or at least since Turbo Pascal) has used F7 to build. Why the hell did they change it?

    (yes, I know you can change the defaults, but that doesn't help when I'm pair programming at a new hire's terminal and I take control for a second)
  • by Phil Gregory ( 1042 ) <phil_g+slashdot@pobox.com> on Thursday October 02, 2003 @10:42AM (#7113382) Homepage
    And I do remember hearing that anecodete about the renaming, but have no idea where.

    The front of The Design of Everyday Things tells the story of the renaming of the book. I can't find the text of the intro anywhere on the web (via googling for specific phrases) so:

    When Doubleday/Currency approached me about publishing the paperback version of this book, the editors also said, "But of course the title will have to be changed." Title changed? I was horrified. But I decided to follow my own advice and do some research on readers. I discovered that while the academic community liked the title and its cleverness, the business community did not. In fact, businesses often ignored the book because the title sent the wrong message. Bookstores placed the book in their psychology sections (along with books on sex, love, and self-help). The final nail in the title's coffin came when I was asked to talk to a group of senior executives of a leading manufacturing company. The person who introduced me to the audience praised the book, damned the title, and asked his colleagues to read the book
    despite the title.

    --Phil (If you haven't read this book, you should do so now. It's that good.)

Say "twenty-three-skiddoo" to logout.

Working...