Good Books for Software Developers to Read
As a software developer, there is always much to learn, and reading is one good way to learn new things. While formats other than paper books have some advantages, books are a traditional medium, and the usefulness of paper books is a topic of frequent discussion.
A Scientific American article says that books have advantages over screens, even given that e-ink is easier on the eyes than a computer or tablet screen. The piece says that “screens and e-readers interfere with two other important aspects of navigating texts: serendipity and a sense of control.” But whatever your medium of choice, reading is better than not reading.
In "7 Unconventional Reasons Why You Absolutely Should Be Reading Books" we learn some of the more tangential benefits of reading. Reading can help you relax, keep your brain sharp, empathize with others, sleep better, and, perhaps, even help with depression.
According to author Neil Gaiman, there is a lot of value in reading fiction, and any reading children do is good, regardless of the subject. With the benefits of reading in mind, I’d like to share some of the books that I have found valuable. This isn’t an exhaustive list, and it may well miss a few books people consider classics, but you probably know about them anyway. And most are available in both paper and e-book format.
Becoming a Technical Leader. The title says it all. This book by Gerald Weinberg has stories and advice to help you be a leader, regardless of your specific title or role.
Are Your Lights On? This is a short, entertaining book by Donald Gause and Gerald Weinberg that drives home the difference between “the problem you first see” and “the problem you have,” and how solving the right problem can not only be better but also easier.
The Secrets of Happy Families: Improve Your Mornings, Rethink Family Dinner, Fight Smarter, Go Out and Play, and Much More. Gerald Weinberg has often used concepts from Virginia Satir’s work in family therapy to talk about software teams. This book actually opens with a discussion of how to apply agile software development techniques to family life. It also describes many approaches to resolving conflict, some of which might be applicable to your team, in addition to perhaps being useful in your personal life.
The Art of Possibility. Scrum has been referred to as “the art of the possible,” and this book can help you to understand what it takes to see possibility in all sorts of adversity,
How Buildings Learn: What Happens After They’re Built. If you think refactoring is hard with software, think about the challenges that come with physical buildings. This is a fun book to read that also (probably accidentally) is full of metaphors about software development.
To Sell Is Human: The Surprising Truth About Moving Others. Reading this book brought to mind many of the things I learned reading Weinberg’s books on software quality. Dan Pink’s books bring together stories and practices that, while not about software per se, can be valuable when working on a software team.
The Zen of Listening. Agile teams need communication, and communication is more about how you listen than what you say.
The Timeless Way of Building and A Pattern Language: Towns, Buildings, Construction. If you think that Design Patterns was a useful book and you see possibilities in patterns, these books by Christopher Alexander will show you the ideas that inspired the software design patterns movement.
What are some of the books you’ve read that have inspired you to be a better software developer?