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
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: books, software engineering, self improvement, developer education
Pingback: » Daily Dose of Links - 20071205 Alvin Ashcraft’s Daily Geek Bits: Daily links plus random ramblings about development, gadgets and raising rugrats.
Pingback: Philosophical Geek » 5 Attributes of Highly Effective Programmers
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
Isn’t the book “Beautifull Code” by Andy Oram and Greg Wilson a nice suggestion for your list?
@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!
You should add “How to solve it?” by G. Polya in your introductory section. A must read for every programmer.
Hi,
I have just recently gotten interested in programming and this list and your 5 attributes have helped me alot.
Thanks
Pingback: 10 Ways to Learn New Things in Development | Philosophical Geek
How can you recommend books that you have not read ?
Francis, Fair point, but I never indicated that I personally recommended every book. I explained the source of this list in the first paragraph.
Pingback: Adapting to Changes | Philosophical Geek
Pingback: My Interview Experience at Microsoft | Philosophical Geek
Pingback: ??????? » [Web] ????
Pingback: A Software Developer’s Reading List | Steve Wedig's Notes
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