Top 100 Best Software Engineering Books, Ever
Ladies and gentlemen...
In this post I proudly present the Top 100 of Best Software Engineering Books, Ever. I have created this list using four different criteria: 1) number of Amazon reviews, 2) average Amazon rating, 3) number of Google hits and 4) Jolt awards. Please refer to the bottom of this post to find out how I performed the calculations, how to receive the full top 100 list in PDF MS Word, and why that obscure and silly little publication of yours has not made it on my list.
1 Steve McConnell
Code Complete: A Practical Handbook of Software Construction
2 Elisabeth Freeman, etc.
Head First Design Patterns
3 Steve McConnell
6 Robert C. Martin
Agile Software Development: Principles, Patterns and Practices
7 Joel Spolsky
Joel on Software
8 Tom DeMarco, Timothy Lister
Peopleware: Productive Projects and Teams (2nd Edition)
9 Frederick P. Brooks
The Mythical Man-Month, Anniversary Edition (2nd Edition)
10 Martin Fowler
Refactoring: Improving the Design of Existing Code
11 Mike Cohn
Agile Estimating and Planning
12 Alistair Cockburn
Writing Effective Use Cases
13 Bertrand Meyer
Object-Oriented Software Construction (2nd Edition)
14 Steve McConnell
Software Estimation: Demystifying the Black Art
17 Martin Fowler
Patterns of Enterprise Application Architecture
18 Jeffrey Friedl
Mastering Regular Expressions
19 Andrew Hunt, David Thomas
The Pragmatic Programmer: From Journeyman to Master
20 Karl E. Wiegers
Software Requirements (2nd Edition)
21 Craig Larman
Applying UML and Patterns (3rd Edition)
22 Alistair Cockburn
Agile Software Development: The Cooperative Game (2nd Edition)
23 Gary McGraw
Software Security: Building Security In
24 Gregor Hohpe, Bobby Woolf
Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions
25 Tom DeMarco
The Deadline: A Novel About Project Management
26 Craig Larman
Agile and Iterative Development: A Manager's Guide
27 Eric A. Marks, Michael Bell
Service-Oriented Architecture: A Planning and Implementation Guide for Business and Technology
28 Thomas H. Cormen, etc.
Introduction to Algorithms, Second Edition
32 Alan Shalloway, James Trott
Design Patterns Explained: A New Perspective on Object-Oriented Design (2nd Edition)
33 Grady Booch, etc.
Object-Oriented Analysis and Design with Applications (3rd Edition)
34 Jim Highsmith
Agile Project Management: Creating Innovative Products
35 Scott Berkun
Making Things Happen: Mastering Project Management
36 Jon Bentley
Programming Pearls (2nd Edition)
37 Paul Duvall, etc.
Continuous Integration: Improving Software Quality and Reducing Risk
38 Andrew Stellman, Jennifer Greene
Applied Software Project Management
39 Clemens Szyperski
Component Software: Beyond Object-Oriented Programming
40 Arthur J. Riel
Object-Oriented Design Heuristics
41 Thomas Erl
SOA Principles of Service Design
42 Mary Poppendieck, Tom Poppendieck
Lean Software Development: An Agile Toolkit
43 Ken Schwaber
Agile Project Management with Scrum
44 Ken Schwaber, Mike Beedle
Agile Software Development with Scrum
45 Joshua Kerievsky
Refactoring to Patterns
46 Alistair Cockburn
Crystal Clear: A Human-Powered Methodology for Small Teams
47 Steve McConnell
Software Project Survival Guide
48 Tom DeMarco, Timothy Lister
Waltzing With Bears: Managing Risk on Software Projects
49 Venkat Subramaniam, Andy Hunt
Practices of an Agile Developer: Working in the Real World
50 Kathy Schwalbe
Information Technology Project Management
51 Randall Hyde
Write Great Code: Volume 1: Understanding the Machine
53 Cem Kaner, etc.
Lessons Learned in Software Testing
54 Andy Oram, Greg Wilson
Beautiful Code: Leading Programmers Explain How They Think
56 Grady Booch
Unified Modeling Language User Guide, The (2nd Edition)
58 Michael Feathers
Working Effectively with Legacy Code
59 Kent Beck
Test Driven Development: By Example
60 Per Kroll, Philippe Kruchten
The Rational Unified Process Made Easy: A Practitioner's Guide to the RUP
62 Cem Kaner, etc.
Testing Computer Software (2nd Edition)
63 Frank Buschmann, etc.
Pattern-Oriented Software Architecture Volume 1: A System of Patterns
64 Harold Abelson, Gerald Jay Sussman
Structure and Interpretation of Computer Programs - 2nd Edition
65 Dan Pilone
UML 2.0 in a Nutshell
66 Brett D. McLaughlin, etc.
Head First Object-Oriented Analysis and Design
67 Johanna Rothman
Manage It!: Your Guide to Modern, Pragmatic Project Management
68 JamesShore, Shane Warden
The Art of Agile Development
69 Brian W. Kernighan, Rob Pike
The Practice of Programming
70 Ron Jeffries, etc.
Extreme Programming Installed
71 Scott W. Ambler, Pramodkumar J. Sadalage
Refactoring Databases: Evolutionary Database Design
72 Jared Richardson, William Gwaltney
Ship it! A Practical Guide to Successful Software Projects
73 Greg Hoglund, Gary McGraw
Exploiting Software: How to Break Code
74 Michael Nygard
Release It!: Design and Deploy Production-Ready Software
75 Edward Yourdon
Death March (2nd Edition)
Alright, I tricked you. Shame on me! The remaining 25 positions of the list are only available when you request the full PDF MS Word version. Don't worry, it's free! See below...
Scope of the Project
For this Top 100 list I have included only books covering subjects found in the Software Engineering Body of Knowledge (SWEBOK). This means that I have left out books with main topics such as web design, computer science, business management and system administration. The main reason being that I had to limit the scope, or I would never be able to finish the bloody thing. It means you will not find classics such as About Face, Don't Make Me Think!, Machine Learning, Neural Networks, Business Dynamics, Data Mining, Secrets and Lies and Hacking. (Sorry people, maybe some other idiot with time on his hands wants to pick that up...)
I also excluded all books that dealt with specific technologies, such as Java, .NET, Ruby, PHP, and BoogieWoogie 3.1. I was only interested in the potentially timeless software engineering classics. Technology books don't fall into that category. And I did include books on project management (as project management is one of the competences in SWEBOK) but only when those books explicitly dealt with managing software development. (That's why you won't see any generic PMP-related stuff on the list.)
Finding the Books
To find all these potentially timeless classics, I checked the best-selling books in these five Amazon categories:
Books > Computers & Internet > Computer Science > Software Engineering
Books > Computers & Internet > Computer Science > System Analysis & Design
Books > Computers & Internet > Programming > Algorithms
Books > Computers & Internet > Programming > Software Design, Testing & Engineering
Books > Computers & Internet > Project Management
After I found all best-selling software engineering books, I subsequently found many other books through the "Customers Who Bought This Item Also Bought" cross-reference thingy. That's how I finally ended up with a list of 250 books, and a headache the size of one of Jupiter's moons.
Doing the Calculations
Then it was time to do the calculations. I checked the number of customer reviews on Amazon, and I ranked the books according to these numbers (= a measure of quantity). I also calculated the average Amazon ratings, and I ranked the books according to these ratings (= a measure of quality). I then checked the number of Google hits for each of the books, and I ranked them accordingly (= a measure of popularity). Finally, I took the three rankings, added extra points for all winners of Jolt awards, and then re-calculated it into a final ranking. This resulted in the list you now have before you.
I can guarantee that the system I used is scientifically incorrect and artistically atrocious! Nevertheless, the results are quite interesting, and I'm sure this list can be of great help if you want to broaden your knowledge of the field of software engineering, in all its exciting dimensions. I suggest you start with number 1, and then slowly work you way down. It shouldn't take you more than a couple of years.
Now, I'm sure you will understand that the creation of this list cost me many hours of work, some sleepless nights, and a couple of broken relationships. If you think the list is interesting, or even valuable, then I suggest you digg, stumble and bookmark the hell out of it! This is the first time I honestly think I deserve it. On the other hand, if you don't like the outcome, and you've got something to complain about, don't hesitate to let me know. I'll do my best to think of some innovative ways of ignoring you.
Furthermore, if you want to receive a PDF MS Word version with the full Top 100 list, including ISBN-numbers, release dates, Amazon ratings and Jolt awards, then you can send me an email and simply ask for it. I like getting email. And it will help your request tremendously if you told me that you've subscribed to my blog/feed. And don't you dare lying about it! I'll be monitoring the feed statistics actively, so I know it when you people are playing me false.
(Oh, and please allow me at least 24 hours to reply to your mail. I might be trying to recover from the hours of sleep I lost...)
Thanks for your feedback, and happy reading!