From the early days of its C compilers and Visual Basic to the introduction of the .NET Framework and on to Windows Azure, Microsoft has obsessed about developers, their languages, and tools. And fresh off Microsoft's //build/ developer conference last week, it's clear that developers remain a huge priority for Redmond.
Granted, rapid platform changes, secrecy around Windows 8 and Windows Phone, and a sometimes tone deafness to what the rest of the developer world is doing have left egg on Microsoft's developer face at times.
But the company has adapted to the new developer world, embracing the cloud and open source and contributing important new technologies to the developer community. Few give the company credit for such moves, because it's much easier to stick to the old stereotype of the evil "M$" that's hopelessly behind the times. In reality, it's that very narrative that's become obsolete.
It may not be popular to say so, but Microsoft is winning the battle for developers, especially in the enterprise, and increasingly in the cloud and consumer worlds.
Microsoft's popularity with developers is not due to Windows' incumbency as much as people think. Redmond's developer popularity began when its tools became competitive in features and productivity. This started with Visual Basic (VB) and then Visual C++ (VC++) in the early 1990s. Prior to the VB/VC++ era, companies like Borland (with Turbo C++ and Turbo Pascal), Nantucket (with Clipper), Fox Software (with FoxPro — a product that Microsoft eventually bought) and Ashton Tate (with dBase) were kings of the hill.
The key to Microsoft winning developer hearts and minds was creating good tools with high productivity and superior debugging capabilities, especially for the Windows environment, whose native C application programming interface (API) was very difficult to develop for.
A shift from Windows applications to the web has, contrary to popular belief, not hurt Microsoft's developer story. Understanding an important nuance is necessary to appreciate why. Any discussion of Microsoft's popularity with developers needs to consider the question from two angles: That of the Windows Division, and that of the Developer Division (which is within the Server and Tools Business).
In other words, Microsoft can curry favor with developers in terms of its client platforms or in terms of its developer stack. Sometimes the two are in full alignment, but at other times, they're not correlated. As the web has gained in popularity as an application development standard, Microsoft's developer stack has gained in popularity, too, even if Windows itself has encountered challenges.
Microsoft has succeeded in this past decade as it did in the one preceding it: By delivering solid tools. Visual Studio is a comprehensive integrated development environment (IDE) that pioneered the syntax color-coded editor, statement completion in the form of IntelliSense, comprehensive design-time data binding, integrated debugging, and a host of other industry standards that have been copied handsomely by the open-source Eclipse project.
Again, it's extremely important to distinguish between the Microsoft developer stack and Windows itself. Challenges to the latter do not automatically erode the popularity of the former. In fact, Microsoft's enterprise strength has, arguably, been due more to the productivity of its web development tools than anything else.
Where Microsoft has faltered has been in the turbulence of its client development stack. The shift from classic VB to .NET Windows Forms was a tricky one ... but it worked. However, the subsequent transition to Windows Presentation Foundation (WPF), followed by the crowning and dethroning of Silverlight, and the dual-track (HTML and .NET) development platform for "Windows Store" touch-centric apps, for Windows 8 and Windows RT, has caused dissonance and compromised developers' trust in Microsoft.
For this reason, as well as the general riskiness of multiple coexisting native platforms and the evolution of HTML 5, the Microsoft Web development platform is probably Redmond's most popular at this point, and that ties in very nicely to the company's push toward the cloud with Windows Azure.
The advent of mobile "apps" versus enterprise applications has attracted new developers who have skipped past the enterprise market, but plenty of enterprises have native mobile app requirements, too.
Without question, Apple has been the winner on the native mobile enterprise app front, with Android in second place and gaining. Windows (including Windows Phone) has been the big loser.
But here again, the dev stack can succeed even if Windows is threatened. With the Microsoft web stack, and its cloud platform (especially Windows Azure Mobile Services), Microsoft is wooing developers who have multiple platform targets on the client side.
Another phenomenon to watch is the growing popularity of Xamarin, which allows native Android and iOS apps to be developed using .NET and Visual Studio, with a substantial amount of code reuse across platforms. The MonoGame and Unity game engines offer similar cross-platform capabilities from .NET code. The cross-platform C# play is like a sleeper cell for Microsoft .NET platform adoption; keep an eye on it.
Another sleeper cell is Windows Phone itself. More and more apps are landing there, and even if market share has been abysmal, critical acclaim has been high.
Mobile apps, for the most part, monetize rather differently than conventional software has in years past. App stores level the playing field in terms of the distribution channel, giving small developers a platform that was previously unavailable. On the other hand, the prospect of being financially successful in the consumer app market is akin to making it big in Rock & Roll or professional sports: The reward is potentially big, but very few will make it.
Contrast this with the more grounded, though well-paid, profession of custom software development, where revenue is often derived on a salaried or time-and-materials basis, and it's a whole different ball game. For the enterprise, it's all about productivity and features. On the consumer side, it's all about placement in the store and platform adoption. Enterprise developers care about the development experience and its efficiencies; consumer app developers care about the customer experience and number of copies sold.
The sweet spot, though, is the intersection between the two: Enterprise apps running on consumer smartphone and tablet device platforms. This combines new form factors with the pre-existing monetization models. Ultimately, I think this scenario will be the most important. Microsoft has good chances here, but it needs to maintain a cross-platform strategy. Tying its tools too closely to Windows devices probably won't be a winning formula.
Apple was the first in-market to shift focus from features, on the one hand, to fit, finish, and experience on the other. Windows Mobile devices pre-dated the iPhone by many years, but the iPhone was really the first mobile device that made it easy and fun to take advantage of smartphone technology. Android wooed OEMs with the prospect of free operating system licenses and, ironically, beat Microsoft at the multi-OEM, multi-device approach to the market.
BlackBerry suffered from extreme hubris, and refused to modernize until it was too late. Palm was a one-trick pony that found its own Palm V act too hard to follow. Amazon is doing just fine with its goal of selling Prime subscriptions (devices are quite secondary).
Microsoft's prior failings in the mobile market have been due to groupthink and the resulting misread of the market. The company corrected this with Windows Phone, but now it can only succeed by playing the long game. I'd argue that Microsoft has done better than anyone in addressing the iOS-Android duopoly. It's just that Microsoft and Windows Phone will look unsuccessful until the day when all the contrarian effort pays off, and Redmond has to have the patience to get there.
The only thing that surprises me about these reports is that people find them to be scandalous. If Microsoft is in a distant third place, then developers can't hope for any substantial revenue developing for Microsoft devices. Microsoft may argue that this will change once the critical mass is there, but even if developers could help Microsoft turn the tide, what would be in it for them? Microsoft needs to put its money where its mouth is and invest, or the app developers will pass it by. It's the monetary penalty Microsoft pays for being late to the game with a viable platform.
Is the strategy working? Important apps, like Instagram, Sonos, and a host from Google, are still not available. But in the last several months, Windows Phone has added banner apps like ABC News, Hulu Plus, Pandora, Chase Mobile, United Airlines, TeamViewer, Temple Run, various Disney games (like Where's My Water and its derivatives), multiple Angry Birds titles, and others to its platform.
Windows Phone has also seen important refreshes to apps it already had, like Foursquare, OpenTable, Twitter, Rhapsody, Shazam, and Yelp. Then there are the newly added "discretionary" apps, as I call them. These are the apps that are not crucial, but are nice to have — and they may be the best indicator of platform importance. New apps in this category include Walgreens, Fidelity Investments, E Online, Sony Pictures' MyDailyClip, and Domino's Pizza.
Ironically, the best story around Windows 8 has been its apparent influence on momentum for Windows Phone. Window 8's own momentum (and that of Windows RT) has been more modest.
The popularity of web apps helps, because it addresses the gap in native apps for Windows Phone and Windows 8/RT. But I don't see that it's fully taken root yet. Worse, most web developers seem to target WebKit browsers (and I would include Google Chrome's Blink engine in that grouping), leaving Microsoft's Internet Explorer 10 unable to render certain sites correctly. Since IE10 is the exclusive browser on Windows Phone and Windows RT, and is the default on Windows 8, Microsoft is still at a big disadvantage here.
Microsoft is certainly the cloud underdog at this point, with Amazon Web Services (AWS) dominating, but Redmond is making all the right investments and policy decisions here. The Windows Azure cloud platform supports both infrastructure-as-a-service (IaaS) and platform-as-a-service (PaaS) models. It's also platform agnostic, with official support for Linux virtual machines, and applications developed not just in .NET, but also in Java, PHP, Ruby, Node.js, and Python. Microsoft said that it has 250,000 customers on Azure, and is adding 1000 new ones each day.
Office 365 supports using the Office desktop clients on a subscription basis, and offers Exchange, SharePoint, and Lync on the cheap. Microsoft's acquisitions of Skype and Yammer, while far from cheap, are adding significant value to these offerings. And the Office Web apps, available to both Office 365 and SkyDrive users, extend the reach of Office to all sorts of devices, including Google Chromebooks, where they are surprisingly usable.
Honestly, Microsoft's got so many post-PC plays in motion, the biggest problem the company has is that most people aren't aware of half of them.
All the dust flying around on the developer battleground has a tendency to hide the winner, and the company that's winning today could still lose tomorrow. But in my opinion, that winning company is, in fact, Microsoft. Apple's low on ammo, if not out of bullets completely. Android is fragmented and in any case dominated by Samsung, which threatens the other OEMs in the ecosystem. BlackBerry, Mozilla, and others will have a tough time gaining critical mass in the smartphone and tablet space.
Microsoft has a good strategy and a good game, and its own defeats of late have in some ways helped by giving the company a badly needed dose of humility. If Redmond could just tone down its own internal politics and the corresponding turnover and drain in morale, it could win big. Without that transformation, its success is a little bit more a matter of chance. But its investments have been smart and its chances are good. So Redmond is winning. For now.
Microsoft faces existential threats on multiple fronts. iOS and Android threaten Windows and the PC market in general. Open-source NoSQL databases threaten SQL Server. Copycat, "good enough" productivity suites threaten Office. And mobile devices in general threaten game consoles, most definitely including the Xbox.
Microsoft's response — whether you call it "Devices and Services" or "Three Screens and the Cloud" — is about providing a consistent developer platform that works in multiple scenarios: Cloud and on-premises; PC, tablet, phone, and soon TV; web and native; enterprise and consumer.
Some would argue that this hybrid approach yields too many compromises. My take is that it makes training and development efforts approachable, even in a world of sprawling, heterogeneous, indeterminate devices. My belief is that this is the only reasonable strategy, and that's the biggest reason why I see Microsoft is winning the battle for developers.
As Microsoft addresses attendees of its Worldwide Partner Conference next week, and is likely implementing a reorg for its new fiscal year that started this week, we'll know better whether it's continuing on the right path, or if it's losing its nerve.