Human Computer Interfaces (HCI)

0

Posted by Noj | Posted in Uncategorized | Posted on 29-06-2011

So there is this whole field of “HCI” dedicated to figuring out “how do we lay the screens, buttons, text fields e.t.c so users really like our application”. Its a very interesting problem.

I’ve been thinking of a problem as well. Given a description of data, and its validators and controllers, can the view automatically create itself ?

I spend a lot of time doing some css and html cutups recently, and I’m very much in the process of “can I automate this whole thing ?”. After working a few years with computers, this is what I have learnt at least.

People don’t want computers or software, they want what computers and software can do to make their life better. The game is to show something on the screen, that the user sees it with his eyes (output), and responds with his hands (input) to complete the task the user had in his mind.

Tests of a good HCI

Explorability – What does the machine have to offer in an organised fashion. Every option should be a valid one, and options can be categorized into subsets. It shouldn’t allow the user to make mistakes such as forgetting simple things as putting a “dash”. Classic example of why using the terminal is so frustrating. Having good and simplistic documentation makes it very easier for the user to understand what an app “X” is about. The mouse allows explorability and the keyboard allows fast search. Bringing a combination of both gives serious power.

Search – once the user has learn’t what the machine has to offer, it should allow the user to execute his tasks in the fastest way possible. Adapting to the user’s problem. The machine should have some way of representing the user’s problem in an abstract manner by learning from user’s actions and try to help the user as much as possible. More like predicting and code completion. A good example is how google uses instant search box to almost always figure out what the user is going to type. I use eclipse’s “Ctrl+3″ function to search eclipse’s command quickly and finish what I had in mind.

Intent & Responsiveness – The user should be able to easily see what the machine is doing, e.g loading, waiting  e.t.c The more responsive and subtle the interface is, the more desirable it becomes. A good example is how apple nails the UI. Using a Mac in terms of usability is years ahead of windows or Linux.

Learning – The Interface should be able to execute common tasks very easily, it should be simple to start with and more complex functionality can be introduced with deeper exploration. This is one thing I think linux could improve on. there is bzip, gzip, zip, tar e.t.c Why can’t we have just one utility called “archive” that can compress to any format and uncompress from any format. More like “vlc”. Most common tasks shouldn’t need a zillion params.

Console to GUI

Yesterday I had this idea in mind, can I quickly generate UI’s for terminal apps like SVN, GIT, ffmpeg e.t.c ? The advantage of unix is its shell and the pipe system is that one can easily take very simple unix apps and pipe them together to do intelligent things. On the other hand the advantage of windows apps is that user can do a lot with point and click which makes it very simple to interact with the computer. Can we take the best of both worlds and join them into one ? That would be seriously quite an awesome achievement.

On the bottom line, I think If we need to make computers more intelligent and less frustrating to the common user, we need computers that can self-program themselves to orient around the user. Software that optimizes for happiness … now that’s something worth doing.

Write a comment