Sunday, June 27, 2010

Is Microsoft the IBM of the 2010’s?

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.


Paul Lockwood said...

Good post, that's the best blog entry I have read in quite a while Mike

Totally agree that Android devices will be displacing Windows in the residential market before too long. Give it about five years and pad type android devices/ TVs/ etc will be the main way most people access the internet at home

As for what follows .Net? I've been in IT a little long than you and moved technology from Cobol -> Client/Server -> Java based web sites -> .Net based Web Sites. The best advice I have is to wait until a clear winner emerges rather than stress out trying to become an expert in many cool shiny new things. That's what I did ten years ago; I played with all kinds of things, but when after building a few simple apps with .Net's Alpha/Beta releases it was obvious that was the future. My lame 2000 era web page follows :

The days I follow blogs about other technologies and attend community events for Java and Google. There seems to be a higher bar for entry with the leaders of those communities which gives me real hope

Fragmentation is incredible these days, things spike as hot for a few months/ maybe years then fade fast. I put a lot of effort into learning ATG Dynamo making a CEO level income for a while only to see it fall off a cliff withing two years. Before learning anything search Job boards to see if anyone is actually hiring for it. Silverlight is finally making a dent and is my current interest, though I've been lightly following it since Avalon was announced in MSDN magazine circa 2004. Pure http based skills are commodity now

infocyde said...

You have just stated eloquently what has been bothering me now for a couple years. Almost all the big name startups are using non-Microsoft technology. Almost all new web developers now are using LAMP on Macs, or RoR or Python. Microsoft has lost the imagination of the youth, and that will be a death sentence as gen x developers age. I think your case for Microsoft being the IBM of the 90'ies is dead on, though I believe its market share loss will be slower.

David Arno said...

Spot on Mike. I reckon you are 100% right on every point.

It's a weird thing about big companies. I'm sure many in Microsoft can see this coming too, but the company seems incapable of dealing with it.

Mike Hadlow said...

Paul, Thanks! I agree, there's no clear path at the moment. Back around 2000 I was ready to jump to Java, but then .NET appeared, so I spent another 10 years with MS. Who knows maybe they are just about to release something equally as game changing... but somehow I doubt it.

I think the things will come into focus over the next few years. The platform is clear though, I don't think there's much doubt that the OS is now a commodity and its name is Linux.

Mike Hadlow said...

Infocyde, yes, that mindshare is crucial. I think MS is widely perceived as a good way to make a living, but not particularly cool. Once their market share starts to slip, even the 'making a living' part of the equation won't add up and developers will start to look elsewhere.

Jan said...

It is not possible to look into the future. While one might argue if the outcome is either a or b, it might just as well be f(a*b) or c.

There is a broad array of possibilities for MS to react to the potential loss of their crown jewels. The outcome of this might change MS and the whole IT world to an extent nobody can imagine.

It is good to use your antennas to get a feel for what is going on (as it always is), but to predict the way you do, one would have to be clairvoyant.

And have a look at OCaml. Coming from f# you'd have a much better mindset migration path.

Andrew Hancox said...

Excellent post,
I'd disagree with your point about Apple being a hardware company, they aim to provide a complete ecosystem that you buy into that services your every need.
I've been starting to branch out into LAMP for personal projects and it often feels like a breath of fresh air.
I wouldn't hold you breath for another interview on channel 9 after that!

Thorium said...

Nice post Mike!

Microsoft did try to make TV set-top-boxes long time ago... Also it did try mp3-market. Those didn't work. Software development did.

I think that Microsoft .NET (and Microsoft Research) has recently been very innovative with web services, Linq, closures, F#, etc. The main business of .NET has been B2B, not the consumers.

I agree that Google has been even more innovative than Microsoft. But, it will suffer from the too-old-Java-environment. Maybe the DVM is better than JVM, I don't know. Currently JVM is heavily optimized for Java, e.g. not supporting tail-recursion for functional languages.

