Moseley and Marks "Out of the tar pit" is a nice essay / paper.
Ousterhout's "A Philosophy of Software Design" goes along the same vein, not an essay but a short book.
Both of these agree on something that I really relate with: the main thing to keep in mind in a software project is complexity.
Managing complexity to reduce cognitive load on programmers is something I always have in mind, it works not only within a codebase, but also across codebases that talk to each other through APIs, and even across software teams when considering their boundaries and modes of communication.
Ousterhout's "A Philosophy of Software Design" goes along the same vein, not an essay but a short book.
Both of these agree on something that I really relate with: the main thing to keep in mind in a software project is complexity.
Managing complexity to reduce cognitive load on programmers is something I always have in mind, it works not only within a codebase, but also across codebases that talk to each other through APIs, and even across software teams when considering their boundaries and modes of communication.