Thursday, July 19, 2007

A while ago, Dax Pandhi, a Microsoft UX fanatic as far as I know him, had several rants about all the attention that Silverlight is getting, almost undermining the value of Windows Presentation Foundation (WPF).   He had strong concerns that though Silverlight is a cool technology, people should not lose focus on WPF.  I think the Silverlight buzz is not all hype.  Like I say in many of my forums, Silverlight is one of the coolest technologies from Microsoft since .NET.  Simply because by taking .NET into the web browser and across platforms, it opens up a Pandora's box of possibilities!  I believe Silverlight will get faster adoption than WPF, because WPF requires the underlying platform to be XP SP 2 or Vista - with .NET 3.0 installed - which in many countries, including India, is a very small share of PCs.  However, Silverlight has much lesser requirements and should catch up much faster.  Note that Silverlight also has OS requirements to be Windows XP and above (with support for Windows 2000 most likely coming later), but yet does not require you to have .NET 3.0 installed.

With all the choices around now, I thought I'll take some time to write a post on how you should choose the best UX technology for your applications.

User Experience is one of the key factors for any software application to succeed.  Be it the desktop or the web or a device, UX plays an important role in establishing an emotional connection and a comfort or familiarity with the end-user.  This increases customer loyalty to the product/service and if your product knows how to make money from customer loyalty, you'll probably make a lot of it.   All known things.

Delivering great UX requires several steps.  Some of these include user behavior analysis, information architecture, blueprints, navigational models, etc.  All of these then get translated into visual design and code.  Design and code eventually decide how the UX vision is translated into the actual software.  Traditionally, limitations of platform and tools have made very rich designs (the kind with 3D, Documents, Multimedia) a distant dream for average developers.  Regular Forms-style applications are the desktop trend and on the Web, it is content mixed with form controls in various layouts.

Very few technologies were able to bring fluid design into the desktop arena - DirectX, GDI+, etc. being some of those - and even few on the Web - Java, ActiveX and Flash.  Microsoft's investments into UX technologies has been aimed at reducing the barrier (both platform and tools) to high levels of User Experience.  With the release of Windows Presentation Foundation (WPF) for the desktop (on Windows Vista, XP SP2 and Windows Server 2003), it is now possible to think of never before UX possibilities. 

On the web, AJAX has added a shot in the arm to traditional web applications, making them far more responsive and intuitive to use.  Silverlight steps this up many levels by allowing rich interactive application interfaces to be built for the Web, interspersing with the functionality of HTML, ASP.NET and AJAX.  Silverlight also takes it cross-browser and cross-platform (IE, Firefox, Safari on Windows/Mac).

Again, all known things.

So how does one approach UX in this new world of multiple possibilities?  Based on who your end-users are, how they will use the application, what product/service you are delivering and what platforms you are targeting, there are multiple options:

  • You want a rich application that is installed by end-users on their desktop PCs.  An example would be Microsoft Office or Visual Studio.  You want the application to be available to the user at all times, have a very rich front-end, lots of client code and want to take full advantage of the client processing power.

Your technology choices:

Windows Forms - if it is a simple application like a data-entry application. 

Windows Presentation Foundation (WPF) - if it is an application that will use some rich graphical features such as vector drawings, multimedia, visual styles, etc.

  • You want a rich application that is not installed by end-users but is available to them on-demand.  An example could be a stock trading analysis tool with rich comparison features, visualizations, charts, etc. with constant changes in the features that are added (which is why you don't want users to install it).

Your technology choices:

XAML Browser Applications (XBAP) - which is still WPF, but a deployment model that delivers WPF applications off an URL, downloads the application, sandboxes it and runs it within the browser window (with an actual process - preshost.exe - executing it)

ClickOnce - With Windows Forms, you could achieve this with ClickOnce technology.  Again a deployment model, but if your application did not want heavily rich features, you could opt for lighter Windows Forms applications.  (ClickOnce for WPF applications is synonymous with XBAP)

  • You are creating a web application with standard features, but would like better responsiveness and usability

Your technology choices:

ASP.NET with AJAX - the easiest way to take your current web applications and "AJAXify" them is to migrate to ASP.NET 2.0 and AJAXHarish has been posting a lot around this lately and I encourage you to check his blog.

  • You are creating a web application with several advanced features.  An example could be a web application with rich graphical visualizations, ink support, vector drawings, etc.

Your technology choices:

Silverlight - a great technology fit for developing those web applications that require high levels of user interaction and rich visualization.

  • You are creating a desktop application that talks to Internet services.  An example is a locally hosted news reader application that displays news in a rich format on the desktop, but needs an Internet connection to download fresh news.

Your technology choices:

WPF Smart Clients - Basically these are regular desktop WPF applications but with several features to detect if you are connected to the Internet, download data when connected, locally cache data, synchronize data when connected, etc.   Smart Clients are a concept that Microsoft has had for a few years now and the basic design patterns remain the same with WPF as well.  A new technology codenamed "Acropolis" and the Smart Client Software Factory are some useful tools if you are building these kind of applications.

I have only highlighted some of the common scenarios of applications.  There are many more - including Tablet PC development, Speech interface development, mobile device development, etc. that I am not going into. 

When you look at the overall UX technologies available, and plot them based on their capabilities today, you get the following:

technologies ux_reach_rich

This is the whole UX map that is available today on the Microsoft platform.  So go ahead and kick some ass with snazzy user experiences!

 

Thursday, July 19, 2007 10:28:09 PM (India Standard Time, UTC+05:30)
Great post. This will surely help people figure out their options in a better light.

One thing that I've been concerned with is the "red button" syndrome. (Remember the Spiderman slide? Great power, great responsibility). People are going ga-ga over the sudden new options open to them, but are forgetting one simple thing: Just because you can, doesn't mean you should.

While MS can't and shouldn't tell people how to use their technologies, I think it should encourage MVPs, RDs, Trainers and other influential people to relay this.
Monday, July 23, 2007 1:52:14 PM (India Standard Time, UTC+05:30)
Great post. This will surely help people figure out their options in a better light.
Monday, July 30, 2007 11:34:52 PM (India Standard Time, UTC+05:30)
Pandu - Very informative post. Summarizes the choices in a concise form.
Name
E-mail
Home page

Comment (HTML not allowed)  

Enter the code shown (prevents robots):