Beware, Android has its own share of software problems.

Reflecting on this, I've come to the following conclusion, let me motivate it a bit.

Jobs was a notable fan of Sony's industrial design in the 80s. But Japan's traditional industrial problem has been poor software despite great hardware. Often software so bad that it brings down an otherwise great piece of hardware.

Jobs tried to solve this, great hardware and software, tightly integrated, completes the product. Small details, from the trackpad on a Mac to the clickwheel on an iPod, to the interface on an iPad are all examples of this philosophy.

Fundamentally this puts the focus on building a product, the industrial design, the power supply, the BOM and the software (instead of all the previous bits and then later some software). But a product oriented development process means you build the product, ship it, then move on to the next product. You don't really keep revving a product after it ships.

But software is a fundamentally different beast. As a discipline it has transformed into a continuous practice instead of a discrete practice like hardware. "Cloud" computing, with continuous updates are simply an extension of this understanding. It puts tension into Apple's product focused development practice because it forcibly decouples the software part of product design that Apple has spent so much effort into coupling.

I'm not saying Apple never updates its software, to the contrary, Apple software is generally well supported and receives updates. But it feels like it's done in a begrudging kind of way. Major software updates tend to be lockstep released with major new hardware product launches, not independently (and then some older products can be updated with the new software).

Contrast to other parts of the computing industry where the system software and hardware are completely decoupled. Which is the better approach? I don't know. Apple's innovation tends to come in huge leaps, followed by slow refinement. It's easy for consumers to keep track of and it seems to have worked well. But then every once in a while competitors will move ahead, and if it's early in an Apple product cycle it can take forever for Apple to reach parity since you have to wait for the next major product release to get the next major software release. It can feel like catching up.

Some software development just simply works better with a continuous development process. Maps is a really notable example, all of the data lives outside the product and as the data improves, the product seems to magically improve as well. I think what we're realizing is that voice recognition applications (Siri, Google's Voice Search) benefit from out-of-product improvements to the fundamental algorithms as well.

And this is where Apple is struggling, by viewing software as huge steps with small shuffles in between, they struggle in cases where software development works best as a continuous reasonable walk. It can feel like Apple just can't be bothered sometimes while you wait a year or two for the next major product cycle.

(comparatively, Google suffers from the opposite, by keeping on their regularly paced march, the product ecosystems ends up horribly confused, you might be able to get the latest google tech on product A, but can you get it on product B? Who knows!? It can be frustrating as a consumer)