19 books
—
1 voter
Software Design Books
Showing 1-50 of 498
Design Patterns: Elements of Reusable Object-Oriented Software (Hardcover)
by (shelved 42 times as software-design)
avg rating 4.20 — 11,949 ratings — published 1994
Domain-Driven Design: Tackling Complexity in the Heart of Software (Hardcover)
by (shelved 42 times as software-design)
avg rating 4.15 — 5,808 ratings — published 2003
A Philosophy of Software Design (Paperback)
by (shelved 32 times as software-design)
avg rating 4.22 — 4,460 ratings — published 2018
Head First Design Patterns (Paperback)
by (shelved 27 times as software-design)
avg rating 4.30 — 9,013 ratings — published 2004
Clean Code: A Handbook of Agile Software Craftsmanship (Paperback)
by (shelved 26 times as software-design)
avg rating 4.35 — 23,410 ratings — published 2007
Refactoring: Improving the Design of Existing Code (Hardcover)
by (shelved 23 times as software-design)
avg rating 4.24 — 8,836 ratings — published 1999
Patterns of Enterprise Application Architecture (Hardcover)
by (shelved 22 times as software-design)
avg rating 4.12 — 3,888 ratings — published 2002
Designing Data-Intensive Applications (ebook)
by (shelved 21 times as software-design)
avg rating 4.70 — 10,547 ratings — published 2015
Code Complete: A Practical Handbook of Software Construction (Paperback)
by (shelved 17 times as software-design)
avg rating 4.30 — 9,481 ratings — published 1993
Clean Architecture (Paperback)
by (shelved 16 times as software-design)
avg rating 4.22 — 7,068 ratings — published 2017
Implementing Domain-Driven Design (Hardcover)
by (shelved 15 times as software-design)
avg rating 4.05 — 1,293 ratings — published 2013
Fundamentals of Software Architecture: An Engineering Approach (Paperback)
by (shelved 12 times as software-design)
avg rating 4.24 — 2,202 ratings — published 2020
Building Microservices: Designing Fine-Grained Systems (Paperback)
by (shelved 12 times as software-design)
avg rating 4.22 — 5,198 ratings — published 2014
Working Effectively with Legacy Code (Paperback)
by (shelved 12 times as software-design)
avg rating 4.14 — 4,678 ratings — published 2004
The Pragmatic Programmer: From Journeyman to Master (Paperback)
by (shelved 11 times as software-design)
avg rating 4.33 — 24,023 ratings — published 1999
Refactoring to Patterns (Hardcover)
by (shelved 11 times as software-design)
avg rating 4.05 — 1,440 ratings — published 2004
System Design Interview – An insider's guide (Kindle Edition)
by (shelved 9 times as software-design)
avg rating 4.26 — 3,305 ratings — published 2020
Domain-Driven Design Distilled (Paperback)
by (shelved 9 times as software-design)
avg rating 3.82 — 1,323 ratings — published
Agile Software Development, Principles, Patterns, and Practices (Hardcover)
by (shelved 9 times as software-design)
avg rating 4.25 — 1,316 ratings — published 2002
Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions (Hardcover)
by (shelved 9 times as software-design)
avg rating 4.12 — 1,547 ratings — published 2003
Learning Domain-Driven Design: Aligning Software Architecture and Business Strategy (Paperback)
by (shelved 8 times as software-design)
avg rating 4.43 — 727 ratings — published
Software Architecture: The Hard Parts: Modern Trade-Off Analyses for Distributed Architectures (Paperback)
by (shelved 7 times as software-design)
avg rating 4.26 — 831 ratings — published 2021
Patterns Principles and Practices of Domain Driven Design (Paperback)
by (shelved 7 times as software-design)
avg rating 4.37 — 390 ratings — published 2014
Growing Object-Oriented Software, Guided by Tests (Paperback)
by (shelved 7 times as software-design)
avg rating 4.19 — 2,464 ratings — published 2009
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,049 ratings — published 1997
Release It!: Design and Deploy Production-Ready Software (Pragmatic Programmers)
by (shelved 7 times as software-design)
avg rating 4.25 — 3,252 ratings — published 2007
Design of Design, The: Essays from a Computer Scientist (Paperback)
by (shelved 7 times as software-design)
avg rating 3.77 — 611 ratings — published 2010
Tidy First?: A Personal Exercise in Empirical Software Design (Paperback)
by (shelved 6 times as software-design)
avg rating 3.92 — 1,052 ratings — published
Object-Oriented Analysis and Design with Applications (Hardcover)
by (shelved 6 times as software-design)
avg rating 3.91 — 607 ratings — published 1990
Modern Software Engineering: Doing What Works to Build Better Software Faster (Paperback)
by (shelved 5 times as software-design)
avg rating 4.16 — 1,158 ratings — published
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 — 667 ratings — published
Building Evolutionary Architectures: Support Constant Change (Paperback)
by (shelved 5 times as software-design)
avg rating 3.75 — 1,057 ratings — published 2022
99 Bottles of OOP (ebook)
by (shelved 5 times as software-design)
avg rating 4.55 — 672 ratings — published
Dependency Injection in .NET (Paperback)
by (shelved 5 times as software-design)
avg rating 4.42 — 786 ratings — published 2011
Test-Driven Development: By Example (Paperback)
by (shelved 5 times as software-design)
avg rating 4.10 — 4,405 ratings — published 2002
UML Distilled: A Brief Guide to the Standard Object Modeling Language (Paperback)
by (shelved 5 times as software-design)
avg rating 3.80 — 1,516 ratings — published 1997
Agile Principles, Patterns, and Practices in C# (Hardcover)
by (shelved 5 times as software-design)
avg rating 4.28 — 774 ratings — published 2006
Practical API Design: Confessions of a Java Framework Architect (Hardcover)
by (shelved 4 times as software-design)
avg rating 3.72 — 64 ratings — published 2008
Software Engineering at Google: Lessons Learned from Programming Over Time (Paperback)
by (shelved 4 times as software-design)
avg rating 4.20 — 1,957 ratings — published 2020
Microservice Patterns (Paperback)
by (shelved 4 times as software-design)
avg rating 4.24 — 706 ratings — published
Software Design Decoded: 66 Ways Experts Think (Mit Press)
by (shelved 4 times as software-design)
avg rating 3.54 — 207 ratings — published
How to Design Programs: An Introduction to Programming and Computing (Hardcover)
by (shelved 4 times as software-design)
avg rating 4.03 — 270 ratings — published 2001
User Stories Applied: For Agile Software Development (Paperback)
by (shelved 4 times as software-design)
avg rating 3.89 — 2,856 ratings — published 2004
97 Things Every Software Architect Should Know (Paperback)
by (shelved 4 times as software-design)
avg rating 3.62 — 783 ratings — published 2009
Programming Pearls (Paperback)
by (shelved 4 times as software-design)
avg rating 4.20 — 3,220 ratings — published 1986
Thinking In Systems: A Primer (Paperback)
by (shelved 3 times as software-design)
avg rating 4.19 — 22,233 ratings — published 2008
Data-Oriented Programming Unlearning objects (Paperback)
by (shelved 3 times as software-design)
avg rating 3.68 — 81 ratings — published
The Essence of Software: Why Concepts Matter for Great Design (Kindle Edition)
by (shelved 3 times as software-design)
avg rating 4.21 — 73 ratings — published
System Design Interview – An Insider's Guide: Volume 2 (Paperback)
by (shelved 3 times as software-design)
avg rating 4.44 — 627 ratings — published
Managing Technical Debt: Reducing Friction in Software Development (SEI Series in Software Engineering)
by (shelved 3 times as software-design)
avg rating 3.65 — 43 ratings — published
“Software architecture is the set of design decisions which, if made incorrectly, may cause your project to be cancelled.”
―
―
“Inheritance has recently fallen out of favor as a programming design solution in many programming languages because it’s often at risk of sharing more code than necessary. Subclasses shouldn’t always share all characteristics of their parent class but will do so with inheritance. This can make a program’s design less flexible. It also introduces the possibility of calling methods on subclasses that don’t make sense or that cause errors because the methods don’t apply to the subclass. In addition, some languages will only allow a subclass to inherit from one class, further restricting the flexibility of a program’s design.
For these reasons, Rust takes a different approach, using trait objects instead of inheritance.”
― The Rust Programming Language
For these reasons, Rust takes a different approach, using trait objects instead of inheritance.”
― The Rust Programming Language












