Maybe I’m just hanging around the wrong places on the Internet but recently there seemed to be a higher than average level of vitriol being launched at Microsoft. From my totally arbitrary standpoint it seems that most people don’t view Microsoft as the evil empire that they used to and instead now focus on the two new giants in the tech center, Apple and Google. This could be easily explained by the fact that Microsoft hasn’t really done anything particularly evil recently whilst Apple and Google have both been dealing with their ongoing controversies of platform lock-down and privacy related matters respectively. Still no less than two articles have crossed my path of late that squarely blame Microsoft for various problems and I feel they warrant a response.
The first comes courtesy of the slowly failing MySpace who has been bleeding users for almost 2 years straight now. Whilst there are numerous reasons as to why they’re failing (with Facebook being the most likely) one blog asked the question if their choice of infrastructure was to blame:
1. Their bet on Microsoft technology doomed them for a variety of reasons.
2. Their bet on Los Angeles accentuated the problems with betting on Microsoft.Let me explain.
The problem was, as Myspace started losing to Facebook, they knew they needed to make major changes. But they didn’t have the programming talent to really make huge changes and the infrastructure they bet on made it both tougher to change, because it isn’t set up to do the scale of 100 million users it needed to, and tougher to hire really great entrepreneurial programmers who could rebuild the site to do interesting stuff.
I won’t argue point 2 as the short time I spent in Los Angeles showed me that it wasn’t exactly the best place for acquiring technical talent (although I haven’t been to San Francisco to give it a good comparison, but talking with friends who have seems to confirm this). However betting on Microsoft technology is definitely not the reason why MySpace started on a long downward spiral several years ago, as several commenters point out in this article. Indeed MySpace’s lack of innovation appears to stem from the fact that they outsourced much of their core development work to Telligent, a company that provides social network platforms. The issue with such an arrangement meant that they were wholly dependent on Telligent to provide updates to the platform they were using, rather than owning it entirely in house. Indeed as a few other commenters pointed out the switch to the Microsoft stack actually allowed MySpace to Scale much further with less infrastructure than they did previously. If there was a problem with scaling it definitely wasn’t coming from the Microsoft technology stack.
When I first started developing what became Lobaco scalability was always something that was nagging at the back of my head, taunting me that my choice of platform was doomed to failure. Indeed there have been only a few start-ups that have managed to make it big using the Microsoft technology stack so it would seem like the going down this path is a sure fire way to kill any good idea in its infancy. Still I have a heavy investment in the Microsoft line of products so I kept on plugging away with it. Problems of scale appear to be unique for each technology stack with all of them having their pros and cons. Realistically every company with large numbers of users has their own unique way of dealing with it and the technology used seems to be secondary to good architecture and planning.
Still there’s still a strong anti-Microsoft sentiment amongst those in Silicone Valley. Just for kicks I’ve been thumbing through the job listings for various start ups in the area, toying with the idea of moving there to get some real world start-up experience. Most commonly however none of them want to hear anything about a Microsoft based developer, instead preferring something like PHP/Rails/Node.js. Indeed some have gone as far as to say that .NET development is black mark against you, only serving to limit your job prospects:
Programming with .NET is like cooking in a McDonalds kitchen. It is full of amazing tools that automate absolutely everything. Just press the right button and follow the beeping lights, and you can churn out flawless 1.6 oz burgers faster than anybody else on the planet.
However, if you need to make a 1.7 oz burger, you simply can’t. There’s no button for it. The patties are pre-formed in the wrong size. They start out frozen so they can’t be smushed up and reformed, and the thawing machine is so tightly integrated with the cooking machine that there’s no way to intercept it between the two. A McDonalds kitchen makes exactly what’s on the McDonalds menu — and does so in an absolutely foolproof fashion. But it can’t go off the menu, and any attempt to bend the machine to your will just breaks it such that it needs to be sent back to the factory for repairs.
I should probably point out that I don’t disagree with some of the points of his post, most notably how Microsoft makes everything quite easy for you if you’re following a particular pattern. The trouble comes when you try to work outside the box and many programmers will simply not attempt anything that isn’t already solved by Microsoft. Heck I encountered that very problem when I tried to wrangle their Domain Services API to send and receive JSON a supported but wholly undocumented part of their API. I got it working in the end but I could easily see many .NET developers simply saying it couldn’t be done, at least not in the way I was going for it.
Still that doesn’t mean all .NET developers are simple button pushers, totally incapable of thinking outside the Microsoft box. Sure there will be more of those type of programmers simply because .NET is used is so many places (just not Internet start-ups by the looks of it) but to paint all of those who use the technology with the same brush seems pretty far fetched. Heck if he was right then there would’ve been no way for me to get my head around Objective-C since it’s not supported by Visual Studio. Still I managed to get competent in 2 weeks and can now hack my way around in Xcode just fine, despite my extensive .NET heritage.
It’s always the person or company, not the technology, that limits their potential. Sure you may hit a wall with a particular language or infrastructure stack but if you’re people are capable you’ll find a way around it. I might be in the minority when it comes to trying to start a company based around Microsoft technology but the fact is that attempting to relearn another technology stack is a huge opportunity cost. If I do it right however it should be flexible enough so that I can replace parts of the system with more appropriate technologies down the line, if the need calls for it. People pointing the finger at Microsoft for all their woes are simply looking for a scapegoat so they don’t have to address the larger systemic issues or are simply looking for some juicy blog fodder.
I guess they found the latter, since I certainly did 😉
I agree with you on this one mate, although from another angle. As I’m not a coder/programmer, I’ve been seeing alot of anti-microsoft sentiment around the WP7 Update saga. I don’t disagree with alot of what’s being said, but there seems to be alot of bloggers digging an early grave for Microsoft.
Especially when you see these articles on predictions of the Smartphone market!
http://www.idc.com/getdoc.jsp?containerId=prUS22762811
That comes as a surprise for an Apple lad like myself, but its good to see this competition, especially as WP7 is infact a brilliant and new idea of a mobile OS.
I thought I might come back to this… 😉
“MySpace’s lack of innovation appears to stem from the fact that they outsourced much of their core development work” – When you bet on a technology that developers don’t find interesting you’re not going to find interesting developers to work on it. You have to go and pay a firm to do the dirty work for you, and from reading your post there appears to be a bucket load of dirty work still to be done to get MS platforms to the point where they are productive environments to code in.
Microsoft might not be the choice platform for all the “interesting” companies out there but that doesn’t mean there’s oodles of extremely competent programmers out there willing to do the work. Sure you have to struggle to find a large Internet based company that’s using Microsoft’s technology stack (StackOverflow and PlentyOfFish are the only 2 that come to mind) but that doesn’t mean Microsoft doesn’t have a ton of interesting tech, just check out their Azure offerings.
I’m most productive in a Microsoft environment and it takes me the least amount of effort to get a new idea up and running in Visual Studio as it does compared with Xcode or Eclipse. Of course this doesn’t hold true for everyone but that doesn’t mean the Microsoft stack is any less capable than its competitors. It’s the association with stuffy enterprise apps that seems to give people this impression.
The irony about the whole “McBurger” idiom is that the other platforms are doing it, too. I mean, look at PHP or Rails for web development — both of them attempt to provide a “one stop shop” for app development. I’ve been doing Rails dev. lately, and I’m always amused when I hear someone singing the praises of Rails, about how it makes for such “smart” devs, and then being completely unable to explain how Rails does a lot of the “magic” that makes it so easy to whip out a quick app. It’s not that magic is bad, or that Rails is bad (far from it); it’s just that the perception that MS is the only stack to put lots of hard-to-unravel “magic” into your app is flat wrong. EVERY useful technology attempts to make the common tasks easy; it’s what a good technology stack DOES!
What the Microsoft stack DOES, however, is lock you in to Microsoft technologies; want to use a MySQL server with IIS? Good luck… I mean you CAN, but good luck making LINQ work properly. Want to run ASP.Net MVC on Apache? Yeah… sure.
Again to be fair — all the big software companies do this; just start writing code for Apple, and before long, you’ve bought a subscription to their dev. network, you’ve installed XCode, and all you do and think is ObjectiveC. Developer lock-in is the bread and butter of large corporations, not just Microsoft.
One of the reasons I’ve been liking Rails is that it’s an *open source* platform. Meaning, I can get at the underlying source code and if something is broken or wrong, *fix it*. Admittedly, I don’t do this as often as I should, but still — I can contribute. And more importantly, this open source system allows me to really understand what’s going on at a deep level, so that when something breaks I don’t just have to shrug and call some megacorp’s tech support hotline, the odds are reasonable that I can fix it or at least work around it. And at a higher level, I know that I’m not going to be necessarily locked into a single technology stack; sure, Heroku may be using Postgres for its SQL, but I know that if I mostly have KVP data, I can switch over to memcached or some other NoSQL DB at any time. You simply don’t have that flexibility with a Microsoft stack (or an Apple stack, etc.)
This is getting long, so I’ll end it with one point; the problem isn’t Microsoft per se. The problem is technology lock in. As a corporation, this limits your agility, something startups simply cannot do. And as a developer, this limits your ability to challenge yourself and grow, again — something you cannot do.
NB: I worked as an engineer at Microsoft for about 8 years. I’m now completely enmeshed in the open source community. I do not, however, hate Microsoft.
Agreed. Microsoft might do a whole lot of black magic but it’s no different from all the other frameworks out there. It just so happens that Microsoft’s IDE and tools available for it are the best for me and I understand a lot more of the behind the scenes magic than I do for any of the other popular frameworks.
Ruby et.al. do have that level of platform agnosticity going for them although most of the time you’re just going to end up using Apache anyway. It’s a non-trivial challenge to get the level of integration that Microsoft products have without necessitating some level of lock in but many open source tools do get close. Personally the familiarity and knowing where to get licenses on the cheap or free means that the lock-in doesn’t bother me as much, but I understand that’s not going to be the right choice for everyone.
I agree with all the points about open source (doing software in that way does indeed bring in a whole host of benefits) but the Microsoft stack isn’t as inflexible as you make it out to be. There’s a whole host of open and closed source solutions that will allow you to make the exact switch that you described in a .NET environment. But realistically how often are you contemplating doing such a thing? It seems like a solution in search of a problem.
I’ll have to disagree with your point there as I believe that the Microsoft stack works and is far more flexible than you give it credit for. Granted you can’t get your hands under the hood to fix something that might be broken but much of the stack is compatible with many of the popular open source tools out there. If you’re familiar with an open source environment then that’ll probably work better for you but for many of us who’ve cut our teeth on the Microsoft stack it makes more sense to continue with it, especially if you’re looking to develop a minimum viable product.