I’d like to take you back 15 years to when I was just starting out on my career in IT. Windows 95 has just been released, the internet was beginning to escape from academia and the buzz was all about client-server. The small consulting company that I worked for was very excited about getting into VB and SQL Server, but when I asked about the internet it was dismissed as a ‘fad’.
In those days Microsoft generated huge excitement and fear in the IT industry and our little company did very well from exploiting that. I remember many conversations with more senior members of the profession who told me that client-server systems could never replace their beloved AS400s, and how VB was a toy compared to Cobol. Of course they were wrong. Microsoft was rapidly taking over business computing, and before long Windows and Office became ubiquitous.
Microsoft’s business model stemmed from Bill Gates’ thought experiment: ‘what if hardware were free?’ If hardware was free, or at least a commodity, the owner of the operating system would own the IT market. Microsoft’s entire business has been based on this premise. It made Gates the world’s richest man and Microsoft the richest company. But sitting on a monopoly can make you complacent. What if someone comes along and asks the question, ‘what if software were free?’ If software were free, Microsoft’s whole foundation would be in question. The problem for Microsoft is that a lot of people have been asking that question.
Microsoft is being relentlessly squeezed from two directions.
The cloud is starting to provide a viable alternative for small and medium sized organisations. Instead of a rack of Windows 2008 servers, why not simply sign up for Google Apps for Domains? No more installing, managing, backing up of file servers and exchange, no more hunting around for users who have lost their word documents. Of course the functionality is nowhere near what Microsoft server products plus Office can provide, but lots of people don’t need all those bells and whistles. Microsoft began in the server space by replacing Oracle and Sun and IBM in smaller organisations and now Google is doing the same thing.
At the other extreme, Linux is the OS of choice if you are huge. It simply doesn’t make sense to run a server farm of Windows machines - from both a technical and a financial point of view. If all the biggest players are running Linux, it’s an easy sell for a typical medium sized company’s CTO to suggest that they should do the same. Microsoft still pretty much owns the small and medium sized server space, but it’s really now because of inertia rather than because they are a better choice.
Far more scary for Microsoft is the mobile market. This is where the action is in 2010. Two titans, Apple and Google, are locked in a struggle. Google will win, for the same reason that Microsoft won against Apple the first time around: Apple is still a hardware company. In this war Microsoft is a bystander, even though Phone 7 is undoubtedly a good product it is still a niche one. Microsoft cannot compete because their business model of selling operating system licences ties their hands before they can even get off the start line.
For now Android runs on Mobile phones, but soon there will be tablets and TV top-set boxes. Windows will be relentlessly pushed out of the consumer market. For many businesses, the temptation will be to move from Office to Google Apps and give each desk an appliance. The cost savings in both licences and support will be huge. Microsoft’s hold over both the office desktop and applications will be under threat.
The Microsoft of 2010 is looking like the IBM of the 90’s, an incumbent giant without an answer for the changing landscape around it. In the same way, I would not expect Microsoft to disappear (although that is a possibility), but they will gradually become irrelevant to the future of IT.
So what does this mean for .NET developers like you and me? Well, we could just keep doing the same old thing, but the opportunities for work will slowly wither away, much like the Cobol guys found in the 90’s. So what should we do? I personally think Objective C and iPhone development is a dead end. Google will win the mobile OS war. I’m just waiting for Nokia to give up on MeGo, accept the inevitable, and start making Android phones. HTC is looking like becoming the Dell of the 2010s.
So Android will be the new Windows. Any Linux skills will be a good thing. Java skills will help too. Server side code will run on Linux, so once again: Linux skills are good. Being able to interface with Google Apps will be an excellent skill to have, so being comfortable with the Google APIs will pay dividends. Everyone should try to build a non-trivial Android app.
What about programming languages? Here the future is less clear. I would love it if Mono took off and allowed me to take my C# and .NET skills to Linux based OSs, but I really don’t think it’s likely. The CLR is now almost ten years old and is beginning to show its age. There’s not really a compelling reason to adopt it over the JVM. I think there has to be progress in programming languages. I’m learning Haskell simply because it seems to be where all the good ideas in language development are coming from (just look at C# 3.0), but the dynamic trio of Javascript, Ruby and Python are also very exciting these days. On the browser, standards always win in the end, and the future belongs to HTML5, not to Flash, and even less to Silverlight.
One thing is pretty certain, I won’t be making any attempt to learn the plethora of Microsoft server solutions; Sharepoint, Dynamics etc. They are the final indication that MS really is becoming IBM. There’s plenty of money to be made as a reseller doing customisations for these products, but it’s no place for a geek.
So thanks Microsoft, it’s been great, but now it’s time to move on.