A lot of people are freaking out about the apparent decline of .NET client technologies such as WPF and Silverlight. I’m one of those people. How can one, in good conscience, advocate new development in WPF or Silverlight (or Windows Forms)?
Well I can advocate it, I do advocate it, and I’m sleeping well at night.
A recent comment to one of my post on WinRT provoked an outsized reaction that has become this post. Here’s that comment:
Given that most people who are skilled in HTML5+JS write applications that are cross-browser and cross-OS every day; why would they ever consider writing for a single OS?
This fellow managed to capture in a few words the current mood and madness. My rant follows:
Who are you kidding?
First, hardly anyone is skilled in HTML 5. Period. That’s just wrong on the facts.
Get real about business application development
Let me be crystal clear about what I mean when I talk about a "business application" … because I want to confine my remarks to just this one kind of app. I take a completely different position on the appropriate development and delivery platform for other kinds of applications. This post is about business applications only.
[Warning: I will delete every comment that attempts to refute my argument by reference to any other kind of application. I will be especially dismissive of counter-claims which only make sense with regard to consumer facing, social networking, content broadcasting apps. You are simply not paying attention if you respond in that way and I will not waste my time or my reader(s) time with your inappropriate reply.]
Here is what I mean by a “business application”:
- It is a "sovereign app". That one app will dominate a user's attention for hours at a time, day after day.
- The user is paid to use the app. The person who pays him/her requires that user to get work done with the app as quickly and efficiently as possible.
- It is data-centric. The user consumes a large volume and variety of data. More importantly, the user routinely adds and updates that data in all of its variety.
- Therefore, the app must be highly responsive and immersive in order to maximize user productivity. It must present data and accept user input at top speed. Every moment spent waiting or wondering or searching around or flipping pages is wasted user time and wasted business owner money.
This is the context for answering your question. Why would I write for one OS?
If I'm writing a business app, in all likelihood there is only one OS that matters: Windows. Windows just happens to own 95% of my targeted user base (my estimate) ... today and for the near term.
[Note: The OS-on-a-PC figures are imperfect but the consensus is that Windows has no less than 88% share of all PCs which includes home PCs. Home PCs don’t matter for this analysis.]
Don't bother telling me about mobile. Don't bother giving me statistics on web traffic by OS (where Windows gets 86% of 2011 web traffic, btw). Don't tell me your vision for the future. This discussion is about business apps today and they run on PCs ... period.
If the time & cost of developing and maintaining business apps in HTML/JS were anywhere close to the marks of a .NET client platform I'd say "go HTML/JS".
But they aren't. Not close. Not soon to be close. And that fact is nowhere in dispute, not even among the most ardent HTML/JS fans.
So, as a business person, I've got a decision to make. The economics of today tell me "build it in .NET" because I can do it cheaply, effectively, with great quality using readily available resources, mature tools and experienced developers.
Of course, as a business man, I'll be concerned about the future and the long-term viability of my application. I’m perturbed that the app I am building today will be seen in 3 years as pinned to a legacy technology. That's a tough pill ... and it's why there is so much consternation. No one wants the “legacy” sign hanging around his neck.
But it’s not like everyone is going to forget how to write in .NET. Support won’t vanish. I will be able to find technology and people to keep the application alive in ten or fifteen years. I’ve got time to amortize my development costs and prepare for the inevitable transition(s) down the road.
The alternative - writing a business app in HTML/JS today – makes no economic sense. It doesn’t give me more reach because there are virtually no targeted users that I can’t reach today and for years to come. They are running Windows.
Let me net it out for you:
- A tiny % of today's developers are capable of writing an HTML/JS business application.
- There are almost no examples of such apps today and almost no place to go to learn how to make them.
- For most business apps there is only one OS that matter: Windows
- The economics of developing a business app that runs on Windows are vastly superior to the economics of developing a business app in HTML/JS.
All that can change. All that will change. But not this year, not next year, and maybe not in 2013 either.
If you have the luxury of screwing around, have fun in HTML/JS. I know that I have that luxury and I am, indeed, having fun.
If you must write a business app for delivery in the next 12 months, do it in a .NET client technology.
A discussion of this post has emerged on a G+ thread that you may find entertaining or even illuminating.