Books I've found helpful or want to read soon
Before you get into it: I've sorted these to make them easier to browse, but I'm
not totally satisfied with the categories — they don't do the books
justice. So, take the headings with a grain of salt.
Books about how to structure your software
Building Evolutionary Architectures
How to build software that maintains its virtues as it grows and changes
Tackling Complexity in the Heart of Software
How to architect software to make that solves real problems and can
be adapted easily to solve new problems (by making it easy to
collaborate with non-technical domain experts).
Improving the Design of Existing Code
Detailed instructions and examples about how to change code without breaking it.
Elements of Reusable Object-Oriented Software
An inventory of ways to structure your code to solve certain technical
problems (including examples and notes on when to prefer one over the
Process & People
Books about software development process and how we collaborate
Software Design X-Rays
Fix Technical Debt with Behavioral Code Analysis
Uncovering coupling, pain-points, technical debt, who has what
expertise, team boundaries, and many other useful things using your
git repository, git commands, and bash.
Banish Waste and Create Wealth in Your Corporation
How to focus on the useful things and remove the useless things so you
can deliver more value more effectively. Many case studies.
Advice about professional attitudes and values that lead to healthy
and effective software development
The Practice of Creativity
A Manual for Dynamic Group Problem-Solving
How to run a really effective brainstorming session
Design & Planning
Books about how we decide what software to build
User Story Mapping
Discover the whole story, build the right product
An approach to eliciting, organizing, and collaborating on the details of what
the software should do without losing sight of the big picture. So much better than
a flat backlog in Jira.
How to measure project progress without estimating
Estimates help us plan because they help us answer several important questions.
This book presents an alternative method that is more effective and less effort
than traditional estimates.
Don’t Make Me Think!
A Common Sense Approach to Web Usability
Defensive Design for the Web
How to improve error messages, help, forms, and other crisis points
Algorithms in a Nutshell
A Desktop Quick Reference
Practical suggestions for writing performance-optimized software
Implementing Domain-Driven Design
Domain-Driven Design part two.
Want to Read
Reusable Object Models
Building a Culture of Freedom and Responsibility
The Lean Startup
How Today's Entrepreneurs Use Continuous Innovation to Create Radically Successful Businesses
Organizing Business and Technology Teams for Fast Flow
Living Documentation by design, with Domain-Driven Design
Accelerate Delivery Through Continuous Investment on Knowledge
Competing with Unicorns
How the World’s Best Companies Ship Software and Work Differently
Stop Running in Circles and Ship Work that Matters
A Collaborative Modeling Method
Waltzing with Bears
Managing Risk on Software Projects
Working Effectively with Legacy Code
Extreme Programming Explained
An Elegant Puzzle
Systems of Engineering Management