Books Our Developers Should Read

Republished from blog.iterate.no with the permission of my co-author, Morten Berg, and later updated.

There are a few books that every developer in Iterate should read because they express what we believe in and are extremely valuable in themselves. The books chosen are generally and broadly useful and not tied to some too limited domain (contrary to e.g. Effective Java). The list is kept as short as possible, about 4-5 books, and is revised regularly.

Why particularly these books, why lean and agile? Our people are primarily responsible for crafting solutions for our clients, for making sure that they use the customers' limited resources efficiently to produce the maximal business value possible. However, according to our experience, it is never truly known upfront where that value lies. Software development is therefore inherently a learning and exploration process. A process that needs to be continually adjusted based on empirical feedback from the reality and on shifting conditions. This is what lean is about: eliminating waste, maximizing value by maximizing learning, making sure that the right product is built. We value software craftmanship and building things right - but building the right things is crucial.

Here are the books and why we believe they are so important.

1. Implementing Lean Software Development: From Concept to Cash

Thin yet extremely rich book that is a perfect introduction into the lean thinking and its many sides. It's unbelievable how much valuable insights can fit into this book. It not only conveys why the lean approach is the only feasible one, but also how to implement it in practice.

2. Running Lean: Iterate from Plan A to a Plan That Works

Iterate believes that the Lean Startup methodology is the right way to foster innovation both in new and existing companies. And innovation is that what drives us forward and helps us survive in the ever more competitive market. Provided that you already have an idea of what lean startup is, then this book is the right one for you. Contrary to Eric Ries' "The Lean Startup", this book is very practical and introduces many ways how to do hypothesis testing in practice etc.

3. Clean Code: A Handbook of Agile Software Craftsmanship

The very essential book for every self-respecting software professional providing insights into what is good code and how to write it. It will change the way you code for the better. Everybody has heard that methods and classes should be small, do one thing, have self-explanatory names, be implemented in test-first fashion etc. This book explains all of it and explains why.

Keywords: Single responsibility principle, TDD, YAGNI, DRY

4. Working Effectively with Legacy Code

The bible of anybody working with legacy code (i.e. most code). Even some green field projects happen to create legacy code from the start and thus can benefit from it. But even non-legacy development would benefit from the refactoring and (emergent) design insights. The key topics of this book are refactoring and testing. Getting to know a complex code base, making it better, changing it safely. Though little older, it is still equally valuable. It introduces many methods, techniques, and approaches that every developer should have in his/her arsenal. Taster of the chapters: I Don't Understand the Code well Enough to Change It, My Application Has No Structure, This Class Is Too Big and I Don't Want It to Get Any Bigger.

It perhaps isn't necessary to read it cover-to-cover but it's important to be familiar with what is there so that when you are in a situation where you'd benefit from its wisdom, you know it is there and where to find it.

5. Agile in a Nutshell (original title Agile Product Ownership in a Nutshell)

Henrik Kniberg, 2012

Wow, that was 15 minutes well spent. It's like compressing all important knowledge into one sketch. - Pål

This 15 min video is the best explanation of the key aspects of the agile development process ever, and with a wonderful animation. It touches most of the main points in agile; not just the practices but the reasons why they are there. It visualizes the big picture, placing the individual aspects into the context. It is Scrum and Product Owner-centric but still very valuable in a broader context. We recommend to watch it after becoming familiar with lean/agile (f.ex. by reading From Concept to Cash) as it is a great summary and a self-test of understanding agile.

It discusses among other things building the right thing vs. building it right vs. building it fast, technical debt, focus on value instead of features, saying no to requests, the estimation conversation.

Closing Comments

Do you also have such a list in your company? Would you care to share it?