Excellent points. Even if you don’t upgrade the software in production, it’s worth doing complete builds from time to time to ensure you can. I’ve seen a few companies trap themselves by relying on golden artifacts they can no longer create. (A java class created by reflection from the previous jar file.) Be very careful about what is actually needed for a full bootstrap, not just an incremental build.
The same applies to documentation. It tends to grow, but never shrink. I spent the afternoon deleting references to archaic disk geometries and install from tape (!) from the openbsd install notes. They were written in 1995 and updated over time, but nobody stopped to ask how many users really care what IRQ assignments their ISA SCSI card needs to use. The information wasn’t wrong, but it was entirely useless.
Sending this to my boss, it’s so true :(
Sometimes people think the cost of doing a new feature is the only cost; but simply maintaining it for years to come takes time. If you keep letting your product get bigger and bigger, it’s going to cost more just to “do nothing” to it.