Javascript-client role will grow, that's quite obvious. Silverlight, hmm...let's see... but the service interface to servers, do you really have options for WCF?

@TheSandyWalsh said...

Awesome article. Very insightful. I agree whole-heartedly with all of your points.

Anonymous said...

Interesting perspective but not sure it is anything more than just that ' opinion based on perspective' The validity of the post really needs to be supported on more emperical data.

Anonymous said...

Last I checked (about two quarters ago) IBM's revenues exceeded both Apple and Microsoft combined. IBM basicly dropped the low margin PC and consumer market for the high profits of large servers and corporate services. Not a bad fate if you ask me.

IBM is boring but it makes money. Microsoft could compete in that space but they want to be sexy like Google or Apple.

BTW, having spent lots of time with Google docs they are at least a decade away from being a decent Office replacement.

James Curran said...

I'm not sure I'm buying it.

The keystone is your argument is the question "What if software were free?". That leads to the question (which you leave unanswered) "if so, where do you make your money?"

Apple (who's making more money on mobile phones then MS and Google combined), answered that with "Charge extra for flashy hardware". Hardware, it seems, is NOT a commodity, and people will pay extra for added-value.

Further, your reason that Google will beat Microsoft is a non-sequenteur: "because Apple is a hardware company". Are you saying that Microsoft is a hardware company; or the Google is not a software company?

You state "It simply doesn’t make sense to run a server farm of Windows machines - from both a technical and a financial point of view." But offer no reason at all why MS fails from a "technical" point of view. You also offer no reason why it fails from a financial POV, but one can assume that it's some variant of "because LINUX is free". But that's nonsense. The initial install cost is a trivial expense to large corps. The real cost is support & maintenance -- having a skilled technician standing-by to keep thing running. And having a corporation standing behind a product that you can call if things go really badly is a top concern for large companies. You can get that for LINUX from Sun or IBM, but they'll charge you more then MS.

Linux/LAMP is really the choice of small companies -- places where the developer is also the systems operator (and also the CEO). Those are the places where OS install costs are a significant part of the budget. Occasionally, those places suddenly hits it big -- i.e., FaceBook -- But that doesn't mean their choice is the choice of all big companies.

Further, it seem the Microsoft & .Net is where all the real innovation is development is. The CLR has evolved more in 10 years than the JVM has in 15, and new features releases are accelerating.

And except for a little flirtation with Ruby and Python, most LAMP websites are based on PHP, which is pretty much just a scaled down version of ClassicASP.

Hugo Rodger-Brown said...

First off, great post Mike. However, I'm not sure I'd write MSFT off just yet.

You may well be right about the O/S, but if it becomes a commodity, I'm not sure it becomes instance-based Linux by default.

The rate of change in cloud-based solutions since the launch of Amazon's EC2 has been staggering, and there is now a clear distinction between virtualised, hosted "Infrastructure" services, like EC2, and the much-more subtle "Platform-as-a-Service" offerings like Microsoft's Azure and Google's App Engine.

Azure is still missing a few key elements, but its pricing model is very aggressive (compare SQL Azure to a SQL Enterprise licence), and it will undoubtedly get there soon-enough. Contacts inside MSFT tell me that everyone has been tasked with cloud-enabling their respective areas, and I wouldn't bet against them. I'd keep those C# skills up-to-date if I were you.

Anonymous said...

I don't know. I've just started seriously playing with Linq2SQL + MVC2 and the first thing I thought was: this is the future.

I think people are putting too much stock in mobile development in general. It will remain a fractured environment(much like desktop development) and companies will realize it makes more sense to leverage existing skill sets/technologies to develop mobile-optimized versions of their websites that can run in any browser on any mobile device.

In the end, I don't think .NET or Microsoft are going anywhere. They have been slow to respond to emerging trends but they are responding and I think they are positioned to more readily respond to new trends (or even return to being a trendmaker) in the future.

Mike Hadlow said...

Jan, of course my rants always come with an unwritten disclaimer and are really just me blowing off steam :) It's just my view on where things are going and it'll be fun in a few years time to see how totally wrong I was. Of course I don't have a crystal ball, but it's always more fun to be provocative than to wrap everything with a caveat.

