For the past decade, Ive focused on the MS stack – but the cheese is moving, and its time to look for more cheese!
Henceforth I will focus on C++, JavaScript & Algorithms.
So what happened? NET was well marketed & easy to learn – a massive amount of blogs & reading material ensured the development of communities and pools of skilled employees to draw upon. The language of choice for NET, C#, is a highly efficient programming language, as long as you don't go outside the box.
The situation for NET devs is dire:
It is foolish to bet your mortgage on the long term viability of any development platform. What goes up must come down, and the software industry is prone to rapid changes. Do you seriously expect todays skills to be relevant in 10 years?
- NET may be highly productive, but it is relatively idiot proof (compared to C++, JavaScript) - so attracted a fair few mediocre devs ! Stop patting yourself on the back because you know MVVM.
- the pit of success is in fact a pit - a career race to the bottom - NET was the apex predator, but the pool it swims in is drying up. C# devs are pumped out of courses at an alarming rate, while the non-viability of post-Win7 is making IT departments evaluate non-NET friendly platforms. This is supply & demand - there will be glut of cheap NET devs in the near future, all scrambling for the same cookie-cutter jobs. When the avalanche starts, it will accelerate rapidly.
- There has been nothing major new in the platform over the last 3 years (async is too small to count) - what have NET devs learnt in this time ? Compare this to the revolution of NET 3.0 (WPF / WCF / WF v1), NET 3.51 (LINQ, EF), & NET 4.0 (TPL).
The fact is, NET just didn't have a tangible ROI for MS (it wasn't a product), but it helped with portability lockin for application servers & dev stations – & that can only work if a critical mass of win OS deployments remains the status quo.
A Productive Framework … for Windows
Only 8% of .NET 4.5 classes can be used in Win8 non-desktop apps - http://blogs.msdn.com/b/dotnet/archive/2012/04/17/net-for-metro-style-apps.aspx
Once people figure out they don't need Windows, NET has no where to run on - lets look at the options:
- Non-MS platforms via MonoTouch / MonoDroid
• costs: https://store.xamarin.com/ $1000. In comparison: Eclipse is free. XCode is free.
• will always be a gen or 2 behind & not be able to use the many 3rd party libs designed for IOS / Android platforms
- WP8 tablet mode – low market penetration, & only 8% of NET can run here.
- Win8 (non legacy tablet mode) – supports C#, but not NET – need to port to WinRT, recompile for ARM, sideloading for LOB apps is horrendous – why bother for low market penetration ?
- Azure
Azure PAAS – low market penetration
Azure IAAS – not restricted to Win7 VMs, so makes no diff
- Win2012 Server – low market penetration
Conclusion: As MS is not selling Win7 anymore, and corporations wont upgrade to Win8 even for desktop mode ? NET is heading to legacy land.
Having said that, I've pretty much decided to put NET behind me.
A Graveyard of APIs
I consider the past decade a wasted effort of personal esoteric research in MS APIs, for the following reasons:
- DOA APIs: Oslo, Software Factories, MBF (project green), Whitehorse (ACD), WPF, Silverlight, Sketchflow, XNA, Spec#, Accelerator (.NET GPGPU),IronRuby, RIA Services, English Query, Solver Foundation, DryadLINQ, XSG (Farenheit), MLNet
- Quietly forgotten APIs: SQL Server Data mining + DMX, Robot Toolkit
- Coma of limited serious adoption: HPC, WF, F#, Azure, LightSwitch, EF, MDX, WinRT , DirectX (in Israel anyway), StreamInsight, HDInsight, Gadgeteer, NETArduino
- Terminal: ASP.NET, IIS, XAML - not needed anymore in a HTML5/JS world – we have NodeJS, AngularJS etc
- Solid but bloated: XAML, WCF (SOAP has been superseded by REST, then by ProtoBuff), SQL (superseded by NO-SQL), Visual Studio (API bloat), TFS (ALM bloat)
Whats left that's innovative in NET: LINQ, TPL, RX
Developers, Developers, Developers …
We are a long way from developers, developers, developers - MS is refocusing on becoming a devices [that the market has rejected] and services [which boils down to VM re-hosting]
Services
Azure is not the solution for a NET dev - problems:
- do people really need the cloud - we got on fine without it. Was it just to counter the Linux server threat ?
- there have been some serious downtimes
- PAAS is nicely productive, but failed because people don't want lockin
- demand is just for IAAS - so is MS just another VM rehosting provider ?
- would Orleans replace NET ?
Devices
Win8 fail points:
- Metro is ugly & will quickly become dated
- businesses will not move to it - it wont support their legacy info systems & side loading is non-viable
- stiff competition - Win8 faces a market lag behind cool, cheap & multiple players - insurmountable
Win8 == death of .NET - there are 2 grim scenarios:
- success scenario (unlikely) - WinRT replaces alot of NET, XAML is just a verbose token effort when you have JS, C# is just a WinRT component ‘scripting’ language.
- fail scenario - because no-one is buying its target platform, NET is not developed beyond v5.x
Win8 does have a dirty trick up its sleeve though - the UEFI monopoly on laptops
Ubuntu is idiot proof, but has zero marketing –>and thus zero market awareness.
computer stores & OEMs just do not stock desktops / laptops with Linux pre-loaded OS's
UEFI stops Wubi - the UEFI secureboot story is currently a bit of a trainwreck: http://www.linuxbsdos.com/2012/11/05/dual-boot-windows-8-and-ubuntu-12-10-on-uefi-hardware/
How MS could lose enterprise computing
At this point I don't see Google / Linux attacking MS on their home turf - enterprise computing.
The current IT department lock-in stems from skills & infrastructure built around MS Office & the NET framework.
EEE (Embrace, Extend, Extinguish) will be much harder this time
Now that JavaScript has won, there is no great need for IDE bells & whistles.
MS has recognized this, & is scrambling to find some kind of lockin inducing strategy for applications requiring visual studio support (and thus windows):
- Azure PAAS & AD security
- TypeScript (get C# into your JS implementation)
- EdgeJS (get C# into your NodeJS implementation
- HDInsight (get C# into your Hadoop implementation).
Viva LibreOffice
Office cannot be relied upon to always be a cash cow with demand that requires Windows.
Canonical has done an amazing job with Ubuntu & LibreOffice - It is a viable competing platform & is just a saner economic choice than Win8 + Office 13 licensing in the workplace.
However, Ubuntu has zero market mindshare - people are just unaware of its viability.
Likewise, Google is not exactly ratcheting up the marketing engine for ChromeBook & Google Docs in the enterprise.
If Canonical solves its UEFI issues, and both Canonical & Google start marketing their competitive platforms, then MS could be in serious trouble: Instead of guarding their enterprise hen-house (which they have deemed 'legacy'), MS is focusing on an uphill battle in the consumer market.
What could make me change my mind (but is improbable)
- MS kills Metro UX –and shoots the Patridge family for suggesting it!
- WebGL support in IE 11 + JS support for DX
- A NET migration story for LOB apps to run in Win9
- Finish open sourcing it - NET platform independence - the fact is Android has usurped windows everywhere but the office
- A whole new set of functionality & abstraction in NET vnext – surprise us, take us to another level.
Side note: 2 years as an MVP
2 years ago , I was a lot less jaded – I enjoyed the MS dev ecosystem, and scoffed at the term “year of Linux of the Desktop” – (funny how that turned out with Android running on a Linux kernel).
In 2011, I applied for an MVP award in the area of Technical Computing (which is my area of expertise). During this process, the Technical Computing group was dissolved and scattered to other groups - I found myself awarded an MVP … in System Center, which I knew nothing about !
In 2012 I applied again – this time I received an award in Technical Computing, but found myself in the Azure group !
I enjoyed the perks of being an MVP, but as I am heading in different directions, needless to say I wont be re-applying this year !
The fact is I have 3 degrees (BSc Comp Sci, Grad Dip Biotech, MSc Bioinformatics), and I don’t feel the need to promote a specific vendor under the auspices of an additional certificate of technical adeptness. So thanks MS, & good journeys on your road.
Well that’s my 2 cents
As the human torch says, flame on !