I’m currently playing with the new iPhone OS, and marveling at how much faster it feels, and at the new features. The changes in it remind me of a paradigm in software development that Apple does better than nearly everyone else (and places I have worked are trying to hard to do):
- Don’t deliver a feature unless you are absolutely satisfied with it
- Provide constant, incremental improvements
The improvements part is very important – it has to be getting better, not just changing – but for this kind of philosophy to work, you must do both – shipping only when ready gives an impression of a mature, elegant system, but means that you might be missing features that your competition’s marketing materials claim they have. People are willing to accept that a feature is missing, but only if they have confidence that it will arrive and get better with time.