My metaphor for how software is actually created is Katamari Damacy (https://katamari.fandom.com/wiki/Katamari_Damacy): a giant ball of random objects that keep getting bigger, and more and more random crap just sticks to the ball. That's all there really is to it.
The metaphor can be refined; there are balls that grow well and balls that fall apart. You reminded me of the old quote from R1RS 1978 (https://dspace.mit.edu/handle/1721.1/6283) page 29:
> APL is like a diamond. It has a beautiful crystal structure; all of its parts are related in a uniform and elegant way. But if you try to extend this structure in any way — even by adding another diamond — you get an ugly kludge. LISP, on the other hand, is like a ball of mud. You can add any amount of mud to it [...] and it still looks like a ball of mud!