Books are a neglected resource in the software development community. Programming books about specific languages often have a short lifespan because the technology evolves so quickly. Versions come and go, syntax is deprecated, paradigms shift.
Books provide a context and a depth of understanding that technical articles fail to offer. A great developer should have a deep understanding of the methodologies, principles, and best practices of software development.
The books I'm recommending are language agnostic, but may use code examples to illustrate their points. Topics range from code styling to project management to user interface design.
- Code Complete (2nd edition) by Steve McConnell
- Clean Code: A Handbook of Agile Software Craftsmanship by Robert Martin
- Design Patterns: Elements of Reusable Object-Oriented Software by the Gang of Four
- Refactoring: Improving the Design of Existing Code by Martin Fowler
- Working Effectively with Legacy Code by Michael Feathers
- The Pragmatic Programmer: From Journeyman to Master by Hunt & Thomas
- Don't Make Me Think by Steve Krug
- Peopleware: Productive Projects and Teams by DeMarco & Lister
- The Design of Everyday Things by Don Norman