Comment by asaiacai
John Ousterhout's "A Philosophy of Software Design" I liked. It was supposed to be assigned reading for Berkeley's data structures class CS61B, and I don't think I really internalized the lessons within, but after re-reading it recently, I appreciated it a lot more and found the material transcends how to write code but also how to architect things as well.