Hi Andrew, Yes Apple are Apple, they are a great foil for the rest of the industry and fantastic at innovating and defining new product areas. Steve Jobs is a genius, there's no doubt about that, but for some reason they never try to 'own' an industry in the same way that IBM did, Microsoft does and Google is going to. Why that is I'm not sure, but surely it's got something to do with the Jobsian control freakery and Apple's desire to lock down the whole experience.

Thorium, Java is the most disapointing thing about Android. Hopefully Google will be open enough to allow other platforms to co-exist over time unlike other smartphone makers I could mention ;)

Anonymous, IBM may make plenty of money, but when was the last time they did anything exciting? Maybe I'm just not paying attention.

James, Great comment. I totally accept your point about PHP, it's hardly a shining example for the open source crowd :) And yes, I think the developments around the CLR have been very exciting, especially with the input from the functional programming world. The thing that got me excited about learning Haskell was hearing Eric Meijer speaking about it on Channel 9. As for Apple, don't forget that they ruled the early home computer market with the Apple II, and the original Mac was revolutionary. But in the end 90% of the world's computers ran Windows, not because it was better, but because Apple couldn't compete with commodity hardware. Cheap and easy is also a big reason why Microsoft's share of business server computing will erode, it's much cheaper and easier to get a cloud provider to do your standard, email, intranet, office apps stuff than doing it yourself. Maybe that cloud will be a Microsoft cloud, but it will still be at the expense of Windows server licences. I agree that there's still much inertia in medium sized business computing, and I imagine that's where Microsoft will hang on the longest, but I think it is just inertia, and as another commenter pointed out, if all the up and coming young geeks are learning RoR on Linux there will less vested interest in terms of training and familiarity to hang on to a Windows platform long term.

Hugo, excellent points. I've updated the post after mulling them over. The whole cloud space is very exciting and maybe that's the future for Microsoft. I'll be very pleased if I can leverage my C# skills there :)

Anonymous said...

Microsoft seems fairly serious about the cloud and about letting you leverage your existing skills there; does Azure not appeal?

On the set top box front, have you come across BT Vision or AT&T Uverse - they're both a Microsoft system, just not a PC. Don't mistake Microsoft's mainstream for their only play...

Eduardo said...

What about WebOS? HP is gonna push it very hard, and you didnt mention it

Jag Reehal said...

Hi Mike,

Great post.

There is definitely a momentum in .Net developers looking to dabble with non-Microsoft technologies at the moment... and not just from the hard core Alt.Netters.

Apart from the excellent ASP.NET MVC framework, Microsoft has made some baffling decisions (MS Test framework, Entity Framework) and they have to realize this has led to poor products which has upset people.

But is there really anything .Net developers (who use .Net in their day-to-day jobs) can do apart from betting on the Azure and Silverlight?

While the jump from a .Net language to Ruby and Python is big, for .Net developers who have only used Microsoft Windows the jump to another OS is even more daunting.

So apart from persuading your boss to experiment on a small project the only option you have is to take a pay-cut and join a company at a junior level.

Unknown said...

Thanks Mike. It is a huge bet for a software author like AXLR8. Last time I bet my business on MS in teh early 90's.
When Sandy Walsh recommended this article, I had no idea it would suddenly leave so many parts of the big jigsaw puzzle in place for me. My reluctance to move to for our product development for several years, the Android HTC in my hand, use of Google apps increasing everywhere here. It is a huge step but I WILL organise Monday night's 5-a-side on Google Calendar, now! Betting the business? I will resolve to sit on the fence just a bit longer - but I believe you (Mike) are 100% right and that, as Infocyde comments, MS has lost the imagination of youth.

Anonymous said...

Tony said...

