Rather than wading into the hullabaloo regarding Apple’s software quality directly I instead decided to take a step backwards and consider the forces that have driven us to this situation in the first place. My goal is to consider the forces that make keeping software stable over time difficult. The result can apply to small projects as well as to a company as large as Apple.
- Marketing Complexity: The pressure to keep adding features in order to keep software relevant in a marketplace.
- Intrinsic Complexity: The unfortunate reality that any added feature doesn’t just linearly increase complexity, instead it increases radically.
- Personnel/Personal Complexity: The tension and struggle around keeping sharp, talented engineers focused on stability when the promise of working on something else, newer and more exciting looms.
These are the concerns we need to stay conscious of in order to manage our software over time.