The map is not the territory...
It's occurred to me recently that people are misled about what software development is. This is most obvious when they treat the code that has been written as an artefact.
This manifests itself in two main ways; beliefs about reuse and a refusal to delete code.
The reality is a lot harder to accept: the code documents a series of conversations and decisions made by the person/s writing the code. It tells the story of those of decisions and conversations.
Very often, to be able to amend or extend that code, you need to have understood those decisions. Good code makes it easy to follow the story. But it still requires time to step through those decisions, and it sometimes (when the code is not good) is about the same amount of time it would have taken to write the code from scratch.
The irrational desire to hold onto that code once it has been written means that code bases rarely if ever decrease in size over time. In fact, one of the metrics for seeing whether a code base is under control, is very often, does it decrease in size periodically as the code is refactored and thrown away. As the problem domain is better understood we should need less code. Code bases which increase in size generally accumulate accidental complexity.
The code is not the artefact. Small is beautiful.