Most writing about software is stale in three years. These aren't. Each one is still the best available statement of the thing it's about, decades on in some cases. Read in order if you like: the list moves from what software is, to how people should build it, to how they should think.
Essential complexity vs accidental complexity. Every 'this changes everything' tool since has been arguing with this paper, and the paper keeps winning.
The 'radical novelty' argument: computers are not like anything before them, so analogies mislead. Prickly, unfair in places, and right about the main thing.
Three pages. A compiler that inserts a backdoor into itself, invisibly, forever. The founding text of supply-chain paranoia and still the cleanest statement of it.
Lists on Bindle are hand-picked links with a note on each. Every link is archived, so it stays readable even after the original page is gone. More lists
Written against the '...in 24 hours' books and quietly the best career advice in the field: deliberate practice, read other people's code, build things with people who are better than you.
Why rewriting from scratch is the single worst strategic mistake a software company makes. Netscape is the case study; the argument is general.
A talk, not an essay, but it earns its place. 'Simple' means un-braided, not familiar. Once you have the distinction you see complecting everywhere.
The best critique of how we teach and tool programming: you cannot understand what you cannot see. Every live-coding environment since is a partial answer to this page.
The whole tradition above, compressed into caveman-speak. 'Complexity very, very bad.' Funny on the first read; on the fifth you notice it's a complete philosophy of engineering.
All non-trivial abstractions leak. The reason you eventually have to understand the layer below, whatever the layer is.