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
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
- REST in Practice: Hypermedia and Systems Architecture
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
5 Comments
comments.show.hideJan 13, 2009
Per Spilling
"Design of everyday things" by Donald Norman is an excellent book about usability, but has nothing to do with software architecture and design, or did I miss something?
Jan 13, 2009
knutm
Do you then say that usability is not a very important topic when developing software? Certainly for the end-users, but also for software developers, maintainers and others involved in the code and architecture itself (think good design and mental models).
Jan 15, 2009
Per Spilling
I agree that it is an important book also for software developers, but I would categorize it under "Usabilty" or "Other". The books written by Alan Cooper, such as The inmates are running the asylum are even more relevant for software developers: http://www.cooper.com/insights/books/
Feb 12, 2009
Erik Drolshammer
Anyone read Beautiful Architecture
?
Apr 13, 2015
Erik Drolshammer
Tip from Totto on DevOps: https://github.com/stack72/ops-books