I'm very interested in User Experience (UX) and I was thinking today: The program where I have the very best User Experience is Emacs.
A lot of UX today is lumping everyone all together in the same bag, a kind of semi-experienced, not very interested or passionate user. I wonder, is this the kind of User we should be developing for in every situation?
I think that we first really need to think about the user we are targetting our code for, is this a beginner user who just wants to find something out quickly? Perhaps an intermediate but non-tecnical user? Or a hardcore Emacs guru? Each of these will have a vastly different user experience when using the same website or piece of software.
I think this is one of the real powers of developing model-heavy, API based, Behaviour Driven Development (BDD) code. With code like this, we can deploy different versions of the application for different users. Some users will want all the blinking lights and rounded corners, with lots of tooltips and easily accessible help. Others will want to code some custom Emacs Lisp so that they can quickly interact with your application.
One big application that has really shown this to me is the new Blogger with the GData interface. I wasn't doing much blogging at all because when I wanted to create a blog post, I would have to go to my blogger Create Post screen. Then I'd have to type in the text into that tiny textarea, without all my great Emacs shortcuts, publish it, and then wait for it to refresh to see if there were any errors. It would take about 30 extra seconds to do all this other stuff, and not having access to my Emacs environment was just a killer.
Now with gblogger.el, I can type up multiple blog posts at once from right inside Emacs. If there is an error, it gives me an error message and I can just do "undo" to get the original post back. It speeds up my blogging experience tremendously.
I think This is all parts of UX, and is something that is usually neglected by UX experts, although they might be targeting their users as one kind of user, like a beginning blogger, there are a whole range of users, and we should be thinking about all these users when we design our websites and APIs. Luckily, often the hardcore people on the team are the programmers, and as programmers, we can decide to make an API for our web projects when we code them. This can make our programming easier and can open up the code to new and exciting developments later.