I have been pondering today on user interface platforms in the modern world. But first, let’s take a look at history of UI. If you are a Microsoft developer, you had been accustomed to Microsoft dominance in the world of UI platforms since maybe mid nineties. Visual Basic 6 was truly the platform for business applications in the late nineties. Majority of people you talked to then who were on Microsoft bandwagon wrote apps in VB 6, including the company I worked for then. Granted, there were other platforms, like Java, FoxPro and others, but I believe everyone would agree that none of them came close to popularity of VB 6. Then .NET came to the scene. Again, Microsoft provided the most productive easy to use UI platform for Windows – Windows Forms. Many companies also used Web Forms as well. It was almost as productive as WinForms and more portable. Not that portability was a bid deal in early 2000s. Nonetheless Microsoft dominated the world of the business apps. Then WPF came and soon thereafter Silverlight. Microsoft clearly positioned Silverlight as the UI platform of the future, promoting it as the UI framework for business apps. Portability was more important in 2006-2007 time frame, and the fact that Silverlight could run on Mac was a bid deal all of a sudden. Then Apple decided that they will never let Silverlight run on iOS, both iPhone and later iPad. With increasing popularity of iOS Microsoft decided to accept this fact and declared that HTML is its platform for cross operating systems applications. On the other hand, is HTML a UI platform that Microsoft owns? Not really. They provide two main frameworks for building HTML apps – WebForms (still) and ASP.NET MVC. So, now we came back to the title of my post.
It is apparent to me that Microsoft dominance in providing UI platform for business applications is now over. There are so many platforms for building HTML app, I lost count a long time ago. You can name Ruby, PHP, Python, ASP.NET MVC, WebForms just to begin with. Then you have to add all JavaScript frameworks that do not really care about Ruby of PHP or ASP.NET, such as Angular, Backbone, Knockout, etc. List goes on and on, and keeps growing what seems like daily.
So, if one assumes that UI platform is now in free-for-all state, where does Microsoft role lies? IMHO, Microsoft continues to do what it does best. It keeps providing excellent tools for developers. I , of course, am talking about Visual Studio. They also added Win RT, a UI platform for Windows 8 that directly competes with iOS. .NET is still an excellent framework for building back end services, using WCF or newer HTTP centric Web Api. So, if you are a Microsoft developer your future is still pretty bright.
Granted, there are still Windows based desktop apps being developed. If you need access to devices and hardware in general, you really do not have much of a choice. WPF is probably your best bet. However, it is important in this case to develop robust service layer that will enable you go HTML at some point without replacing all layers in your app. Why you ask? I think you can see that the rules that used to restrict browser access to hardware are being relaxed slowly. For example, you have access to camera on iPad through browser. Somewhat restricted access, but it is there. One could pontificate that in the future users will be able to opt in for browser to access more and more hardware. At that point HTML will be the platform to write business apps in, likely with very few exceptions. Very, very few.
In conclusion, if you are revolving in Microsoft centric world, like I am, you have to do one thing IMHO. You must be up to speed on web technology stack: HTML, CSS and JavaScript. You have to keep up with constant evolution of that world, including but not limited to, HTML 5, CSS 3. Of course, HTML 6 and ECMA script 6 are in the works already. TypeScript is gaining popularity, but probably not as fast as Microsoft would like. Some CSS frameworks, such as Twitter Bootstrap came about. Seemingly endless barrage of JavaScript frameworks can also be intimidating. Bottom line though, again IMHO, you have to know JS and HTML and at least basics of CSS. If you do, you have nothing to worry about in your professional future. Take it one day at a time and continue to learn.
Thanks.
I wish MSFT would invent a XAML+C# to HTML5+CSS3+JS (HCJ) engine, meaning I can develop multi-plat. apps in Silverlight style, where the client is pure HCJ-based making Ajax calls instead of a local .net installation/plug-in. I’m sure not all the features of Silverlight and visual can be covered with HCJ, but even though, if MSFT will put some effort in building this tool, this will obviously the hottest LOB trend, a new breakthrough for replacing the hated JS language with C#, and HC with XAML in a server-style app. like SL.