A large amount of the cost (time) of maintaining code is keeping up with breaking changes and incompatability. This is multiplied by the entire ecosystem of developers and libraries.
If compatibility were better understood and library and platform authors made compatibility a higher priority goal the result would be a massive amount of leverage from the time previously spent on this kind of maintenance burden.
- Lockfiles let you deal with breaking changes on your own terms
- The fundamental theorem of software engineering might indicate that we are over abstracting or that we need another layer of abstraction to deal with compatibility (often the case!)
Links to this note
In There Is No Software Maintenance by Henrik Warne, the author argues that software maintenance is just product development. Since software is never “done”, all of the things we call maintenance such as bug fixes and improvements are feature enhancements and iterating on the original feature.