Wow, I must have just entered IT one year before you and I have an eerily similar thing going on in my life. I've been saying EXACTLY the same things about Microsoft and about where my career focus is heading. After getting VERY good at JavaScript, HTML and CSS and flirting with Ruby and Python over the last 3 years, I just can't see me spending my time learning the new .NET "features." I have been looking to Java and Linux/Unix (via my iMac) and I am starting to focus on things other than MSFT technogies. I have been a stalwart supporter over the years, as this technology has fed my family and paid for my house. Recently I realized it is ME that does this and not a specific techology :-)

This podcast from "Herding Code" from former Microsofties now working in Ruby and Rails really rings true and is good supplimental/supporting material to your post. Thanks again!

Jason Lowen said...

I am over London now. I have no interest in being a Duke of that place.

David Tate said...

Dear All:

Let's say that you went to Office Depot and saw a software development tool for sale that was titled, "The Ultimate, Unified Web Development Tool".

Inside the box was: Notepad.exe, books on HTML, Javascript, CSS, AJAX, JQuery, Flash, QueryStrings, Form Posts, Cookies and Redirects.

The obvious question would, no doubt, come to mind: "Does all this stuff constitute a unified programming model?".

I submit for your consideration that all of these technologies constitute a big pile of junk. Microsoft Silverlight is, at the very least, an attempt to unify web application development into something resembling a programming model.

For that, perhaps Microsoft should warrant some scant credit for trying to replacing a collection of technologies that were created by different people, at different places, at different times, who had know knowledge of each other's efforts.

Web apps are failing, worldwide, with each passing day, as we developers flail about to retrofit the latest "widget-of-the-week" into thousands of lines of code that about 26 programmers have stuck their paws in, over the last 13 years.

It's amazing to me that the internet works at all, in the current miserable state that our industry finds itself in.

I can't wait to see all of this 1997 crap go away. Let's give initiatives like Silverlight a chance.

Oh, I gotta go back to my code. There's so much AJAX in my web app that my users keep losing focus in the Form's INPUT control every fifteen seconds.

Mike Hadlow said...

Hi David,

Many thanks, that's a rant worthy of this blog sir :)

I entirely agree that the rag-tag bundle of disconnected technologies that goes by the tag line of HTML5 is not what you choose if you were starting from scratch. I would also agree that Silverlight is quite nice.


There is zero chance of Silverlight becoming the web's ubiquitous programming platform. Even the windows team inside Microsoft is choosing HTML5 above Silverlight/WPF to build Windows8 UIs. You would have to really enjoy failure (or be taking MS $$$) to build a consumer website with Silverlight. It will never have the market penetration of Flash, which in turn will never have the market penetration of HTML.

Meanwhile, rather than going away, Javascript is spreading to the server. You don't need a crystal ball to see what everyone's excited about in the wide world outside of Microsoft, and it's not Silverlight that's for sure.

Anonymous said...

I've stumbled on your blog in general and bookmarked it. This article is of particular interest as it mirrored my thoughts from 2010. Great reading. However, it would seem like myself(?!), you have underestimated Microsoft's ability to survive despite their consistent lack of innovation and always, always, being late to the party. Saying that, I do think your crystal ball would have been closer to the mark if Balmer had stayed at the wheel..

Azure & O365 has become pretty much the No.1 enterprise cloud. They've taken what they do best (Office/Windows) and stuck them in the cloud. Hardly innovation, but it's making them serious cash and is developing serious traction. A close family member works for MS, and under new leadership the cloud and associated access points (mobile device software) has literally become the air they breathe. Credit where credit is due, they've successfully applied what they do well to the new context of cloud computing.

It's slightly irritating! Look at how much time (and resource) they've had to get windows phone right, and they still haven't pulled it off. It's improved, but that's just a progression from complete market failure to breakeven. As you allude too, they should have gone under/become irrelevant, and indeed they would have if they hadn't thrown good ol' Office up into the clouds...:-)