Software Design Books

Showing 1-50 of 501
Design Patterns: Elements of Reusable Object-Oriented Software Design Patterns: Elements of Reusable Object-Oriented Software (Hardcover)
by (shelved 42 times as software-design)
avg rating 4.20 — 11,850 ratings — published 1994
Rate this book
Clear rating
Domain-Driven Design: Tackling Complexity in the Heart of Software Domain-Driven Design: Tackling Complexity in the Heart of Software (Hardcover)
by (shelved 41 times as software-design)
avg rating 4.15 — 5,752 ratings — published 2003
Rate this book
Clear rating
A Philosophy of Software Design A Philosophy of Software Design (Paperback)
by (shelved 31 times as software-design)
avg rating 4.22 — 4,218 ratings — published 2018
Rate this book
Clear rating
Head First Design Patterns Head First Design Patterns (Paperback)
by (shelved 26 times as software-design)
avg rating 4.30 — 8,951 ratings — published 2004
Rate this book
Clear rating
Clean Code: A Handbook of Agile Software Craftsmanship Clean Code: A Handbook of Agile Software Craftsmanship (Paperback)
by (shelved 25 times as software-design)
avg rating 4.36 — 23,079 ratings — published 2007
Rate this book
Clear rating
Refactoring: Improving the Design of Existing Code Refactoring: Improving the Design of Existing Code (Hardcover)
by (shelved 23 times as software-design)
avg rating 4.24 — 8,781 ratings — published 1999
Rate this book
Clear rating
Patterns of Enterprise Application Architecture Patterns of Enterprise Application Architecture (Hardcover)
by (shelved 21 times as software-design)
avg rating 4.12 — 3,865 ratings — published 2002
Rate this book
Clear rating
Designing Data-Intensive Applications Designing Data-Intensive Applications (ebook)
by (shelved 20 times as software-design)
avg rating 4.70 — 10,103 ratings — published 2015
Rate this book
Clear rating
Clean Architecture Clean Architecture (Paperback)
by (shelved 16 times as software-design)
avg rating 4.22 — 6,900 ratings — published 2017
Rate this book
Clear rating
Code Complete: A Practical Handbook of Software Construction Code Complete: A Practical Handbook of Software Construction (Paperback)
by (shelved 15 times as software-design)
avg rating 4.30 — 9,441 ratings — published 1993
Rate this book
Clear rating
Implementing Domain-Driven Design Implementing Domain-Driven Design (Hardcover)
by (shelved 14 times as software-design)
avg rating 4.05 — 1,278 ratings — published 2013
Rate this book
Clear rating
Fundamentals of Software Architecture: An Engineering Approach Fundamentals of Software Architecture: An Engineering Approach (Paperback)
by (shelved 12 times as software-design)
avg rating 4.26 — 2,085 ratings — published 2020
Rate this book
Clear rating
Working Effectively with Legacy Code Working Effectively with Legacy Code (Paperback)
by (shelved 11 times as software-design)
avg rating 4.14 — 4,648 ratings — published 2004
Rate this book
Clear rating
The Pragmatic Programmer: From Journeyman to Master The Pragmatic Programmer: From Journeyman to Master (Paperback)
by (shelved 10 times as software-design)
avg rating 4.33 — 23,628 ratings — published 1999
Rate this book
Clear rating
Building Microservices: Designing Fine-Grained Systems Building Microservices: Designing Fine-Grained Systems (Paperback)
by (shelved 10 times as software-design)
avg rating 4.22 — 5,130 ratings — published 2014
Rate this book
Clear rating
Refactoring to Patterns Refactoring to Patterns (Hardcover)
by (shelved 10 times as software-design)
avg rating 4.05 — 1,437 ratings — published 2004
Rate this book
Clear rating
System Design Interview – An insider's guide System Design Interview – An insider's guide (Kindle Edition)
by (shelved 9 times as software-design)
avg rating 4.27 — 3,097 ratings — published 2020
Rate this book
Clear rating
Domain-Driven Design Distilled Domain-Driven Design Distilled (Paperback)
by (shelved 9 times as software-design)
avg rating 3.82 — 1,303 ratings — published
Rate this book
Clear rating
Agile Software Development, Principles, Patterns, and Practices Agile Software Development, Principles, Patterns, and Practices (Hardcover)
by (shelved 9 times as software-design)
avg rating 4.25 — 1,312 ratings — published 2002
Rate this book
Clear rating
Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions (Hardcover)
by (shelved 9 times as software-design)
avg rating 4.12 — 1,542 ratings — published 2003
Rate this book
Clear rating
Learning Domain-Driven Design: Aligning Software Architecture and Business Strategy Learning Domain-Driven Design: Aligning Software Architecture and Business Strategy (Paperback)
by (shelved 8 times as software-design)
avg rating 4.44 — 665 ratings — published
Rate this book
Clear rating
Patterns Principles and Practices of Domain Driven Design Patterns Principles and Practices of Domain Driven Design (Paperback)
by (shelved 7 times as software-design)
avg rating 4.36 — 384 ratings — published 2014
Rate this book
Clear rating
Growing Object-Oriented Software, Guided by Tests Growing Object-Oriented Software, Guided by Tests (Paperback)
by (shelved 7 times as software-design)
avg rating 4.19 — 2,457 ratings — published 2009
Rate this book
Clear rating
Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development (Hardcover)
by (shelved 7 times as software-design)
avg rating 3.84 — 1,048 ratings — published 1997
Rate this book
Clear rating
Design of Design, The: Essays from a Computer Scientist Design of Design, The: Essays from a Computer Scientist (Paperback)
by (shelved 7 times as software-design)
avg rating 3.77 — 609 ratings — published 2010
Rate this book
Clear rating
Software Architecture: The Hard Parts: Modern Trade-Off Analyses for Distributed Architectures Software Architecture: The Hard Parts: Modern Trade-Off Analyses for Distributed Architectures (Paperback)
by (shelved 6 times as software-design)
avg rating 4.26 — 770 ratings — published 2021
Rate this book
Clear rating
Tidy First?: A Personal Exercise in Empirical Software Design Tidy First?: A Personal Exercise in Empirical Software Design (Paperback)
by (shelved 6 times as software-design)
avg rating 3.92 — 970 ratings — published
Rate this book
Clear rating
Object-Oriented Analysis and Design with Applications Object-Oriented Analysis and Design with Applications (Hardcover)
by (shelved 6 times as software-design)
avg rating 3.91 — 607 ratings — published 1990
Rate this book
Clear rating
Release It!: Design and Deploy Production-Ready Software (Pragmatic Programmers) Release It!: Design and Deploy Production-Ready Software (Pragmatic Programmers)
by (shelved 6 times as software-design)
avg rating 4.25 — 3,227 ratings — published 2007
Rate this book
Clear rating
Modern Software Engineering: Doing What Works to Build Better Software Faster Modern Software Engineering: Doing What Works to Build Better Software Faster (Paperback)
by (shelved 5 times as software-design)
avg rating 4.16 — 1,101 ratings — published
Rate this book
Clear rating
Domain Modeling Made Functional: Tackle Software Complexity with Domain-Driven Design and F# Domain Modeling Made Functional: Tackle Software Complexity with Domain-Driven Design and F# (Paperback)
by (shelved 5 times as software-design)
avg rating 4.49 — 661 ratings — published
Rate this book
Clear rating
99 Bottles of OOP 99 Bottles of OOP (ebook)
by (shelved 5 times as software-design)
avg rating 4.55 — 661 ratings — published
Rate this book
Clear rating
Dependency Injection in .NET Dependency Injection in .NET (Paperback)
by (shelved 5 times as software-design)
avg rating 4.43 — 777 ratings — published 2011
Rate this book
Clear rating
Test-Driven Development: By Example Test-Driven Development: By Example (Paperback)
by (shelved 5 times as software-design)
avg rating 4.10 — 4,377 ratings — published 2002
Rate this book
Clear rating
UML Distilled: A Brief Guide to the Standard Object Modeling Language UML Distilled: A Brief Guide to the Standard Object Modeling Language (Paperback)
by (shelved 5 times as software-design)
avg rating 3.80 — 1,511 ratings — published 1997
Rate this book
Clear rating
Agile Principles, Patterns, and Practices in C# Agile Principles, Patterns, and Practices in C# (Hardcover)
by (shelved 5 times as software-design)
avg rating 4.28 — 773 ratings — published 2006
Rate this book
Clear rating
Practical API Design: Confessions of a Java Framework Architect Practical API Design: Confessions of a Java Framework Architect (Hardcover)
by (shelved 4 times as software-design)
avg rating 3.72 — 65 ratings — published 2008
Rate this book
Clear rating
Software Design Decoded: 66 Ways Experts Think (Mit Press) Software Design Decoded: 66 Ways Experts Think (Mit Press)
by (shelved 4 times as software-design)
avg rating 3.54 — 205 ratings — published
Rate this book
Clear rating
User Stories Applied: For Agile Software Development User Stories Applied: For Agile Software Development (Paperback)
by (shelved 4 times as software-design)
avg rating 3.89 — 2,850 ratings — published 2004
Rate this book
Clear rating
97 Things Every Software Architect Should Know 97 Things Every Software Architect Should Know (Paperback)
by (shelved 4 times as software-design)
avg rating 3.62 — 780 ratings — published 2009
Rate this book
Clear rating
Thinking In Systems: A Primer Thinking In Systems: A Primer (Paperback)
by (shelved 3 times as software-design)
avg rating 4.19 — 21,110 ratings — published 2008
Rate this book
Clear rating
Data-Oriented Programming Unlearning objects Data-Oriented Programming Unlearning objects (Paperback)
by (shelved 3 times as software-design)
avg rating 3.69 — 80 ratings — published
Rate this book
Clear rating
The Essence of Software: Why Concepts Matter for Great Design The Essence of Software: Why Concepts Matter for Great Design (Kindle Edition)
by (shelved 3 times as software-design)
avg rating 4.21 — 71 ratings — published
Rate this book
Clear rating
System Design Interview – An Insider's Guide: Volume 2 System Design Interview – An Insider's Guide: Volume 2 (Paperback)
by (shelved 3 times as software-design)
avg rating 4.44 — 565 ratings — published
Rate this book
Clear rating
Software Engineering at Google: Lessons Learned from Programming Over Time Software Engineering at Google: Lessons Learned from Programming Over Time (Paperback)
by (shelved 3 times as software-design)
avg rating 4.20 — 1,903 ratings — published 2020
Rate this book
Clear rating
Managing Technical Debt: Reducing Friction in Software Development (SEI Series in Software Engineering) Managing Technical Debt: Reducing Friction in Software Development (SEI Series in Software Engineering)
by (shelved 3 times as software-design)
avg rating 3.60 — 43 ratings — published
Rate this book
Clear rating
Modern C++ Design: Generic Programming and Design Patterns Applied Modern C++ Design: Generic Programming and Design Patterns Applied (Paperback)
by (shelved 3 times as software-design)
avg rating 4.24 — 881 ratings — published 2001
Rate this book
Clear rating
Site Reliability Engineering: How Google Runs Production Systems Site Reliability Engineering: How Google Runs Production Systems (Paperback)
by (shelved 3 times as software-design)
avg rating 4.21 — 2,862 ratings — published 2016
Rate this book
Clear rating
Microservice Patterns Microservice Patterns (Paperback)
by (shelved 3 times as software-design)
avg rating 4.25 — 690 ratings — published
Rate this book
Clear rating
Refactoring for Software Design Smells: Managing Technical Debt Refactoring for Software Design Smells: Managing Technical Debt (Paperback)
by (shelved 3 times as software-design)
avg rating 3.82 — 33 ratings — published 2014
Rate this book
Clear rating


Bruce Eckel
“Programming is about managing complexity: the complexity of the problem, laid upon the complexity of the machine. Because of this complexity, most of our programming projects fail.”
Bruce Eckel, On Java 8

Edsger W. Dijkstra
“Let me try to explain to you, what to my taste is characteristic for all intelligent thinking. It is, that one is willing to study in depth an aspect of one's subject matter in isolation for the sake of its own consistency, all the time knowing that one is occupying oneself only with one of the aspects. We know that a program must be correct and we can study it from that viewpoint only; we also know that it should be efficient and we can study its efficiency on another day, so to speak. In another mood we may ask ourselves whether, and if so: why, the program is desirable. But nothing is gained—on the contrary!—by tackling these various aspects simultaneously. It is what I sometimes have called "the separation of concerns", which, even if not perfectly possible, is yet the only available technique for effective ordering of one's thoughts, that I know of. This is what I mean by "focusing one's attention upon some aspect": it does not mean ignoring the other aspects, it is just doing justice to the fact that from this aspect's point of view, the other is irrelevant. It is being one- and multiple-track minded simultaneously.”
Edsger W. Dijkstra, Selected Writings on Computing: A personal Perspective

More quotes...