programming metaphor

in this post i will be describing a programming metaphor. i use it to explain to people outside it what does it mean to work as a software engineer. it proved itself useful and i do not recall seeing it anywhere else. here it is:

first, being a software engineer is a mix between being an architect and being a writer. most people can imagine what both architects' and writers' do. so the comparison like that is a good start.

architect part:

writer part:

this metaphor could also be used to explain version control:

> how to organize multiple people writing the same book at the same time?

or why software is never completed

> like if environment around your building is constantly changing, so you have to reinforce / adjust / extend parts to adjust