Former Windows leader Steven Sinofsky wrote a thoughtful post today about why it's so difficult to build apps for multiple platforms at once.
When a new platform emerges, it's usually fairly "trivial" to integrate with that platform early on -- developers can take much of what they've already done and rejigger it for the new platform, sometimes reusing common "platform agnostic" code, sometimes relying heavily on web services that can be easily adapted to each platform. APIs and design elements tend to be common, or similar, across platforms.
But as product categories (like tablets) get more complicated, platforms start to differentiate and their interfaces start to diverge. That means developers have to spend more and more time working on the new platforms they want to support.
Coordinating work between teams, all developing for different platforms, is harder than it looks: "These challenges are compounded non-linearly as the number of platforms increases," he writes.
He also suggests that the drive to standardize on cross-platform development technologies like HTML 5 are always going to face opposition from platform vendors, who don't want to be dependent on slow-moving standards bodies, and want to maintain their differentiation from other platforms. As he puts it, "But is it reasonable to expect vendors to pour billions into R&D to support an intentional strategy of commoditization or support for a committee design? Vendors believe we’re just getting started in delivering inovation and so slowing things down this way seems counter-intuitive at best."
Sinofsky has uncommon knowledge in this area. He left Microsoft last fall after leading the team that created Windows 7 and Windows 8. Prior to that, he was at Microsoft for more than 20 years -- his entire working life -- leading the Office team and other groups.
Windows 8 introduced a new app development platform, WinRT, for building apps that run in the Modern style touch interface. At its Build conference a couple weeks ago, Microsoft continued to make the case for WinRT development, but also put a bit more emphasis on .NET, Microsoft's decade-old app development platform, which is used primarily for back-end web services. There was also a lot more emphasis on supporting non-Microsoft platforms and technologies.
Sinofsky doesn't mention Microsoft at all in his current post -- a wise move, as he's prevented from "disparaging" his former employer in order to continue receiving stock awards, as per an SEC filing that became public last week. But reading between the lines, it seems like Sinofsky is acknowledging that Microsoft, on its own, can no longer drive developers to adopt its new platforms. Even if it ships hundreds of millions of Windows 8 computers in the next year, developers have to put their resources somewhere, and choosing Microsoft ahead of iOS and Android is a dicey prospect right now.