Excellent Books
This page contains recommended readings for software developers. See also Articles worth reading and Potentially Excellent books containing new candidates for this list.
Architecture, patterns and programming skills
Architecture and Design
- Domain-driven Design: Tackling Complexity in the Heart of Software by Eric Evans
- Patterns of Enterprise Application Architecture by Martin Fowler
- Agile Software Development, Principles, Patterns, and Practices by Robert C. Martin
- Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions by Gregor Hohpe and Bobby Woolf
-
The Design of Everyday Things by Donald Norman
-
Beyond Software Architecture: Creating and Sustaining Winning Solutions by Luke Hohmann
Programming and code
- Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin
- The Pragmatic Programmer: From Journeyman to Master by Andrew Hunt and David Thomas
- Code Complete by Steve McConnell
- Refactoring: Improving the Design of Existing Code by Martin Fowler
- Design Patterns by the Gang of Four. It is not the best/easiest way to learn these patterns, but everyone should have read this book because of the influence it has had on software engineering.
- Beautiful Code: Leading Programmers Explain How They Think by Andy Oram and Greg Wilson
- REST
- REST in Practice: Hypermedia and Systems Architecture by Jim Webber, Savas Parastatidis and Ian Robinson.
- RESTful Web Services Cookbook by Subbu Allamaraju
- RESTful Web Services by Leonard Richardson, Mike Amundsen and Sam Ruby
Testing
- Next Generation Java Testing: TestNG and Advanced Concepts by Cédric Beust and Hani Suleiman
- Test Driven Development: By Example by Kent Beck
Database
- Database Systems: The Complete Book by Hector Garcia-Molina, Jeffrey D. Ullman, and Jennifer Widom
- Refactoring databases by Scott Ambler
Front-end
- You Don't Know JS, by Kyle Simpson
- Secrets of the JavaScript Ninja, by John Resig (man behind JQuery)
Technology specific
Java
- Effective Java by Joshua Bloch
- Java Concurrency in Practice by Brian Goetz
DevOps
- DevOps for Developers, Free e-book by Michael Huttermann
Process, methodology, softskills
Softskills
-
The Secrets of Consulting: A Guide to Giving and Getting Advice Successfully by Gerald M. Weinberg
-
Beyond Software Architecture: Creating and Sustaining Winning Solutions by Luke Hohmann - Characterizing the need for Product Management, as well as sane Architecutral skills. Lacking a bit of the new markets emerging. Still classic skills are very well covered.
People & Process for beginners
- Ship it! is a good introductory book for doing Agile in practice. It's not as technical as pragmatic programmer, more project/soft oriented.
- Scrum: The Art of Doing Twice the Work in Half the Time by Jeff Sutherland
People & Process advanced
- Practices of an Agile Developer by Venkat Subramaniam and Andy Hunt.
- Agile Estimating and Planning by Mike Cohn
- Lean Software Development by Mary & Tom Poppendieck
- Agile Software Development by Alistair Cockburn
People & Process classics
- Peopleware by Tom DeMarco
- The Mythical Man-Month by Frederick P. Brooks
Other
Computer history
- Tools for Thought by Howard Rheingold
Off-topic, but related books
- Zen And the Art of Motorcycle Maintenance by Robert M. Pirsig.
- The Dilbert Principle by Scott Adams. This is really an anti-pattern book on how not to to manage your team or company.
How to write text
- The Elements of Style, by Strunk and White
- Weinberg on Writing: The Fieldstone Method, by Gerald Weinberg