This is a bit of a ramble, without any real specific point. Just a lot of observations.
I think it's safe to say that I've been a fan of Microsoft since 1998 or so, when I started to learn more about their software tools at the start of that career transition. At the same time, I found myself being a very outspoken, and even hostile critic (honestly I was hostile about everything when I was younger). When I worked there, I felt like the company was so behind on many of its product lines, though not in the software tools area. I also felt that there was greatness all over the place, just begging to burst out. I remember the first time I saw Kinect in some MSR demos, and I thought, yeah, I could be proud of this company.
When I left in 2011, I declared that I didn't leave because of Microsoft, but I didn't stay because of it either. That damn house and nostalgia just barely won out in the struggle to stay or go, but it was probably the right decision at that time. I wasn't that crazy about the group I landed in (it never did ship anything, as far as I know). But knowing about different things going on around the company, I was still a fan. Like most places, its weaknesses were people and process problems.
Outsiders have been quick to predict Microsoft's death and make generalizations about it for years, but as my first manager there pointed out to me, it's really like many smaller companies and hard to generalize. That said, the two years following my departure saw a lot of people leave that I greatly respected (many of whom work together elsewhere, not surprisingly). The way I see it, the biggest problem was the way they approached HR, with an obsession on promotion dictated by stack ranking. They eventually stopped this, before Ballmer retired, but the damage was done.
Stack ranking was straight forward: There's a curve of people in terms of performance, and everyone had to fit on that curve. Managers spent insane amounts of time on this. The worst part is that bad teams had to pick winners, and great teams had to pick losers. Even more ridiculous, people not moving upward were ranked lower. I mean, if you have a mid-level developer who cranks out a ton of great work, but has no desire to manage people, why do you create a disincentive for that? Stupid. Not only that, but if you have to be better than the guy you're sitting next to, what incentive do you have to help each other out and collaborate?
It kind of effected me when I changed from a dev to a program manager. The logic was, hey, you're in a new role, so now you have to prove yourself and work your way up. So when I switched, they had me at a "4," which is the lowest rank not counting "5" (which meant you should start sending out resumes) The "3" group was the huge average section. Later I realized that, OK, I interviewed my way into a better fitting role, which benefits the company, and you reward me by putting me in a lower spot with less of a raise and bonus? Thanks?
I'm not sure what it's like now, but countless great people left in part because of all that madness. The year I left, they also shifted a lot of compensation out of stock awards and into salary, which hopefully helped. What they really needed to do was flush out the old school "Microsoft people," who believed there was one way to do things, one way to structure their business and worst of all, rely solely on what they knew from inside. They ditched Steven Sinofsky, who ran Windows and propagated a lot of that crap, so that was a good start.
I think at the time I left, there were also small pockets of people that saw that the big bang release cycle of products, going back to the old days of Windows and Office, were not sustainable or efficient. They had these plaques that they gave us that said "Ship It" on them, with BillG and SteveB signatures on them. Working on a Web-based product my first year, you can imagine how absurd that seemed to me. We shipped something every two weeks! I didn't see any reason why even Windows could not roll that way.
But when I switched to the PM role, that's where I saw the old guard's influence. We were coming up with the vision for a product with no feedback loop. We had one session with a focus group that mostly led them to the conclusions we wanted to validate, and started to write specs for a product with no intention of putting it in front of anyone to make sure we were building the right thing. I insisted we do it, and my skip-level manager said, "We can't do that, we're Microsoft. People expect us to get it right before we ship it." No joke, that was 2011.
After yesterday's Windows 10 event, you can see how radically things have changed. They are getting early product in front of more people and iterating quickly. They flat out said that they see Windows as a service in the future, continually improving it. Given my experience with the guy in my reporting line, you can understand why I'm really impressed by this brave new world. Heck, as a customer of Azure, I see how that division has been embracing this approach for years. There are improvements almost weekly!
Of course, the most public and visible change is that there's a new CEO, and he's so not Steve Ballmer. People give Ballmer a lot of shit, but his passion and knowledge of the existing business was for real. He just wasn't much of a visionary, and not quite brave enough to allow his people to run with things. I met Satya once at a meeting, when he was running the server and tools business, and he's intensely technical while understanding there's a business to run. He impressed the crap out of me, and when there were rumors that he might get the gig, I was thrilled.
I can't possibly know what his leadership style is, and how it influences the company as a whole, but I suspect it's positive. There were some piles of awesome spread out throughout the company, waiting to break out. Azure was starting to gather momentum, Xbox people were surprisingly forward about iterative and fast development (especially the online and Xbox Live folks), some of the phone people were bright, and MSR folks were looking for every opportunity for product groups to pick up their stuff. The announcements and previews yesterday showed me the good stuff is breaking out.
People are really impressed with the HoloLens thing, and rightfully so. I can't believe they kept it secret for that long. Augmented reality is what we see in all of the science fiction movies, and there it was, if a little clunky in its current form. (Hey, we all want the Star Trek Holodeck to be real.)
I used to think that the operating system doesn't matter, but the company seems hell bent on figuring out this unified world of traditional PC's and touch screens. After plenty of mis-steps, I think they're making it happen.
Microsoft was a company that had lost its way, but that seems to be changing. I'm a fan, and my biggest frustration is that nothing they talk about ever comes out fast enough. I want a new amazing phone today. I want the next generation dev frameworks (open source!) to be ready today. I want Halo 5 today.
I'm not really trying to draw any conclusion, other than state that I knew the potential was there. I think the company can be cool for the first time ever, not because of marketing (though they really kind of suck at that in the consumer space), but because the products are really that good. From a competitive standpoint, they have an opportunity, especially with all of these services getting involved. They do services really well.
For the record, my device world is still pretty split. Our laptops are Macs, and it's hard to get away from those with their pretty screens and insane battery life. (I run Windows in a VM for software development.) Our phones are still Windows, even though there's no hot new hardware. I scored a cheap 8" Dell tablet more than a year ago that I still prefer for web content consumption. For services, we're Amazon people, as that's where our music is, and there are no shortage of video apps that run on a Fire TV.