If you believe the opinion of the growing number of Web Application developers in the field the answer to the question in the title will be a resounding Yes, but lets examine this a little closer. In starting my entry, I have to restate the fact that yes, by trade and experience I am a desktop developer. From Visual Basic 3 through 6 and into C# .NET and VB .NET I have done most of my best work on typical desktop applications and associated backends. Until the .NET swept onto the pages of the job recruitment pages, I was adament that Web development was something that "graphics people" did and that the "real" IT people supported the underlying web site infrastructure and occascionally put together some backend "stuff" when the sites got complicated and wanted fancy features like "shopping baskets".
Being self defined as open minded, I even took an 8week course on ASP.NET development in the early throws of the .NET platform. Even after several long nights of putting together "Hello World" web pages, I walked away understanding the platform; seeing what I thought was its potential; but fundamentally thinking that it would just mean that the "graphics guys" would simply need to skill up towards us programmers rather than the other way round. I liked it but couldn’t see my desktop bread and butter being affected.
Several years on, a scan of the recruitment pages would appear to show a different story. The need for Web Application developers vs desktop developers would certianly indicate that I was wrong and that desktop applications/developers are bound for the scrapheap. Everyone wants to be "In the Cloud" and business lust for the promise of a lighter TCO (Total Cost of Ownership) by way of a desktop that does not need constant re-application of desktop patches. I mean really Why upgrade 1000 desktops when you can upgrade a single Web Server ? I admit that desktop deployment is never an easy task even when rolling out in an environment with a well structured and managed SOA. The fact that those 5 PC’s out of 1000 don’t take the patch correctly is what keeps IT departments and IT Service companies in business right ?
So desktop is expensive and paiful to deploy therefore we want to replace it……right ? Before taking that line, lets fairly simplisticly consider three common deployment models used in businsess today (small and large) and review at their pros and cons:
1. The FAT desktop – In this model the user has a desktop PC loaded with all sorts applications such as an Office Suite and internally developed applications to do everything from CRM to accounting for the business.
Pros:-
- Everyone loves their own desktop with "their" stuff setup the way they want it. Even in a tight corporate environment there is something to be said for the bond we gain with out PC’s through the good (in the first two days its built) and the ugly when we call it all sorts of names when it takes a week to simply logon in the morning
- Simpler configuration. Fix the problem with a single PC without worrying about the downstream effect to other PCs.
Cons:-
- Initial setup costs…..the machine
- Ongoing costs….anti virus, hardware upgrades as version 2012 of your favourite application doubles RAM requirements
- Users "breaking" them both with a hammer (from point 1 above) and through whatever it is they do to break them (as a PC Support person often mumbles…….the how the heck do you do that ?)
2. The Terminal Served Environment – In this model, the business has a X servers for N users (yes I know the joys of on tap computing, but lets face it there are user count limits and redundancy isses that mean that as the business grows X will too). Lets work on a small business with 1 application server with 20users for the sake of demonstration.
Pros:-
- Fewer number of places to deploy and therefore less chance of deployment failures and within that the ability to stage deployments for differing user groups
- Cheaper TCO if combined with a thin client deployment
- Excellent solution for remote workers
- Easier deployment of an SOA
Cons:-
- Initial setup costs can be high
- Rather than 5 PCS in 1000 failing on an upgrade, you are now faced with 1000 simultaneous.
- Cost of Configuration Management process increases as a result of point 2
3. The Web, The Cloud etc. – This is somewhat theoretical in my mind still never having seen a business run completely in this manner (bar front end processing), however the idea is simple. Build a web application/site and have everyone login securely and do all the "stuff" online.
Pros:-
- Fewer number of places to deploy and therefore less chance of deployment failures and within that the ability to stage deployments for differing user groups
- Excellent solution for remote workers
Cons:-
- Reliance on the Network layer ie. stability in the ADSL etc underlying
- Scale is not as simple as one would hope and expect
- Generally slower than desktop applications
OK, so I still haven’t gotten to the point as to whether the desktop is dead, as each model provides its share of benefits and problems. It is only the business/individual that can really decide what is best for them so we drop back to the old "It depends on the client (being the person or the business)" which leads into my next point…
What about the users ? (something we are always reminded of as non-IT people assume IT people think of nothing except the client/users). Well even though we (yes I am one too) are loving the fact that we can do so many things online, we also tend to rely for most of our critical "thinking work" not yet being "webified". Really, how many people are more comfortable preparing a client brief in a web based word processor as opposed to firing up MS Word, and when we present that business case, we’re sure to be doing it using a desktop based Powerpoint type application. The fact is that desktop applications at least for now provide a richer set of features than their web based cousins.
The reality is that most enterprises have found that a mixture of applications is the best solution. Lets take for example a service business that prepares resumes for clients.
1. The client logs on to the web site and inputs their information and pays for the server (Web Application)
2. The author writes the resume in Micrsoft Word (Desktop)
3. The author saves the resume and updates the central database with the new resume to notify the client that the resume is ready for collection (Desktop?/Web?)
4. The client receives notification that their resume is ready for collection (Email/Twitter/SMS) and logs on to complete the service by collecting the resume (Web)
So, out of these 4 steps the middle 2 which are the actual service delivery was done via a desktop application while the web facilited. Remove the web aspects and this business would survive albeit hobbled.
In delivering a solution for this business if it were to be built to tomorrow, step 3 would require a decision being made as to whether the internal management service is desktop or web. This decision would be base on the initial platform selection and could be justified either way (including the expereince of the development staff at the time).
I believe that the best solutions are built on a combination of solution delivery based on the particular business area of the solution. As a solution that enages both technologies in the same solution, Microsoft has done a great job in its delivery of desktop tools to support its online services (such as Live Writer in which this is being written), allowing us to take the best of both worlds in have a great tool to use with full data protection. OfficeLive also is a great demonstration of this capability as it allows me to seamlessly access the cloud from my favourite desktop applications. (Over the coming weeks, I plan to write of my experience with moving into the world of cloud computing from the perspective of both a user and a business owner in the hope of finding this write mix and testing my theory using technologies such as these)
So to finally conclude the desktop application/developer is not destined for the technology scrapheap as some would suggest. Happlily, the web is now providing a great way of providing functionality that both benefits those using as well as those deploying technology. SAAS as business is now an accessible and potentially profitable, and for the users a potentially great solution for a number of factors. However, the core "thinking" applications that we use in out daily jobs remain on our desktop which is where it is destined to remain for some time. From this conclusion I offering the following:
- For the client about to invest in a solution, ensure that you question any solution that is completely based on either Desktop or Web architecture
- For the developer (desktop or web), at least try to understand each others world, if not at leasr be profficient in working in it. Take the time to watch each others spaces and design evolution. Although everyone has watched as web site have gotten "prettier", most people have neglected to notice that desktop applications even at a shareware level now provide an ease of use and visual explosion like never before
- Truly delivering to a client requirements should always remain our goal, not a competition to see who outlasts who (desktop or web developer). Their is scope for both camps and with a bit of clever and appropriate design we all remain doing what we love and deliver the solution a client really needs and delivers to their requirements.