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)

Introductory

Book

Have I Read?

Code Complete: A Practical Handbook of Software Construction
Steve McConnell
Y
Conceptual Blockbusting: A Guide to Better Ideas
James L. Adams
 
Programming Pearls (2nd Edition) (ACM Press)
Jon Bentley
Y
Facts and Fallacies of Software Engineering
Robert Glass
 
The Pragmatic Programmer: From Journeyman to Master
Andrew Hunt and David Thomas
Y
Object-Oriented Design Heuristics
Arther Riel
Y
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
Y
Introduction to Algorithms
Thomas Cormen
 

Intermediate

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
Y
Pragmatic Unit Testing in C# with NUnit, 2nd Edition
Andy Hunt, Dave Thomas, Matt Hargett
Y
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
Y
Beautiful Code: Leading Programmers Explain How They Think  

Professional

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
Y
Design Patterns: Elements of Reusable Object-Oriented Software (Addison-Wesley Professional Computing Series)
Eric Gamma, Richard Helm, Ralph Johnson, John Vlissides
Y
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
 

Essays

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

Management

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

Windows

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
Y
Programming Windows, Fifth Edition
Charles Petzold
Y
Programming Applications for Microsoft Windows
Jeff Richter
Y
Programming Windows With MFC
Jeff Prosise
Y

.Net

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

Technorati Tags: , , ,


Check out my latest book, the essential, in-depth guide to performance for all .NET developers:

Writing High-Performance.NET Code, 2nd Edition by Ben Watson. Available for pre-order:

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

    Hi,
    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,
    Johan

  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.

    Thanks!

  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

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

    Thanks

  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 🙂

    https://medium.com/@YogevSitton/the-ultimate-reading-list-for-developers-e96c832d9687#.41r5ts1fw

Leave a Reply

Your email address will not be published. Required fields are marked *