A five-step plan for Microsoft to start #winning again
I worked at Microsoft as a developer for two and a half years before quitting to start Outdrsy. I found almost everyone I worked with to be smart, hard-working, and passionate about what they were doing. And there are about 90,000 of these people. So where did Microsoft go wrong that put it consistently behind competitors Apple, Google, and Amazon in mobile and cloud computing? These are my five best guesses, and proposals for how to fix them.
1. Create a new culture of innovation
This is summed up by a Steve Ballmer quote from the Q&A at the end of his talk to my internship class in the summer of 2007. One intern asked if Microsoft has any policy similar to Google’s 20% time, and what he should do if he has a cool idea. “Go form a startup, and if you’re really lucky, we’ll buy you,” was Ballmer’s response. No moment of hesitation and retraction as Ballmer should have realized that he just told 1,000 future employees not to bother with innovation during their time at Microsoft. He continued, “I get emails from employees with dumb ideas every single day. Startups are the best way to make a lot of money if you have a really innovative idea, but most fail.”
Microsoft doesn’t have to copy Google, but they need a way to get their money’s worth out of the talented, ambitious and eager twenty-somethings that they’re paying six figure incomes to. For example, before the release of Windows Phone, Microsoft should have organized internal hackathons along the lines of Startup Weekend to foster a large base of creative apps.
2. More and better acquisitions
What's more, Ballmer isn’t living up to his word and buying the innovative startups created by former ‘softies or other smart people. Facebook and Google are buying up lots of talented startups; meanwhile, Microsoft is buying Danger and turning it into Kin.
If Microsoft really wants to differentiate Windows Phone, why not buy Swype and license it exclusively on Windows Phones? A phone that’s almost as good as the iPhone and less buggy than Android isn’t enough to gain market traction; Windows Phone needs a few killer features that you just can’t get on Android or iPhone.
3. Continuous deployment vs. Waterfall development
Despite every team at Microsoft laying claim to the agile development methodology, the development cycle of most products at Microsoft involves something along the lines of a 3-month planning period followed by some number of 3-month coding milestones. This might make some sense for client products like Windows, but makes no sense for web products like Windows Live. Web products should deploy new features every day. There should be A/B testing and analytics and constant tweaking. Instead, there’s a monolithic multi-year cycle where meetings instead of analytics determine our direction and we stay the course until we release, at which point we find out our hypotheses are wrong, our competitors are another year ahead of us, and we start the cycle over again, starting with the inevitable reorg where a few months go down the drain as the executives decide what everyone should do next.
A great example of this is the product I worked on for most of my time at Microsoft, Windows Live Messenger Companion (there were plenty of jokes within the team about Windows Live Messenger Companion Ultimate 2010 Home Edition, but nothing was ever done about the name). Our mission was essentially to create RockMelt (well before that was launched), but as an add-on to Internet Explorer. For the reader who is familiar with IE’s add-on model, large red flags are popping up right now. Yes, this task is NOT possible. It took us a year and a half to prove that. I’m proud of the hacking we accomplished, but someone should have stood up to a VP early on and told him this was not the right approach. If our mission was important to the company, it should have been built into Internet Explorer. Companion could have been an awesome new social extensibility point for IE, but instead, due to organizational bureaucracy, was a hacked together proof of concept for how to cleverly avoid the constraints of IE’s extensibility model.
4. Windows on Rails: developers, developers, developers
Microsoft is a platform company. Windows 7 is a great platform, but as the desktop becomes less relevant and mobile and the cloud become the platforms of the future, Microsoft needs to win at least one of those platforms. If they can’t get traction with Windows Phone and tablets, they’ll need to be the cloud platform. Right now that’s Amazon.
I started developing Outdrsy in Rails on my Windows desktop at home. I had used Rails for projects in college and it seemed to have a strong open source developer community and great tools for startups, like Heroku, built on Amazon Web Services. Developing for Rails on Windows is a total nightmare; I dread every time a new IE bug pops up and forces me to go back to my Windows machine.
Ballmer loves to chant “developers, developers, developers.” Again, he should put his money where his mouth is. If Ballmer wants developers building for Windows, Windows Phone, and Azure, those need to be the best platforms for developers. The Windows Phone SDK is a great example of doing this right – all it took was a one click download/install and I was up and running with my first Windows Phone “Hello, World” program in Visual Studio, a great IDE. Microsoft should do one of their beloved reorgs and move developers in some of the forgotten corners of Microsoft to the Developer Division and make Windows and Azure the best platform for building Rails, Python, and PHP apps. Right now, the next Facebook will run on AWS, not Azure.
5. Stop talking, start doing
The primary unit of organization at Microsoft is the meeting. One hour chunks of time every day get blocked off for meetings that involve all stakeholders in a question, anywhere from 3-20 people. We’d all sit in a conference room and talk about some issue, mostly irrelevant to 17 of the 20 people in the room, until the next group of people who’d scheduled the conference room for a one hour chunk kicked us out. If we were exceptionally unlucky, we’d be in a conference room with no next group of people, and the meeting would continue until someone walked out. At the end of each 3 month milestone, we’d have a postmortem where everyone would agree that we spend too much time in meetings and we’d all resolve to have fewer meetings in the next milestone.
Our team did have a daily scrum during coding periods where the whole team would meet for 10 minutes, and I found these helpful. In general, there should be a compelling reason to have a meeting with more than 4 people that is longer than 10 minutes.
Microsoft has employed 90,000 smart people. A large enough sample of these people were my colleagues and friends that I’m confident the people are not the problem. Microsoft’s problem is purely cultural – everyone wants to do the right thing, but without a cultural shift coming from the top, Microsoft will stay firmly planted in the desktop world.