Software development produces two distinct end products:
- What the customer needs
- The code, processes, and tools to develop and maintain the first
A software development project then tries to allocate resources fairly between the two.
The scale tilts to the first for one-off, short lived projects while strategic, long-term projects need to focus on the second.
The hard part is explaining to your customer why you need to allocate resources to the latter instead of the first.