All developers should need to read Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin.
If time prevents you from reading an entire book, then at least read this chapter: “17. Smells and Heuristics”.
One of my favourite bits of advice (that actually comes up a lot in discussions with the developers around me) is captured in this paragraph:
There is hardly anything more abominable than a dangling false argument at the end of a function call. What does it mean? What would it change if it were true? Not only is the purpose of a selector argument difficult to remember, each selector argument combines many functions into one. Selector arguments are just a lazy way to avoid splitting a large function into several smaller functions.
The book is filled with code examples, describes concepts rather than programming language idiosyncrasies, and is useful even for seasoned programmers.
Whatever language you code in (today), this book is likely to become a fixture on your desk for a very long time after you’ve finished reading it. Get the paperback version, and fill it with colourful post it notes.