Why does Starbucks -- a US-based company that sells to affluent people in affluent countries -- not have a Windows Phone app? They do an iOS app, and an Android app, but not one for the third-place mobile platform.
A while back I wrote a piece about the "". The idea here with this rule is that in competitive markets, you tend to get three, large, generalist players. Think American, United, and Delta, or Walmart, Target, and Kmart.
The authors of the Rule of Three analysed hundreds of markets. But this phenomenon seems to have skipped the PC market where desktop operating systems where Windows has always enjoyed a massive, disproportionate-compared-to-any-other-market share. OS X only gets about eight percent of the desktop OS market, and Linux's market share is only 1.5 percent.
It shouldn't be split like that -- OS X and Linux should be higher, if the PC desktop market was in-line with the Rule of Three.
I firmly believe in the Rule of Three, and I believe that Windows's over-representation in the desktop OS market was an aberration that won't happen in the post-PC world. There will almost certainly be three, large, generalist mobile operating system providers and as people who deliver or manage solutions based on those platforms, we're going to have to deal with the fallout of that.
As developers, we've tended to have it easy because of the Windows hegemony. If you're building software that was installed and ran on computers, you really only ever had to target Windows. This greatly simplified the job you had to do. If you were a little less lucky, you had to target OS X as well. This meant porting the code and managing two versions, but it's really only been in the last few years that targeting Windows and OS X has been something that was generally expected for installable software.
If you worked in the part of the world where you wrote enterprise software, your life was dead easy. Just craft your code in .NET and Java and you were done. Plus, for the past fifteen years we've generally written intranet/extranet-style code that runs on a server and is accessed through a web browser, reducing the problem even further.
In short, up until this point, developers have had it easy. They've only had to handle one or two sets of developer tooling, and what was being targeted was relatively homogenous. Yes, you might have had to have supported Windows XP, Windows 7, and Windows 8, but they were all Windows and it could be done with one version of software.
When we look at mobile development, life has become utterly horrendous. Each platform vendor produces their own native development toolset. The idea of having a native toolset is that the platform vendor can present to the world their view as to how apps should be built and run on their devices. If as a developer you use the native toolset, the experience will be as good as it possibly can be -- depending on your talent, and resources.
However, there is zero overlap -- no overlap at all -- between the toolsets produced by each platform vendor.
So if you craft a perfect app for iOS, you can't take that code and run it on Android. You have to rewrite the app. And every time you fix a bug or add a feature, you have to reproduce that work on another platform.
Developers who build desktop apps for Windows and OS X will know a little of this pain. But remember how weird the desktop market was. The Rule of Three tells us we're all but guaranteed to have three dominant mobile platforms that need to be supported.
That means we'll be writing an iOS app, then rewriting it for Android, then rewriting it for Windows Phone. And so on ad infinitum in terms of bugs and features for as long as you need to maintain the app.
This isn't a piece about cross-platform frameworks and tools. There are ways to ameliorate some of this pain by using such tools, but, and never really save you much time compared to just going through the pain of doing work multiple times.
More to the point, customers will reject a poor experience. I don't mean that as something limited to software -- we know that customers universally prefer things that work well. For mobile apps, the best chance you have of making something that works well is to target the native frameworks.
But that means that you'll be building and maintaining multiple copies of the same app, and that means you have a significant scale problem.
One dimension of the Rule of Three is that the way the market share splits out tends to be fixed too. You'll end up with one generalist that owns most of the market (Samsung with Android in this case), one that owns a still respectable chunk (Apple), and one that owns the "dregs" at the bottom (Nokia a la Windows Phone).
The dregs is still pretty big -- let's say that ends up being 10 to 15 percent, which seems to fit the. If you have "n" developer days to spend, you'll obviously hit the most lucrative first.
In our world at the moment "most lucrative" is not clear., but there are way more Android devices out there. This ambiguity leads to developers hitting both iOS and Android to smooth out investment and create some assurance of return, which is what we generally see now.
In addition, Windows Phone is new, but BlackBerry was not, and we know that even when BlackBerry had good market share, people were not investing in that third platform. This doesn't portend good things for whoever is in third place.
It doesn't matter who is in third place -- Nokia and Apple could well flip places. It seems as if there is a natural force pulling development effort away whoever is in the last place.
Development effort is going to be equal for whichever three platforms are in play. An app that takes three months on iOS will take three months on Android.
The Rule of Three tells us two things. Firstly, that there will be three -- and in our case Windows Phones will sell in big enough numbers to be important. Secondly, it tells us that whoever is in third place will have a small share. But, the development effort to hit that third slot is the same.
That leaves the third place player as the unloved stepchild, the kid sitting in the corner eating paste at school. It suggests that player will always be lagging compared to the other two, stronger players, and that app support on that platform will always end up being poor.
What do you think? Post a comment, or talk to me on Twitter: @mbrit.