- 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