The Effective Software Developer’s Book List

What books should all serious developers read and study? This is a list of books that I have either found particularly helpful in my own growth as a programmer, or that are popular on various required-reading lists. I have bolded books I consider absolute required reading (probably multiple times) for all software developers.

I’ve gathered these books from multiple sources, beginning with Steve McConnell’s list in the back of Code Complete.

By the way, just because a book is listed in the Introductory section does not mean you shouldn’t read it because you’re advanced.

Why the Have I Read? column? To keep me honest, and to serve as my own checklist.

(Updated 11/28 – PeopleWare)
(Updated 12/7 – Design of Everyday Things)
(Updated 1/26 – Beautiful Code, Essay section)
(Updated 6/3 – Pragmatic Unit Testing in C# with NUnit)



Have I Read?

Code Complete: A Practical Handbook of Software Construction
Steve McConnell
Conceptual Blockbusting: A Guide to Better Ideas
James L. Adams
Programming Pearls (2nd Edition) (ACM Press)
Jon Bentley
Facts and Fallacies of Software Engineering
Robert Glass
The Pragmatic Programmer: From Journeyman to Master
Andrew Hunt and David Thomas
Object-Oriented Design Heuristics
Arther Riel
UML Distilled: A Brief Guide to the Standard Object Modeling Language (3rd Edition) (The Addison-Wesley Object Technology Series)
Martin Fowler
Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development (3rd Edition)
Craig Larman
Refactoring Workbook
William Wake
The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition (2nd Edition)
Frederick Brooks
Introduction to Algorithms
Thomas Cormen


Book Have I Read?
Software Configuration Management Patterns: Effective Teamwork, Practical Integration
Stephen Berczuk and Brad Appleton
Software Creativity 2.0
Robert Glass
Testing Computer Software, 2nd Edition
Cem Kaner, Jack Falk, Hung Q. Nguyen
Rapid Development
Steve McConnell
Software Requirements, Second Edition
Karl Wiegers
“Manager’s Handbook for Software Development” (PDF)
NASA Goddard Space Flight Center
Patterns of Enterprise Application Architecture (The Addison-Wesley Signature Series)
Martin Fowler
Test Driven Development: By Example (The Addison-Wesley Signature Series)
Kent Beck
Pragmatic Unit Testing in C# with NUnit, 2nd Edition
Andy Hunt, Dave Thomas, Matt Hargett
Refactoring to Patterns (The Addison-Wesley Signature Series)
Joshua Kerievsky
Head First Design Patterns (Head First)
Elisabeth Freeman, Eric Freeman, Bert Bates, Kathy Sierra
User Stories Applied: For Agile Software Development (The Addison-Wesley Signature Series)
Mike Cohn
Agile Principles, Patterns, and Practices in C# (Robert C. Martin Series)
Robert Martin
Applying Domain-Driven Design and Patterns: With Examples in C# and .NET
Jimmy Nilsson
Extreme Programming Explained: Embrace Change (2nd Edition) (The XP Series)
Kent Beck
The Design of Everyday Things
Donald A. Norman
Beautiful Code: Leading Programmers Explain How They Think  


Book Have I Read?
Software Architecture in Practice (2nd Edition) (The SEI Series in Software Engineering)
Len Bass, Paul Clements, and Rick Kazman
Refactoring: Improving the Design of Existing Code (The Addison-Wesley Object Technology Series)
Martin Fowler
Design Patterns: Elements of Reusable Object-Oriented Software (Addison-Wesley Professional Computing Series)
Eric Gamma, Richard Helm, Ralph Johnson, John Vlissides
Principles Of Software Engineering Management
Tom Gilb
Writing Solid Code
Steve Maguire
Domain-Driven Design: Tackling Complexity in the Heart of Software
Eric Evans
Working Effectively with Legacy Code (Robert C. Martin Series)
Michael Feathers
Agile Estimating and Planning (Robert C. Martin Series)
Mike Cohn
Lean Software Development: An Agile Toolkit (The Agile Software Development Series)
Mary Poppendieck and Tom Poppendieck
Implementing Lean Software Development: From Concept to Cash (The Addison-Wesley Signature Series)
Mary Poppendieck and Tom Poppendieck


Essay Have I Read?
Teach Yourself Programming in Ten Years
Peter Norvig
They Write the Right Stuff
Charles Fishman
The Humble Programmer
Edsger Dikstra


Book Have I Read?
Peopleware: Productive Projects and Teams
Tom DeMarco


Book Have I Read?
Microsoft Windows Internals, Fourth Edition: Microsoft Windows Server(TM) 2003, Windows XP, and Windows 2000 (Pro-Developer)
Mark Russinovich and David Solomon
Programming Windows, Fifth Edition
Charles Petzold
Programming Applications for Microsoft Windows
Jeff Richter
Programming Windows With MFC
Jeff Prosise


Book Have I Read?
Inside C#, Second Edition
Tom Archer and Andrew Whitechapel
CLR via C#, Second Edition (Pro Developer)
Jeff Richter

Technorati Tags: , , ,

15 thoughts on “The Effective Software Developer’s Book List

  1. Pingback: » Daily Dose of Links - 20071205 Alvin Ashcraft’s Daily Geek Bits: Daily links plus random ramblings about development, gadgets and raising rugrats.

  2. Pingback: Philosophical Geek » 5 Attributes of Highly Effective Programmers

  3. Johan

    I have read 2/3 of the books in your list. The introductory books from CC2 i definitively a must. The ones that have affected me most as a Software Engineer is Code Complete, Refactoring, UML Destilled, Applying UML and Patterns, Rapid Development and Peopleware. Robert Glass communicates with incredible clarity in his essays. Have a look at SWEBOK and IEEE CSDP certification. The devolopment ladder at construx is a great tool to start thinking about what way to go and how to get there. Peter Norvigs, Teach Yourself Programming in Ten Years, is a greate essay. The essay, They Write the Right Stuff, is epic. CMM level 5 was created to resemble their practices. And now when I’m on roll, The Humble Programmer, by Dijkstra is another timeless piece.

    All the best,

  4. pepethecow Post author

    @Johan and Petar–thank you for all of those suggestions.I have added them to the list.

    I am adding a section for essays–those are classic, and definitely must-reads.


  5. Sameer Rafiq

    You should add “How to solve it?” by G. Polya in your introductory section. A must read for every programmer.

  6. Greg

    I have just recently gotten interested in programming and this list and your 5 attributes have helped me alot.


  7. Pingback: 10 Ways to Learn New Things in Development | Philosophical Geek

  8. Ben Post author

    Francis, Fair point, but I never indicated that I personally recommended every book. I explained the source of this list in the first paragraph.

  9. Pingback: Adapting to Changes | Philosophical Geek

  10. Pingback: My Interview Experience at Microsoft | Philosophical Geek

  11. Pingback: ??????? » [Web] ????

  12. Pingback: A Software Developer’s Reading List | Steve Wedig's Notes

  13. Yogev Sitton

    One thing I’ve always wanted to do is read more software development books, but there‘s an endless list of “Must Read Books For Developers”. The list of lists of “Must Read Books For Developers” isn’t small either…

    I decided to do some digging and come up with as many lists as I could (18 lists were found) and make one “ultimate” list by ranking these books by number of appearances.

    This is one of the lists I used (it is also listed as a source) – thanks for the good work 🙂

Comments are closed.