Warning - this is a somewhat technical post about software development and stuff...but most importantly (to me at least), about user experience...
Case study of a great user experience -
I'm in the process of developing a proof-of-concept (POC) for the migration of an important revision control database from Microsoft Visual Source Safe to Microsoft Team Foundation Server (2010/2012). Fortunately I have found a new (free!) tool from Microsoft that claims to automate the migration process; I started a trial run yesterday afternoon.
After the tool had been running a couple of hours (I had no idea how long the process would take) - at about 6:00pm - I decided that I could not be shagged waiting around anymore for this process to complete; I had a touch rugby game to go to and play with my son, the light was fading and the process was still running, and thus elected to shut the trial migration off early by putting my laptop into hibernation. This would usually be a death sentence for a transactional process in-progress. I expected this would be the case and thus committed myself to starting early in the morning to restart the process and finish things off - no big deal.
So, this-morning I bring my computer out of hibernation and to my pleasant surprise, rather than seeing a message saying "Oops! It looks like your migration process has shat itself - would you like to start again?" I get this:
Sure enough, after what is presumably 101 seconds, the migration process continues without a hitch (it's still chugging away as I write this post). It's taken me about as long to write this post as it would have to set the migration up again (OK, perhaps a little longer!) - and I'm in at work early, so I guess we're square...
The moral of the story...?
Over time (pretty quick actually, probably by the end of the year) the relevance of this tool will fade and it's purpose will be forgotten. This particular part of the experience that the tool delivered though, will take far longer to fade - this experience has certainly raised the esteem of the Microsoft corporation - at least in my mind. And, it also inspires me - as a product designer/developer - to aspire to and develop better customer experiences.
Recently I have learned of and studied material relating to the Kano Model, which provides a tool for measurement and classification of customer/user experience in relation to product features. The following diagram visualises the essence of the model:
["The Kano Model" - source: http://upload.wikimedia.org/wikipedia/commons/c/c7/Kano_Model.png]
The experience provided by the aforementioned tool for me, was something resembling an "excitement attribute". I expected that the tool the not survive the hibernation process - after-all why should it? Any reasonable engineer would whinge and moan, but would diligently wait for the process to complete before shutting it's environment down - hence, my expectation that when I did callously shut the environment down, the migration process would crash.
To my surprise and delight though, someone along the way of the product design process thought about the possibility of this sort of "interruption" happening and made the tool robust enough to be able to cope with it.
For the techies -
The tool that I'm using to do this migration is discussed here: http://msdn.microsoft.com/en-us/library/vstudio/jj612883.aspx
The download link for the tool is here: http://visualstudiogallery.msdn.microsoft.com/867f310a-db30-4228-bbad-7b9af0089282
Some other links:
Revision control: http://en.wikipedia.org/wiki/Revision_control
A neat blog post about the Kano model: http://baymard.com/blog/kano-model
I have a SVN repo on my local machine that I have been shoving stuff into since before I knew how to use revision control systems properly (...
As time goes on, the world is becoming more-and-more automated by software. This essentially also means that there is an exponentially growi...
It's been a while since I made a purely technical post... So, today I wanted to make a change to a Microsoft Team Foundation Server 20...
Another purely technical post on TFS... The scenario We wish to migrate code between branches that do not have a branch/merge relationsh...