Skip to content

Books Our Developers Should Read

19. August 2012

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

Mary and Tom Poppendieck, 2006 (amazon)

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.

Keywords: Eliminating waste, last responsible moment, sustainable cadence, build quality in

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

Ash Maurya, 2012 (amazon)

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.

Keywords: User centric, measuring, interviewing, eliminate waste by not creating what’s not worth creating, unknown solution

3. Clean Code: A Handbook of Agile Software Craftsmanship

Robert C. Martin (Uncle Bob), 2008 (amazon)

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

Michael Feathers, 2004 (amazon)

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.

Keywords: Technical debt, refactoring, testing, mocks/fakes, breaking dependencies, scratch refactoring, effect analysis, emergent design.

Closing Comments

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

Follow-Up

Some of the other books that the readers highly valued were Code Complete: A Practical Handbook of Software Construction and The Pragmatic Programmer: From Journeyman to Master. We will evaluate whether to add any of them or replace a book from the list.

12 Comments leave one →
  1. 22. August 2012 13:35

    Hi Morten,

    One of the best programming books I have read in my life is “LISP: A Gentle Introduction to Symoblic Computation” – while 99.9999% of us do not use LISP and will never use it, that book will teach you solid basics of programming in the a very light way

  2. 22. August 2012 03:45

    Continuous Delivery is a must must read for anyone related to software development. Its a Jolt award winner and certainly something that makes software development/delivery a different ball game. Highly recommended!

  3. 21. August 2012 18:13

    Thank to everybody for your recommendations!

  4. Mark permalink
    21. August 2012 11:00

    The title is misleading. A better title might have been “Books Every Agile Developer Should Read”. I find the Agile methods distasteful and lend themselves to wasted time having to redo a lot because time is spent in the short term and not looking to the overall design and architecture. Perhaps Agile fits nicely in certain projects, but I have yet to see one.

    • Morten Berg permalink*
      21. August 2012 12:19

      Thank you for the feedback. Yes, I agree that it can be a bit misleading out of context. This is our company blog, and as the first line of the post says, this is the list of books we recommend our developers to read. Being an “agile company” (if it is possible to say that), the books might fit best for the “agile developer”.

    • 21. August 2012 18:33

      Hi Mark, sorry for misleading you. As a compensation, I’d point you and other no-agile-crap developers to http://waterfall2006.com/. I hope you’ll have as much fun reading it as I did.

      (I don’t know any page about “how to fail with agile” though there is certainly enough material for it in the collective experience. People are great in failing with anything.)

      Best Regards, Jakub

  5. 20. August 2012 17:43

    The Pragmatic Programmer. It’s the one book I ask *everyone* to read.

    • Morten Berg permalink*
      21. August 2012 12:15

      Yeah, that was one of the first books I read when I started working as a software developer, and it really had an impact on me. We’ll see if we can make room for it on our next revision of the list!

  6. 20. August 2012 15:44

    I’ve been recommending “Team Geek” to just about everyone lately. It’s an excellent text that can get technically-minded people to better understand the importance of soft skills, and how to develop those soft skills into something meaningful — i.e., technical leadership and high-performance engineering teams.

    • Morten Berg permalink*
      21. August 2012 12:13

      I haven’t read “Team Geek”, but the description of the book looks interesting. Will look into that, thanks!

      • Charalampos Arapidis permalink
        22. August 2012 03:53

        Working effective with legacy code was of great help and inspiration , converting power builder – cough cough – code to j2ee web app. Thank you for the list, I appreciate the minimal style.

Trackbacks

  1. 敏捷开发者必读书籍[转载] | Edward Lu

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 87 other followers

%d bloggers like this: