I’ve done a few posts about the problems with Apple’s App Store, and its requirement that developers use it to get software onto the iPhone. Paul Graham has a more thorough and better-written critique:
The way Apple runs the App Store has harmed their reputation with programmers more than anything else they’ve ever done. Their reputation with programmers used to be great. It used to be the most common complaint you heard about Apple was that their fans admired them too uncritically. The App Store has changed that. Now a lot of programmers have started to see Apple as evil…
Software development has evolved from a small number of big releases to a constant stream of small ones. But Apple doesn’t understand that either. Their model of product development derives from hardware. They work on something till they think it’s finished, then they release it. You have to do that with hardware, but because software is so easy to change, its design can benefit from evolution. The standard way to develop applications now is to launch fast and iterate. Which means it’s a disaster to have long, random delays each time you release a new version.
Apparently Apple’s attitude is that developers should be more careful when they submit a new version to the App Store. They would say that. But powerful as they are, they’re not powerful enough to turn back the evolution of technology. Programmers don’t use launch-fast-and-iterate out of laziness. They use it because it yields the best results. By obstructing that process, Apple is making them do bad work, and programmers hate that as much as Apple would.
How would Apple like it if when they discovered a serious bug in OS X, instead of releasing a software update immediately, they had to submit their code to an intermediary who sat on it for a month and then rejected it because it contained an icon they didn’t like?
One thing I disagree with: “Programmers don’t use launch-fast-and-iterate out of laziness. They use it because it yields the best results.”
I think programmers do use that approach because of laziness. The only reason they’re allowed to use that approach is because it also yields the best results.
It’s not just that it yields the best results, Erik.
Programs are complicated, and are created dynamically by teams of programmers. That’s what made open-source so successful. Sometimes the best way to find the random, rare use-case scenarios is to get it used by thousands and thousands of people. The faster those bugs are found and reported, the faster they get fixed and the better the product becomes.
Would you rather wait 7 years for the “perfect” program, or would you rather have one that works more-or-less and improves dynamically to fit the needs that come to light as it’s being used?
The longer you wait to release something, the more likely it is that it will be obsolete when you do, and the more useless it will be.