Functional high ground

It seems every tech podcast I listen to is talking about the perceived drop of quality in Apple’s software, mainly iOS and MacOS X. It all started with Marco Arment’s post at the beginning of January. Marco feels that Apple’s software has more and more little annoying bugs that stay unfixed and multiply with every new release lately. My opinion is pretty simple: Of course, the quality is dropping!

If there is one thing that has been always true in my 10+ years of software engineering is this: when developing software, you can act on 3 pillars: scope (amount of features), time (deadline) or quality (amount of bugs). That means that if you decide that you won’t compromise on the scope, you’ll have to compromise on the deadline or quality. If you decide you won’t compromise one scope and deadline, you’ll have to compromise on quality. That has always been true!

Now, apply that to Apple: they’ve decided a few years ago they would release a new major version every year, first with iOS and now with MacOS X. There goes the deadline. No compromise. They sometimes delay a bit the releases of MacOS X (but not iOS releases as far as I remember) but they always release a version per year.
Next is the scope. Look at last year. At WWDC, they announced iOS 8 and MacOS X Yosemite. They described every major feature and change in those products in June. Here is the scope. Granted, when they announced the features, they had already done most of functional work, leaving stabilization. But it means that if they face a big quality issue or too many little ones, they still can’t go back and say they won’t deliver those features. That would be a PR disaster for them. Release Apple-bashing trolls!

So that leaves quality as the only pillar to compromise on. Some will say that being Apple, having all this money, they can throw more developers and QA engineers at it to meet the deadline and the scope. But that’s not how it works. The mythical man-month rule applies to everyone, including to Apple.

In my opinion, the only way to fix this, is to stop the yearly release cycle because the alternatives all suck:

  • Make a Snow Leopard release with no user-facing changes would be acknowledging the previous releases were crappy. I don’t think they have a GCD in their sleeve to justify such a release.
  • Lowering the number of features per release would be disastrous in a yearly cycle: delayed dependencies could delay features for 2 years. That’s an entire market for this feature that could disappear. Better push a delivery 6 months and have the feature and its dependencies than no feature at all for two years.

Apple could stop the yearly cycle for MacOS X and keep it for iOS. They could deliver a new MacOS X every 2 years and they would still release twice as more versions as Windows. Another interesting release cycle is Ubuntu: a new version every 6 months with whatever feature that was finalized during this cycle plus a long stable version every two years. In any case, there are multiple ways to fix this quality problem by small touches here and there without taking a big PR hit. Because the quality issue is really worrisome. A lot of people, including myself, left Windows for Apple because of the quality and stability issues of Microsoft’s ecosystem. And once the perception of crappy software reaches critical mass, there is no going back.