Wednesday, 12 February 2014

WPF and Mystic Meg or Playing Futurologist

Time for an unusual post. Most of what gets put down here is technical "how-to's". It's usually prompted by something I've been working on and serves, as much as anything else, as an aide-memoire. Not this time.

I’ve been watching the changes in the world of development of the last couple of years and I’ve come to a controversial conclusion... So I wanted to write about it. Hopefully I'll be able to return to this in 5 years and say "wow - I'm so insightful - almost visionary really". Or not. Either way, let's put it out there - it's sink or swim time. Ready for it? Here’s my bet: WPF will die.

Sounds dramatic right? OK - I've overstated my case just to get you to read on (I should work for the tabloids). Let me flesh this out a little. First of all, I think WPF is a fine technology - great apps are built with it. My personal favourite being the fantastic GitHub for Windows. And actually I don't think WPF will die at all. What I think will happen is that it will become a more niche way to build applications.

More broadly, I think that native client apps (be they Windows, Mac, iOS, Android etc) will eventually come to be replaced by rich web apps / SPAs of the Angular / Ember / Durandal ilk. I realise that at the moment that seems like a ludicrous statement – native apps are heavily used throughout enterprises worldwide and certainly will continue to be used and actively developed for at least the next 5 years.

But as the web comes to perform like native, as JavaScript become a compile target, as HTML 5 provides rich UI and as interactive communication becomes possible I reckon this is a fairly probable scenario. Particularly when you consider the API work Firefox is doing around Firefox OS. I could be wrong, but my expectation is that the day will come when people will have apps that they can access from anywhere, on any platform and those apps can be deployed without infrastructure having to push out new versions to each client machine.

The web undeniably has issues but I think it will likely win out. And the cost case for a single client app is pretty compelling to anyone funding a system.

As a dev I’m always working with an ever-evolving grab bag of technology whether it be front end, middle tier, database or services. In fact that will likely always be the case (change being the only constant in the world of software). But on the basis of my expectations I’m planning to always keep at least a toe in the world of web apps as a form of “career future-proofing”.

Going less broad again when I look at the Microsoft stack, I think XAML will live on for some time. Obviously Silverlight is no longer being actively developed but MS are using it in Windows 8 (Phone and WinJS) as well as WPF. But I do kind of wonder if it will become like a bit like VB.Net, still around, still in use, but slowly dropping off in terms of popularity. Particularly as you can write WinJS apps in HTML / CSS / JavaScript.

As I say, I could very much be wrong about all of this. I don’t know what your view of the future of the development landscape is? You may have a different insight? I’d be intrigued to know!