September saw some pretty important announcements for Windows developers and specifically for .NET developers. With the
BUILD conference behind us we can debate who is going to survive the fallout.
First of all I would like to point out that I did not approve and in fact I am quite disappointed by Microsoft's decision to troll the .NET community by mentioning HTML and JavaScript in the first Windows 8 video and then sinking in total silence for six months. I believe this caused damage to the .NET community and provided zero value to Microsoft. It seems like the Windows marketing department decided that it would be a nice joke with the developers and everyone would laugh at the end. Of course the marketing people in the Windows division are known all over the world as complete idiots. In fact this seems to be true for all marketing people at Microsoft with the exception of the Xbox guys.
However the idiotism of some dumbass is not excuse for certain vocal parts of the .NET community to act even more retarded. BUILD is over and the cards are on the table but there are people who still cry about the death of particular parts of .NET Framework or even of the .NET Framework itself.
In the forefront of the whiners' army is the Silverlight squadron. These guys blame Microsoft for… I am not sure exactly what for. Yes Microsoft failed in their attempt to replace the web itself with Silverlight but it is not like they did not try hard. Do you think they are happy about the iPhone coming around and disturbing the whole IT picture? How are they supposed to put Silverlight on it? If a developer does not care about the mobile form factor then he can continue to (and in fact should) use Silverlight. Silverlight still runs on the desktop systems and will not go away soon. If a developer only cares about desktop systems then his investment is just fine. If someone cared about mobile and picked Silverlight he was dumb to begin with. What made him think there would be Silverlight on the iPhone?
Of course I know that Silverlight has been
pronounced dead this month… again. It looks like if we do not announce the death of Silverlight two months in a row the universe will implode or something… and we will be damned if we let petty facts like the release of a new version of the dead technology this very month stop us from accomplishing our mission!
It is not true that everything needs to be accessed from mobile devices. There are a lot of applications that only make sense on the desktop. The classic example is line of business applications with rich interfaces and this is what Microsoft points out as a use case for Silverlight but there are more examples. What about games that are controlled with a mouse? It is actually pretty simple to decide if one should use Silverlight. Just answer the simple question – Does the application make sense outside the desktop environment? If the answer is "yes" it should be a web application if the answer is "no" it should be a Silverlight application.
My favorite quote from this
blog post which summarizes some of the complaints is this part:
"Has Microsoft really protected its core .NET programmers' livelihoods with the new version or have they undercut their developers to favor cheap HTML5/JavaScript outsourcing of code and design?"
So someone out there chose .NET as a career path not because he thought it was superior but because he thought Microsoft would "protect" his investment? What is next, requiring to be paid by Microsoft for the sole fact that we can develop in .NET? Now I would agree if Microsoft did abandon .NET and Windows 8 apps could only be developed using Web technologies but this is far from reality. It seems like some people are scared shitless by the simple fact that there are other technologies supported. I chose to invest in .NET because I believe it is the best technology out there and it allows for the best balance of fast development and quality results. These guys obviously think .NET sucks but were convinced that Microsoft would never support anything else. If .NET is worse than competing technologies it should go away – good riddance! If .NET is better than the competition then beat them on the market!
Iced Earth's Jon Schaffer has a message for .NET developers who are afraid to compete on the market and expect Microsoft to 'protect' their investment. What is more right now .NET is the best platform to develop on Microsoft's platform. First of all Silverlight is the only development tool available for Windows Phone 7 but what is more important is that it is the best way to develop for Windows 8. They may not call it Silverlight but how do you call something that has XAML in the front and C# in the back? I call it Silverlight. They even shoved it down the C++ devs' throats. Who do you think is in better position to develop for Windows 8?
There is also the web tech. It sucks. Believe me I have been doing it for a living for five years. Most web developers are also complete noobs when it comes to developing software that has no server to back it up. The idea of an OS API is foreign to them. Most of them even think Windows 8 apps will be easily portable to other devices! If these guys beat you on the market of Windows apps you do not deserve to work as a developer.
What about WinRT? It is a .NET API more than anything. How do I know that? First of all it is class based and uses PascalCase which are not popular in JavaScript. It may be developed in C++ but it is .NET style. I know that because the C++ guys really hate vowels and avoid using them if they can. Remember LPCSTR and strcmp? Almost every function in C and C++ is missing a vowel in its name. By contrast WinRT uses the full set of vowels available in the alphabet.
Finally, Anders (Hallowed be His name) has given us, the .NET developers, one of the most powerful tools for competing with other technologies in the Windows 8 world and beyond – C# 5.0's async. A great deal of important WinRT API methods is only available as asynchronous methods. The async support in C# is light years ahead of what JavaScript and C++ has to offer in this space. I pity the guys who develop asynchronous services in Node.js because they do not have async support in the language (BTW there is an extension of Node.js called
Tame.js that has similar async support).
This is my final message to fellow .NET developers: Man up or get out!