Here's an unorthodox, refreshing book by Stanford Professor John Ousterhout, inventor of the Tcl scripting language. The title is A Philosophy of Software Design, published in April 2018.
It's a slim book, yet dense with wisdom of many years of programming. What I liked most about the book was advice that rings true, yet contradicts what some other software experts seem to recommend. Though there are code examples, mostly the brief chapters stay at a high level.
Chapter two defines software complexity as anything related to the structure of a system which makes it hard to understand and modify the system. Our aim should be to reduce complexity. The remainder of the book drills down on this topic, with specific ideas on how we can design simpler systems.
Chapter four is especially interesting: it recommends that modules should be deep, not shallow, which is illustrated with figures. A deep module has a simple interface to the outside, and there is enough functionality in its methods to hide complexity.
There are many other recommendations in the book, not all of which typical readers of dev.to might agree with. Yet much of it will feel familiar and thought provoking.