"A Philosophy of Software Design" by Stanford's John Ousterhout is excellent. It is quite concise (about 190 pages), but in my opinion, it includes all the essential information that the other books in that category would teach you. It leaves out a lot of cruft that over the years turned out to be non-issues (code styling, problems that come with object oriented programming, etc.) but occasionally - when the topic is…
Maybe the only book that has actual made me a better programmer that I can objectively measure.