I've just finished listening to two of Ron Jacob's Arcast shows both of which covered aspects of User Interface. With the work that we are doing at Intilecta this is clearly an area that we place a strong emphasis on as part of our product development process. What I don't get is why everyone has suddenly decided to focus so heavily on user interface. Perhaps it is the fact that Microsoft (and most other technology companies) was whipped by Apple when they stormed the market with the iPod. With the recently introduced Zune it is clear that Microsoft is trying to put a stop to this market dominance but will they be in time to stop the iPhone???
If you look at the recent product releases and announcements from Microsoft it is clear that there is a significant move to combat this "lack of user interface". Just to name a few: WPF, Expression Suite, Vista, Office 2007, WPF/e, Atlas and the list goes on. In fact if you look at the structure of Frank's new look team you can see that user interface has it's own evangelist.
Ok, quick question to the floor - who has been involved in a project (that is going to have some sort of user interface) where they haven't said "we want a user interface that really engages the user"? I think that there has been enough talk about user interface so it is at least a consideration when we build an application. Further there needs to be a distinction between poor user interface and stupid users. One of the snippets on one of the podcasts was that the automated checkin stations at airports were poorly designed because a particular passenger didn't read the screen and was left waiting for his ticket (the part he didn't read was that because he was in an exit row he had to pick up his ticket from the counter). Hey you can take a horse to water but you can't make it drink - there is no excuse for user being idiots!!
Looking at two of the technologies in the list above, here are some comments:
Ajax/Atlas - One of the issues I have with this technology is that it is a patch for a generally faulty technology. The whole concept of web applications with a request-response model has a fundamental latency that can only be minimised or hidden. If this is done well (which can be done with Ajax/Atlas) then you have a web site that is pleasant to use but still no comparison to a rich user experience that could be achieved with a full client application. I think the next step in this direction will have the returns that the web world are really chasing - WPF/e will provide a cross-platform, server deployed solution that has a rich user experience including media content.
WPF - Ok this is a technology that absolutely rocks. If you know what you are doing you can build a rockin application that is a real joy to use (I must confess I haven't seen such an application yet but I've been sold on the bouncing/rotating buttons!). The issue I see here is that Microsoft are trying to get developers to use another technology because it "might" improve their user interface. Most of the issues I actually see with most user interfaces is that developers don't understand how to do proper user interface/framework separation - by this I mean the ability to carry out long running actions on a background thread so that the application remains responsive at ALL times. This issue isn't fixed by WPF and will continue to be an issue long into the future.
One point I would like to make in closing is that Ron chats with Simon Guest who has a great (although relatively simple) framework for building good user interfaces. He separates user interface design into three parts:
Visualisation - How information is presented. Intilecta provides this in the form of content panels and a navigation tree that is easy to navigate and intuitive. We reuse knowledge established within the team to build a user interface that optimises the presentation of data so the user can see the information they need.
Foundation - Which patterns the application is going to use in order to reduce the amount of code a developer has to write again and again (and again). IMHO if you have to write it twice you have written it once too many! We had to build our own user interface framework as we found the Composite UI block to be too complex for what we wanted to do, and not a particularly good fit for the type of user interface we were building.
Context - This is how your application integrates into the total user experience. In our case we have identified that Outlook is one of the primary business tools that our clients use. As such we have ensured that whatever we do will integrate seamlessly into Outlook so that the user doesn't waste time context switching.
In closing I would like to reiterate the importance of user interface. Don't take my negative comments as a reason not to get into these technologies and start building better applications.