Influential books on software engineering
A curated reading list of influential books in software engineering, grouped by theme rather than ranked. It spans the timeless classics, algorithms and computer science, design and architecture, process and DevOps, and the craft and career side of the profession — so you can dive into whichever area you care about right now.
Classics & Foundations
- "The Mythical Man-Month" by Frederick P. Brooks Jr.
- "The Pragmatic Programmer" by Andrew Hunt and David Thomas.
- "Code Complete" by Steve McConnell.
- "Structure and Interpretation of Computer Programs" by Harold Abelson and Gerald Jay Sussman.
- "The Art of Computer Programming" by Donald E. Knuth.
- "The C Programming Language" by Brian W. Kernighan and Dennis M. Ritchie.
- "The Elements of Programming Style" by Brian W. Kernighan and P. J. Plauger.
- "Programming Pearls" by Jon Bentley.
- "No Silver Bullet: Essence and Accidents of Software Engineering" by Frederick P. Brooks Jr. (essay)
Algorithms, CS & Cryptography
- "Introduction to Algorithms" by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein.
- "Algorithms + Data Structures = Programs" by Niklaus Wirth.
- "Compilers: Principles, Techniques, and Tools" by Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman.
- "Applied Cryptography" by Bruce Schneier.
Design, Patterns & Refactoring
- "Clean Code: A Handbook of Agile Software Craftsmanship" by Robert C. Martin.
- "Design Patterns: Elements of Reusable Object-Oriented Software" by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides.
- "Refactoring: Improving the Design of Existing Code" by Martin Fowler.
- "Head First Design Patterns" by Eric Freeman, Bert Bates, Kathy Sierra, and Elisabeth Robson.
- "Working Effectively with Legacy Code" by Michael Feathers.
- "Test-Driven Development: By Example" by Kent Beck.
- "Object-Oriented Software Construction" by Bertrand Meyer.
- "Practical Object-Oriented Design in Ruby" by Sandi Metz.
- "A Philosophy of Software Design" by John Ousterhout.
Architecture & Systems
- "Patterns of Enterprise Application Architecture" by Martin Fowler.
- "Domain-Driven Design: Tackling Complexity in the Heart of Software" by Eric Evans.
- "Domain-Driven Design Distilled" by Vaughn Vernon.
- "Building Microservices: Designing Fine-Grained Systems" by Sam Newman.
- "Clean Architecture: A Craftsman's Guide to Software Structure and Design" by Robert C. Martin.
- "Designing Data-Intensive Applications" by Martin Kleppmann.
- "Release It!: Design and Deploy Production-Ready Software" by Michael T. Nygard.
Process, Agile & DevOps
- "Agile Software Development, Principles, Patterns, and Practices" by Robert C. Martin.
- "Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation" by Jez Humble and David Farley.
- "Extreme Programming Explained: Embrace Change" by Kent Beck.
- "The Phoenix Project: A Novel About IT, DevOps, and Helping Your Business Win" by Gene Kim, Kevin Behr, and George Spafford.
- "The Agile Samurai: How Agile Masters Deliver Great Software" by Jonathan Rasmusson.
- "The DevOps Handbook" by Gene Kim, Patrick Debois, John Willis, and Jez Humble.
- "Lean Software Development: An Agile Toolkit" by Mary Poppendieck and Tom Poppendieck.
- "Scrum: The Art of Doing Twice the Work in Half the Time" by Jeff Sutherland.
- "User Stories Applied: For Agile Software Development" by Mike Cohn.
- "Software Estimation: Demystifying the Black Art" by Steve McConnell.
- "Rapid Development: Taming Wild Software Schedules" by Steve McConnell.
- "Accelerate: The Science of Lean Software and DevOps" by Nicole Forsgren, Jez Humble, and Gene Kim.
Craft, Career & Teams
- "The Clean Coder: A Code of Conduct for Professional Programmers" by Robert C. Martin.
- "The Passionate Programmer: Creating a Remarkable Career in Software Development" by Chad Fowler.
- "Soft Skills: The Software Developer's Life Manual" by John Sonmez.
- "The Software Craftsman: Professionalism, Pragmatism, Pride" by Sandro Mancuso.
- "Peopleware: Productive Projects and Teams" by Tom DeMarco and Tim Lister.
Languages, Web & Product
- "Effective Java" by Joshua Bloch.
- "Effective Modern C++" by Scott Meyers.
- "JavaScript: The Good Parts" by Douglas Crockford.
- "You Don't Know JS" (series) by Kyle Simpson.
- "Cracking the Coding Interview" by Gayle Laakmann McDowell.
- "Don't Make Me Think: A Common Sense Approach to Web Usability" by Steve Krug.
- "The Inmates Are Running the Asylum: Why High Tech Products Drive Us Crazy and How to Restore the Sanity" by Alan Cooper.
- "The Lean Startup" by Eric Ries.