- Ousterhout, A Philosophy of Software Design
 
- Software Design by Example
 
- Foote & Yoder, Big Ball of Mud
 
- Martin, Clean Code
 
- Hunt & Thomas, The Pragmatic Programmer: From Journeyman to Master
 
- Brooks, The Mythical Man-Month
 
- Fowler, Patterns of Enterprise Application Architecture
 
- GoF, Design Patterns: Elements of Reusable Object-Oriented Software
 
- Martin, Clean Code: A Handbook of Agile Software Craftsmanship
 
- Beck & Fowler, Refactoring: Improving the Design of Existing Code
 
- Winters et al., Software Engineering at Google: Lessons Learned from Programming Over Time
 
- Software Design Approaches:
- Test-driven development (TDD)
 
- Behavior-driven development (BDD)
 
- Domain-driven design (DDD)
 
 
- Norman, The Design of Everyday Things
 
- Alexander, A Pattern Language: Towns, Buildings Construction
 
- Meadows, Thinking in Systems: A Primer
 
- Hermans, The Programmer's Brain: What every programmer needs to know about cognition
 
- Worse is better
 
- My 10 Years of Programming Experience
 
- Catalog of Dark Patterns
 
- Anti-patterns: