Usage Metrics in your RIA
Inspiration comes from Games.
I was at MIX ON CAMPUS (Brisbane) today and I was listening to one of our guest speakers (Ross Brown) talk about about some of the projects / research his students are doing with regards to games. One part of this session that really caught my interest was the metrics associated around the usage of games and how one is able to pinpoint events / ripple effects associated to game design.
An example was around how in a game like WoW, where a druid suddenly picks a fight with other characters, what would be the ripple effect of this event occurring. Using a tracking graph, one is able to pinpoint when the druid attacked and one furthermore is able to determine if the druid is now to powerful or not powerful enough, thus restoring balance back to the game.
Games are RIA's but have different content.
When you factor in a game like World of Warcraft vs Hotmail, what are the differences (other then the obvious context). In that in its primitive state, HumanA logs into ServiceA, HumanA interacts with ServiceA using various features within ServiceA. HumanB does the same as HumanA, only they use it differently (maybe left handed mouse etc).
If you're not tracking this, then how do you know what's really going on behind the scenes? Where are the usage bottle necks and how do you ensure that User Experience Architect that you forked out a small fortune for isn't just some crack pot fortune teller after all?
The only real way is to validate your usage. In that look at ways in which you not only monitor the structure of your user interface but log various events within it. This in turn provides valuable data in which you can later aggregate and analyze to determine what the next features will look like or more to the point which features constantly get overlooked or never used.
This isn't new, don't get me wrong and the idea has been around for quite some time. A lot of folks do do this in fact one local guy within my area and resident WPF Guru has done this many moons ago (Joseph Cooney). He was measuring various data points to determine what his consumers of his application (Thoughtex) were up to.
We also see hints of this in mainstream auto-mated bug reporting found within all Operating Systems ("Do you want to send a report back to Microsoft") etc.
Yet, we need to do more .. much more, especially in the RIA space as this will help underpin/elevate RIA perception further.
Once you figure out what you want to measure and why, and it can be anything just so long as it doesn't impact on performance. Yet, be careful at the same time.
For instance, I floated the idea of XBOX Achievement style concepts past our Hotmail folks internally (ie wouldn't it be great to have more areas of Hotmail open up with the more you use it? reward the power users if you will). They loved the idea and took it onboard, but they have reservations.
I thought "Why.. why on earth would you not act!"... simply put, privacy.
Can you imagine the fall out if we secretly monitored not only your behavior with Hotmail but all our software? In that whilst we have positive intentions in mind, at the end of the day this is still a privacy thing and it would be a delicate balance to strike.
The intent though is there, figure out a way to reward your power users and not so much your lesser users. As you in theory stand a better chance of driving User Satisfaction that much higher.
RIA is primed for this.
This is something RIA can do today, as majority of the time RIA solutions have to constantly talk back and forth between servers. Usually the outbound call is simply a case of "getXXX()" which is small in size and usually the returned response is where the hurt kicks in. So why waste that call and why not send some extra metadata down the pipe to record this information for later use.
RIA is primed for this kind of thinking as the technology itself is agile enough to cope with this, and more to the point has enough technological prowess in the room to do some smart overlays with that said data (in that you could heatmap areas of interest within your GUI).
This to me is where analytics in the future should head, it's providing a service that RIA Producers can tap into and relate such information back to their chosen solution. Not only that, it also helps determine performance spikes, as after all you're exposing a desktop like experience to the entire web, much like most mainstream games do today.
What impact does this have and how can you correlate your UX against your server logs in the event of a crash?
If anyone needs me, I'll be talking to the Live.com guys about this and seeing where I can take some of my ideas around this further.
Understand, RIA isn't about just putting a presentation tier ontop of disparate systems, it's also about ensuring it fits snugly within an entire platform and what impacts it can and can't have.