This article contains a top 100 of the best software engineering books.
I have created this list using four different criteria:
- number of Amazon reviews;
- average Amazon rating;
- number of Google hits;
- Jolt awards.
Please refer to the second part of this article to find out how the calculations were performed.
The Top 100 List
# | Author(s) / Title |
Year |
ISBN13 |
Jolt |
sum |
avg |
1 | Steve McConnellCode Complete: A Practical Handbook of Software Construction (2nd Edition) |
2004 |
978-0735619678 |
** |
243 |
4.72 |
2 | Elisabeth Freeman, etc.Head First Design Patterns |
2004 |
978-0596007126 |
** |
237 |
4.63 |
3 | Steve McConnellRapid Development |
2003 |
978-0072850604 |
** |
112 |
4.74 |
4 | Erich GammaDesign Patterns: Elements of Reusable Object-Oriented Software |
1994 |
978-0201633610 |
* |
244 |
4.55 |
5 | Bruce SchneierApplied Cryptography: Protocols, Algorithms, and Source Code (2nd Edition) |
1995 |
978-0471128458 |
* |
99 |
4.61 |
6 | Robert C. MartinAgile Software Development: Principles, Patterns and Practices |
2002 |
978-0135974445 |
** |
31 |
4.77 |
7 | Joel SpolskyJoel on Software |
2004 |
978-1590593899 |
* |
48 |
4.71 |
8 | Tom DeMarco, Timothy ListerPeopleware: Productive Projects and Teams (2nd Edition) |
1999 |
978-0932633439 |
|
76 |
4.79 |
9 | Frederick P. BrooksThe Mythical Man-Month, Anniversary Edition (2nd Edition) |
1995 |
978-0201835953 |
|
124 |
4.54 |
10 | Martin FowlerRefactoring: Improving the Design of Existing Code |
1999 |
978-0201485677 |
|
138 |
4.54 |
11 | Mike CohnAgile Estimating and Planning |
2005 |
978-0131479418 |
|
43 |
4.74 |
12 | Alistair CockburnWriting Effective Use Cases |
2000 |
978-0201702255 |
* |
45 |
4.62 |
13 | Bertrand MeyerObject-Oriented Software Construction (2nd Edition) |
2000 |
978-0136291558 |
** |
43 |
4.47 |
14 | Steve McConnellSoftware Estimation: Demystifying the Black Art |
2006 |
978-0735605350 |
* |
31 |
4.74 |
15 | Mike CohnUser Stories Applied: For Agile Software Development |
2004 |
978-0321205681 |
|
37 |
4.76 |
16 | Donald E. KnuthThe Art of Computer Programming, Volumes 1-3 Boxed Set (2nd Edition) |
1998 |
978-0201485417 |
|
109 |
4.39 |
17 | Martin FowlerPatterns of Enterprise Application Architecture |
2002 |
978-0321127426 |
* |
54 |
4.46 |
18 | Jeffrey FriedlMastering Regular Expressions |
2006 |
978-0596528126 |
|
122 |
4.48 |
19 | Andrew Hunt, David ThomasThe Pragmatic Programmer: From Journeyman to Master |
1999 |
978-0201616224 |
|
127 |
4.42 |
20 | Karl E. WiegersSoftware Requirements (2nd Edition) |
2003 |
978-0735618794 |
* |
44 |
4.48 |
21 | Craig LarmanApplying UML and Patterns (3rd Edition) |
2004 |
978-0131489066 |
|
178 |
4.37 |
22 | Alistair CockburnAgile Software Development: The Cooperative Game (2nd Edition) |
2006 |
978-0321482754 |
** |
28 |
4.46 |
23 | Gary McGrawSoftware Security: Building Security In |
2006 |
978-0321356703 |
|
19 |
4.95 |
24 | Gregor Hohpe, Bobby WoolfEnterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions |
2003 |
978-0321200686 |
|
31 |
4.74 |
25 | Tom DeMarcoThe Deadline: A Novel About Project Management |
1997 |
978-0932633392 |
* |
52 |
4.42 |
26 | Craig LarmanAgile and Iterative Development: A Manager's Guide |
2003 |
978-0131111554 |
|
46 |
4.52 |
27 | Eric A. Marks, Michael BellService-Oriented Architecture: A Planning and Implementation Guide for Business and Technology |
2006 |
978-0471768944 |
|
33 |
4.45 |
28 | Thomas H. Cormen, etc.Introduction to Algorithms, Second Edition |
2001 |
978-0070131514 |
|
167 |
4.08 |
29 | Thomas ErlService-Oriented Architecture: A Field Guide to Integrating XML and Web Services |
2004 |
978-0131428980 |
|
32 |
4.59 |
30 | Martin FowlerUML Distilled: A Brief Guide to the Standard Object Modeling Language (3rd Edition) |
2003 |
978-0321193681 |
* |
139 |
3.95 |
31 | Kent BeckExtreme Programming Explained: Embrace Change (2nd Edition) |
2004 |
978-0321278654 |
* |
126 |
3.98 |
32 | Alan Shalloway, James TrottDesign Patterns Explained: A New Perspective on Object-Oriented Design (2nd Edition) |
2004 |
978-0321247148 |
|
109 |
4.33 |
33 | Grady Booch, etc.Object-Oriented Analysis and Design with Applications (3rd Edition) |
2007 |
978-0201895513 |
** |
37 |
3.95 |
34 | Jim HighsmithAgile Project Management: Creating Innovative Products |
2004 |
978-0321219770 |
|
20 |
4.80 |
35 | Scott BerkunMaking Things Happen: Mastering Project Management |
2008 |
978-0596517717 |
|
55 |
4.53 |
36 | Jon BentleyProgramming Pearls (2nd Edition) |
1999 |
978-0201657883 |
|
28 |
4.50 |
37 | Paul Duvall, etc.Continuous Integration: Improving Software Quality and Reducing Risk |
2007 |
978-0321336385 |
** |
13 |
4.85 |
38 | Andrew Stellman, Jennifer GreeneApplied Software Project Management |
2005 |
978-0596009489 |
|
15 |
5.00 |
39 | Clemens SzyperskiComponent Software: Beyond Object-Oriented Programming |
1997 |
978-0201178883 |
** |
13 |
4.69 |
40 | Arthur J. RielObject-Oriented Design Heuristics |
1996 |
978-0201633856 |
|
27 |
4.78 |
41 | Thomas ErlSOA Principles of Service Design |
2007 |
978-0132344821 |
|
24 |
4.58 |
42 | Mary Poppendieck, Tom PoppendieckLean Software Development: An Agile Toolkit |
2003 |
978-0321150783 |
* |
35 |
4.57 |
43 | Ken SchwaberAgile Project Management with Scrum |
2004 |
978-0735619937 |
|
30 |
4.47 |
44 | Ken Schwaber, Mike BeedleAgile Software Development with Scrum |
2001 |
978-0130676344 |
|
35 |
4.51 |
45 | Joshua KerievskyRefactoring to Patterns |
2004 |
978-0321213358 |
* |
42 |
4.10 |
46 | Alistair CockburnCrystal Clear: A Human-Powered Methodology for Small Teams |
2004 |
978-0201699470 |
|
12 |
4.75 |
47 | Steve McConnellSoftware Project Survival Guide |
1997 |
978-1572316218 |
|
63 |
4.33 |
48 | Tom DeMarco, Timothy ListerWaltzing With Bears: Managing Risk on Software Projects |
2003 |
978-0932633606 |
** |
23 |
4.52 |
49 | Venkat Subramaniam, Andy HuntPractices of an Agile Developer: Working in the Real World |
2005 |
978-0974514086 |
* |
26 |
4.58 |
50 | Kathy SchwalbeInformation Technology Project Management |
2007 |
978-1423901457 |
|
27 |
4.63 |
51 | Randall HydeWrite Great Code: Volume 1: Understanding the Machine |
2004 |
978-1593270032 |
|
17 |
4.82 |
52 | Scott RosenbergDreaming in Code: Two Dozen Programmers, Three Years, 4,732 Bugs, and One Quest for Transcendent Software |
2007 |
978-1400082476 |
|
59 |
3.78 |
53 | Cem Kaner, etc.Lessons Learned in Software Testing |
2001 |
978-0471081128 |
|
35 |
4.54 |
54 | Andy Oram, Greg WilsonBeautiful Code: Leading Programmers Explain How They Think |
2007 |
978-0596510046 |
** |
27 |
3.81 |
55 | Luke HohmannBeyond Software Architecture: Creating and Sustaining Winning Solutions |
2003 |
978-0201775945 |
|
27 |
4.56 |
56 | Grady BoochUnified Modeling Language User Guide, The (2nd Edition) |
2005 |
978-0321267979 |
|
81 |
3.30 |
57 | Karl FogelProducing Open Source Software: How to Run a Successful Free Software Project |
2005 |
978-0596007591 |
* |
13 |
4.85 |
58 | Michael FeathersWorking Effectively with Legacy Code |
2004 |
978-0131177055 |
|
21 |
4.86 |
59 | Kent BeckTest Driven Development: By Example |
2002 |
978-0321146533 |
* |
27 |
4.11 |
60 | Per Kroll, Philippe KruchtenThe Rational Unified Process Made Easy: A Practitioner's Guide to the RUP |
2003 |
978-0321166098 |
|
14 |
4.79 |
61 | Thomas ErlService-Oriented Architecture: Concepts, Technology, and Design |
2005 |
978-0131858589 |
|
60 |
4.15 |
62 | Cem Kaner, etc.Testing Computer Software (2nd Edition) |
1999 |
978-0471358466 |
|
35 |
4.34 |
63 | Frank Buschmann, etc.Pattern-Oriented Software Architecture Volume 1: A System of Patterns |
1996 |
978-0471958697 |
* |
16 |
4.50 |
64 | Harold Abelson, Gerald Jay SussmanStructure and Interpretation of Computer Programs - 2nd Edition |
1996 |
978-0262011532 |
|
157 |
3.44 |
65 | Dan PiloneUML 2.0 in a Nutshell |
2005 |
978-0596007959 |
|
14 |
4.57 |
66 | Brett D. McLaughlin, etc.Head First Object-Oriented Analysis and Design |
2006 |
978-0596008673 |
** |
35 |
3.77 |
67 | Johanna RothmanManage It!: Your Guide to Modern, Pragmatic Project Management |
2007 |
978-0978739249 |
* |
7 |
5.00 |
68 | James Shore, Shane WardenThe Art of Agile Development |
2007 |
978-0596527679 |
|
11 |
4.64 |
69 | Brian W. Kernighan, Rob PikeThe Practice of Programming |
1999 |
978-0201615869 |
|
49 |
3.96 |
70 | Ron Jeffries, etc.Extreme Programming Installed |
2000 |
978-0201708424 |
|
31 |
4.35 |
71 | Scott W. Ambler, Pramodkumar J. SadalageRefactoring Databases: Evolutionary Database Design |
2006 |
978-0321293534 |
* |
19 |
4.42 |
72 | Jared Richardson, William GwaltneyShip it! A Practical Guide to Successful Software Projects |
2005 |
978-0974514048 |
|
24 |
4.46 |
73 | Greg Hoglund, Gary McGrawExploiting Software: How to Break Code |
2004 |
978-0201786958 |
|
27 |
4.41 |
74 | Michael NygardRelease It!: Design and Deploy Production-Ready Software |
2007 |
978-0978739218 |
* |
17 |
4.47 |
75 | Edward YourdonDeath March (2nd Edition) |
2003 |
978-0131436350 |
|
68 |
3.82 |
76 | Stephen P. Berczuk, etc.Software Configuration Management Patterns: Effective Teamwork, Practical Integration |
2003 |
978-0201741179 |
|
23 |
4.57 |
77 | Elfriede Dustin, etc.Automated Software Testing: Introduction, Management, and Performance |
1999 |
978-0201432879 |
|
40 |
4.55 |
78 | Donald C. Gause, Gerald M. WeinbergExploring Requirements: Quality Before Design |
1989 |
978-0932633132 |
|
25 |
4.72 |
79 | Tom GilbCompetitive Engineering |
2005 |
978-0750665070 |
|
13 |
4.92 |
80 | David J. AgansDebugging |
2006 |
978-0814474570 |
|
15 |
4.80 |
81 | Eldad EilamReversing: Secrets of Reverse Engineering |
2005 |
978-0764574818 |
|
14 |
4.64 |
82 | Robert L. GlassFacts and Fallacies of Software Engineering |
2002 |
978-0321117427 |
|
23 |
4.30 |
83 | Martin FowlerAnalysis Patterns: Reusable Object Models |
1996 |
978-0201895421 |
|
15 |
4.40 |
84 | Matt WeisfeldThe Object-Oriented Thought Process (2nd Edition) |
2003 |
978-0672326110 |
|
42 |
4.07 |
85 | John M. VlissidesPattern Hatching: Design Patterns Applied |
1998 |
978-0201432930 |
|
25 |
4.68 |
86 | Johanna RothmanBehind Closed Doors: Secrets of Great Management |
2005 |
978-0976694021 |
|
24 |
4.38 |
87 | Robert K. WysockiEffective Project Management: Traditional, Adaptive, Extreme |
2006 |
978-0470042618 |
|
26 |
4.35 |
88 | Ellen GottesdienerRequirements by Collaboration: Workshops for Defining Needs |
2002 |
978-0201786064 |
|
14 |
5.00 |
89 | Eric EvansDomain-Driven Design: Tackling Complexity in the Heart of Software |
2003 |
978-0321125217 |
|
42 |
4.24 |
90 | Nick Rozanski, Eóin WoodsSoftware Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives |
2005 |
978-0321112293 |
|
12 |
5.00 |
91 | Peter Rob, Carlos CoronelDatabase Systems: Design, Implementation, and Management (8th Edition) |
2006 |
978-1418835934 |
|
27 |
3.37 |
92 | Robert Orfali, etc.Client/Server Survival Guide (3rd Edition) |
1999 |
978-0471316152 |
|
43 |
4.40 |
93 | Douglas Schmidt, etc.Pattern-Oriented Software Architecture Volume 2: Patterns for Concurrent and Networked Objects |
2000 |
978-0471606956 |
|
21 |
4.33 |
94 | Michael LoppManaging Humans: Biting and Humorous Tales of a Software Engineering Manager |
2007 |
978-1590598443 |
|
21 |
4.29 |
95 | Paul GrahamHackers and Painters: Big Ideas from the Computer Age |
2004 |
978-0596006624 |
|
55 |
4.07 |
96 | Philippe KruchtenThe Rational Unified Process: An Introduction (3rd Edition) |
2003 |
978-0321197702 |
|
34 |
3.91 |
97 | Joel SpolskyThe Best Software Writing I: Selected and Introduced by Joel Spolsky |
2005 |
978-1590595008 |
|
22 |
4.14 |
98 | James O. Coplien, Neil B. HarrisonOrganizational Patterns of Agile Software Development |
2004 |
978-0131467408 |
|
13 |
5.00 |
99 | Esther Derby, etc.Agile Retrospectives: Making Good Teams Great |
2006 |
978-0977616640 |
|
17 |
4.53 |
100 | Henry S. WarrenHacker's Delight |
2002 |
978-0201914658 |
|
13 |
5.00 |
Legend
Year |
= Year of Publication |
Jolt ** |
= Jolt Winner |
Jolt * |
= Jolt Productivity Award |
sum |
= Number of reviews on Amazon |
avg |
= Average rating on Amazon |
Scope of this List
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 for this is that I had to limit the scope (or I would never be able to finish it).
I also excluded all books that dealt with specific technologies, such as Java, .NET, Ruby and PHP. I was only interested in the potentially timeless software engineering classics. In my opinion, technology books do not fall into that category. 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 there is no generic PMP-related material 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 feature. And that's how I finally ended up with a list of 250 books.
Note: in case of multiple editions of the same book, only the most recent edition is listed on the chart, though reviews and ratings were combined for all available editions.
Doing the Calculations
When 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.
Note: this little project was performed in the first week of June, 2008. Current Amazon reviews and ratings might have changed since then.
I admit that the system I used has no scientific basis. Nevertheless, I think the results are quite interesting, and I'm sure the 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 your way down. It shouldn't take you more than a couple of years…
Comments
Let's walk down the list and see what entries are worth pointing out...
First of all, it is obvious that
Steve McConnell is the biggest hero among software engineers. (Well, at least among the
reading part of the software engineering population...) Steve has no less than
four entries on the list:
Rapid Development (#3),
Software Estimation (#14),
Software Project Survival Guide (#47), and of course the
Best Software Engineering Book Ever...
Code Complete (#1). Congratulations to Steve for this stellar achievement!
There's only
one other author with four entries on the Top 100 list. It's
Martin Fowler, with
Refactoring (#10),
Patterns of Enterprise Application Architecture (#17),
UML Distilled (#30) and
Analysis Patterns (#83). And next in line is
Alistair Cockburn, with
three titles:
Writing Effective Use Cases (#12),
Agile Software Development (#22) and
Crystal Clear (#46). It seems you cannot go wrong reading just about any of the books these guys are delivering!
After creating the top 100 list, one thing that immediately grabbed my attention was the
#2 position for
Head First Design Patterns, by
Elisabeth Freeman, etc. The book ended two notches
higher than the original (and more famous)
Design Patterns (#4) by the
Gang of Four (Erick Gamma, etc.) Several people had already informed me that Freeman's book is actually more readable than the classic one by the GoF. And now the Top 100 list seems to indicate that this is indeed the general public opinion. Freeman's book has a higher average rating on Amazon, and it was a
Jolt Winner on top of that.
The best
agile software development book is
Agile Software Development: Principles, Patterns and Practices (#6), by
Robert C. Martin. There are no less than
20 books on agile software development on the Top 100 list. It's obvious that no other topic has been so hot as the "agile" meme in the last decennium.
I would like to mention that I had a tough time deciding whether or not
Mastering Regular Expressions (#18), by
Jeffrey Friedl, actually belonged on the Top 100 list. I told you before that the list is about software engineering topics, and not about specific technologies. However, the book simply kept popping up in numerous searches and references. And I considered that regular expressions are actually not a technology but an (interpreted or compiled) technique or notation, just like UML, and useful for any software engineer, regardless of the type of application. So I relented, and Jeffrey got his #18 slot on the list.
For books with different editions I simply added the reviews and ratings for each edition, and used the last edition as the only Top 100 entry.
Scott Berkun, the author of
Making Things Happen (#35) was lucky that I knew that the previous edition of his book had a
different name: The Art of Project Management. He wouldn't have ended so high if I had not been able to catch that essential piece of information.
One book that deserves a special treatment is
Dreaming in Code (#52), by
Scott Rosenberg. It was released in 2007 (first edition) and it has already scored Amazon 59 reviews.
And another newcomer that's worth point out is
Manage It! (#67), by
Johanna Rothman. Johanna's relatively new book still had only seven reviews on Amazon (at the time of calculation), but she scored a perfect 5.0 rating, and she added a Jolt award on top of that! Her book is the highest on the list with such a small crowd of enthusiastic supporters, and an almost perfect score for quality.
Speaking of Jolt awards, the top 7 books on the list all have received such an award. The highest entry on the list that did
not receive a Jolt award is
Peopleware (#8), by
Tom DeMarco and
Timothy Lister. The book is one of the highest rated books ever, and I'm sure that the Jolt jury regrets not having awarded Tom and Tim for their little (but visionary) masterpiece.
At the other side of the scale we find
The Unified Modeling Language User Guide (#56), by
Grady Booch. Of all the books on the Top 100 list, this one has the lowest average Amazon rating (3.30). But it is compensated by a large number of reviews (81) and a huge number of Google hits. It's a nice example of a book having popularity winning over quality.
Last of all, I think there's no better way of ending this post than including a reference to
Hacker's Delight (#100), by
Henry S. Warren. It seems like a nice book to close the list at the bottom. I had never heard of the book myself, but seeing that it has a perfect Amazon rating of 5.0 I'm sure that it's worth checking out.
Happy reading!
p.s. If you want to receive a nicely formatted Word-document of the list, you may email the author about it!
This article was originally published as a blog post at http://www.noop.nl/. The original post will not be kept up-to-date. All future updates will be made in this Knol.
http://knol.google.com/k/jurgen-appelo/top-100-best-software-engineering-books#
No comments:
Post a Comment