It seems like I am constantly learning new software. I'll learn it all, then I'll die. I have one comment to software producers, I don't care what you do with the engine, just make the interface the same. Imagine a world where you could open up any program and run it within an hour because it's a GUI like every other GUI. I have noticed over the years that interfaces are becoming more similar, particularly if it is software created by the same company, but we are far from my ideal software interface world.
Michael was an early CG pioneer writing code for Robert Abel and Associates in the early 1980s and then for his own former company, DeGraph/Wahrman. As he states later in his answers to my questions, he wrote his first user interface program around 1973 for a TI graphics terminal connected to the ARPAnet at UCSB. Oh yes, he also received a kind of Oscar, The Academy Of Motion Pictures Arts and Sciences, technical achievement award for developments that led to the Wavefront system.
What follows are my questions to Michael Wahrman and his answers.
1. Tell us about your first experiences with interface design and the people you were most influenced by?
The first and most important influence was Ted Nelson through his book "Computer Lib". I read it in 1973 or so, and it changed everything.
The second was a visit to Xerox when they were trying to recruit me for the project to create the productized version of the PARC Alto system. This is the same system that Steve Jobs famously saw and from which he got the idea for the Macintosh (e.g. stole the idea for the Macintosh). It was an amazing technological achievement, one that in certain ways has still not been realized out in the real world.
Two other influences include: a visit to SRI, Intl in the late 70s where I saw Doug Engelbart's office with the first mouse (and foot pedals and one hand typing chords) and when Willis Ware at RAND screened a 16 mm copy of Ivan Sutherland's film about Sketchpad.
I also remembered another influence, it was the spatial data management system at the MIT architecture machine in 1976 or so.
I wrote my first user interface program sometime around 1973 for a TI graphics terminal connected to the ARPAnet at UCSB.
2. What is good interface design? What is bad interface design?
Here are some things to keep in mind about good (and bad) interface design.
First, first there is design and then there is implementation. The user only sees these two together, the end result which is the software they use, but design and implementation are in fact different.
Second, it is important to remember that there are very different communities of users out there and that there may be no single design that works for all of them. There are a few, but very few, designs that are universal and they are worth noting (my personal favorite was the original Bell Telephone push button keypad to replace the phone dial).
Third, a good user interface design is not possible unless the underlying software, its purpose and architecture, are clearly articulated and well designed. The user interface is a window into the application, and it is the application that is the tool that is allowing the user to get something done. If the underlying software is not well thought out, then the task of creating a good user interface is that much harder and may not be possible. You can not make a silk purse from a sow's ear.
Fourth, a good user interface may make assumptions or have requirements about the underlying hardware. It may not be possible to say that such and such an interface runs on any platform. It may require a certain compute performance, or a networking ability, or graphics capability or user input device. The hardware and the software are deeply interrelated here; they are in most computer design, but interface is particularly affected by it.
Having said all that, a "good" user interface design is one that allows the user to express him or herself naturally in the context of the problem that the application is trying to solve. The interface should be somewhat easy to learn at first for the beginning user, and yet capable of nuance and sophistication for the advanced user. The ideas and concepts behind the user interface must be clearly described and available to the user in some form available through the interface (e.g. self contained documentation).
A good user interface will allow the user to incrementally learn to use the tool, and have detailed information about the tools and techniques available. A user interface must be consistent, robust, and documented. The user interface must allow the sophisticated user the ability to build into the tool various practices and algorithms that extend the tool.
A good user interface will be open, will document its data formats and let others use those formats. A good user interface will not arbitrarily restrict the ability to import or export from/to other formats for marketing reasons.
A good user interface may not be graphical. For example, I thought that the Shake command line interface was or is wonderful. Well designed, easy to use, easy to learn, lends itself to advanced use, etc.
A bad user interface is much easier to describe, but it is also even more intertwined with the implementation of the design. A bad design & implementation has some or all of the following: it makes the user repeat trivial detail over and over again which has been previously described, it requires the user to become an advanced user before the program feels at all natural to use (if it ever does feel natural), it will make the user choose between equally bad choices with no good choice, it will violate the purpose and intent of the program it is a part of (a classic example of this is the phone that cuts of an ongoing phone call while asking a stupid question), a bad user interface will be a stupid pull down menu system, sometimes called "point and grunt" like all the early commercially available animation packages.
In particular, a bad user interface design will leave a user confused about how to go about solving his or her problem even after months of use to solve similar problems.
A bad user interface will require the user to learn a completely new system of interface, even when it does not add any functionality or improvement (in other words, difference for difference's sake).
A bad user interface will evolve badly over time, with bad idea layered on top of bad idea, or random changes to previous interfaces as the program ages, requiring relearning the program even though no new functionality has been added. Microsoft is the worst offender of the latter, truly world class in their contempt for the user.
A bad user interface will interrupt the user when he or she is working. The user interface should never interrupt me, I do not care what it has to say, it is not more important than the work I am trying to get done. It may discreetly put a notice in a window in the back, but it should never grab focus and make me stop what I am doing or typing.
3. If you were to design an interface today what would be your considerations?
Michael's list of considerations:
1. What program or system am I interfacing to?
2. Who are the intended users?
3. Are they expert or beginning?
4. What hardware will it run on?
5. What OS, language and associated packages are required to be used?
6. How good is internal communications on the project (e.g. can people in different parts of the project work and communicate with each other or are they aloof or uncooperative with each other)?
7. Whose vision is this software? What is their vision for the user interface? Who will be the keeper of the flame of our design? What will be the design process and in what form is the design presented. Is there a desire for excellence or is there just lip service if that?
4. What have been the big influences on interface design, be they good or bad?
By far the best influence and the most important influence on interface design has been the ACM Special Interest Group on Computer Human Interfaces or SIGCHI. There are other conferences as well such as UIST, but SIGCHI was the first that really had impact to the best of my knowledge.
Apple Computer has been one of the very few commercial companies that can bring out products that use 20 or 30 year old user-interface ideas presented at SIGCHI. No one else can do it, it seems.
The original Palm was brilliant, even if it was destroyed later by the people who took over the company.
The people and ideas behind HTML, and the predecessors to HTML, have had a tremendous influence. They are part of a larger community of people who work on the problems of creating documents with various annotations (e.g. markup languages) for publication and scholarly purposes.
5. How should the engine and the interface of a program relate?
In a deep and meaningful fashion.
6. In your company you were creating performance software. Tell us about that and the interface involved with the software. How does it relate to what is being done today with performance software?
Performance character animation was my research project at Degraf/Wahrman to explore the idea of using creature effects and other forms of puppetry as an interface for 3D character animation. The idea got diffused among many people there who did not really get it and it had some successes and failures. One mark of success is that several of my programmers are making a living with these ideas to this day.
7. Why is there so much bad user interface design?
There are a million reasons but here are a few. For most companies, it is not about excellence, it is about stealing money and maintaining power. So they don't give a fish what kind of user interface they write. Second, its about maintaining power, so they don't hire people who know better. Third, the people involved aren't very smart and don't know any better. Fourth, the people involved are not very talented and don't know the difference between good and bad interface design if it hit them over the head with a stick. Fifth, many projects are saddled with a legacy or series of requirements that make it impossible to do a really good design. Sixth, there are usually institutional barriers to doing really good design.
But the most important of these reasons is talent, and the lack thereof. Design is about aesthetics and constraints, computer and interface design is as well. Without the talent, and the organizational desire to do good work, good design and implementation of user interfaces is unlikely to occur.
Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserverd for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.
Notice revision #20110804