There is something peculiar about software. When it idles, it does not rust. While in use, it does not wear down. Nonetheless, from the moment a software system is released, its quality deteriorates and an incessant stream of fixes, patches, and enhancements is required to keep its users satisfied. What’s going on?
Software systems stop meeting the needs they were built to satisfy, not because the software changes, but because the needs change.