While I agree 100% on the programming part of this article, I think it kind of misses the point when it comes to what GUIs are good for.

It has been noted that GUIs make simple things simple, and complex ones impossible. Certainly it is worthwhile to make simple things simple. But too often software is geared to only one level of expertise. That which is novice-friendly is too frequently expert-hostile, and vice versa. Being needlessly forced to click the mouse over a menu will slow down the expert user who is more comfortable with a keyboard interface.
What has mouse-only interaction got to do with a GUI? A _good_ GUI will provide as many modes of operation as possible, including keyboard where appropriate (which is many places for most applications).

E.g. a graphic-intensive program like Photoshop has a LOT of keyboard shortcuts for e.g. selecting tools in the toolbox, selecting etc, etc. You can really tell that this program has been around a long time by looking at the streamlined UI. And, it's really a shining example of TMTOWTDI once you learn the more esotheric parts :)

One of the good things about a GUI as opposed to a CLI (Command Line Interface) is that they are "explorable"(1) to a greater extent. Rarely used commands are found in menus for easy browsing, commonly used commands have shortcuts and maybe a button in the toolbar. Using the GUI to learn to use the application is a good thing because it will allow people with different skills to jump right in at a comfortable level, allowing them to grow more advanced and efficient ways to use the program over time.

People are different. Some prefer text. Some people are more visually oriented.

Programs are different. Some problems are more suitable for a visual direct-manipulation approach, while other are strictly text-oriented, which the moronic and endless point-and-click configuration of many Windows programs proves (where text files would be a so much more usable and efficient solution(2)).

Programs have different usage patterns: the program itself may be complex or "shallow", different users may use the program seldom or daily. Ignoring these usage patterns will get you a bad user interface, be it a GUI or CLI.

/J

(1) http://www.asktog.com/basics/firstPrinciples.html#explorableInterfaces

His entire site is very good, BTW. Other nice sites about GUI and usability design are:

http://www.yendor.com/usability/

http://www.iarchitect.com/mshame.htm

http://www.sylvantech.com/~talin/projects/ui_design.html

(2) But like I said, more modes of operation is better. What's wrong with text files for experts and automatic processing, _and_ a GUI for seldom-users?


In reply to Re: GUIs Considered Harmful by Tom Christiansen by jplindstrom
in thread GUIs Considered Harmful by Tom Christiansen by princepawn

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.