« Eclipse tip: quickly navigate between method implementations | Main | Another training in India »

Jan 29, 2008

Bringing agility to desktop apps development

Remember the early days of Gmail?  The team was releasing new features almost every week. Many web applications take that approach, which is the essence of agile development: instead of monolithic development of a huge application which takes years, develop a small baseline and add more small features as you move along in short iterations of a few weeks each. Once your initial application is out there, you can see what the users like, what they don't like and improve. This approach has taken the software development world by storm.

The agile process is about responding quickly to user needs. It works great in web applications, like Gmail, but when it comes to desktop application development there some challenges. From the development process perspective, it's pretty much the same. Coding is still coding and design is still design. However, there are a few technical shortcomings.

The obvious one, is deployment. Web applications need no installation. Once the sever is updated, the software is immediately refreshed on all clients. This doesn't come easy for desktop applications. Nevertheless, most modern desktop applications have automatic updates that solve the issue. There are ready-made automatic updates for most platforms and today, when I install an application, I expect to have it updated automatically.

The less obvious technical gap is usage tracking. In web applications, it's the easiest thing to do. Your sever is getting all the user requests, so the data is yours to analyze. There are companies that bring this to an art form and can show you images of where your users' clicks congregate or even entire video clips of their interaction with the system. Check out crazyegg as an example.

This usage information is critical for assessing the software. For understanding what users use and what they don't use. It is one of the best tools a product manager can have, and in the desktop world it's not trivial. There are other tools like user interviews and surveys, but these provide only partial picture, which is usually biased.

Naturally, companies can develop their own usage tracking mechanisms right into their software. Developing such a service requires some investment. Especially when it comes to setting up a server that absorbs the data from your end users. Microsoft, for example, has such a feature in Windows called Customer Experience Improvement Program. However, this is specific to Microsoft software and cannot be extended to third party applications.

Eclipse 3.4 has something similar called Usage Data Collector. It's still in an early stage, but this could be a valuable tool for Eclipse RCP application developers.

This area is underdeveloped from the wrong reasons. Most desktop applications are far more complex than web applications, so they require much more insights to improve. However, it's the business model which makes the difference. In most desktop applications you pay for the application. You buy it once. In many web applications, you don't pay. They want you to come and hang around as much as possible. This why the usage information is so critical to their business.

TrackBack

TrackBack URL for this entry:
http://www.typepad.com/services/trackback/6a00d83548421753ef00e5500a19798834

Listed below are links to weblogs that reference Bringing agility to desktop apps development:

Comments

Verify your Comment

Previewing your Comment

This is only a preview. Your comment has not yet been posted.

Working...
Your comment could not be posted. Error type:
Your comment has been posted. Post another comment

The letters and numbers you entered did not match the image. Please try again.

As a final step before posting your comment, enter the letters and numbers you see in the image below. This prevents automated programs from posting comments.

Having trouble reading this image? View an alternate.

Working...

Post a comment

About nWire

  • nwire logo
    nWire is an Eclipse™ Plug-in which expedites Java development by assisting the developer in navigating through the code and better understanding it.

    Learn more at nwiresoftware.com
My Photo

My Other Accounts

Delicious Digg Facebook Flickr FriendFeed Google Talk Last.fm LinkedIn Reddit Skype StumbleUpon Technorati Yahoo!

AddThis Social Bookmark Button
Blog powered by TypePad
Member since 05/2007