I do see writing software like writing a book.
I write it with the future reader in mind. It needs to be meant to be read.
I picture my colleagues or young engineers 20 years from now combing through my programs, learning the problem domain, learning the tradeoffs we made at the time and why it made sense.