The Way of the Web Tester

Jonathan Rasmusson (2016)

Ever wanted to learn how to write automated tests? This book will show you how. Perfect for testers and developers looking for a gentle introduction to the world of automated web testing, The Way of the Web Tester gives you everything you need to to start writing your own automated tests. Chalked full of real life examples, we cover all the various kinds of automated tests, how to organize them, tips on programming, as well as how to coordinate all this effort as a team.

The Agile Samurai

Jonathan Rasmusson (2010)

In 2006 I got tired of going into organizations and saying 'Here. Read these 7 books and then we can start doing Agile.' Samurai is my attempt distill and to present Agile in it's simplest terms, showing people how simple it can be, while giving them everything they need to successfully setup and execute their own Agile project, including some practices we invented ourselves at ThoughtWorks (like the Inception Deck). If you are new to Agile, this is a good place to start.

Extreme Programming IEEE Paper

Kent Beck (1999)

The original Extreme Programming (XP) paper. Published in October 1999 (long before the word ‘Agile’ had even been coined) it introduced the world to a radically new way of delivering software. User stories. Small releases. Test first programming. Continuous integration. Pair programming. It’s all here. If you want to see where it all began this is a good place to start.

Extreme Programming Explained: Embrace Change

Kent Beck (1999)

Expanding on the paper, the original XP book introduced us to many of the delivery practices we take for granted today. Automated unit tests. Continuous integration. Evolutionary design. A mindset of production readiness. Putting minimal systems into production quickly and growing them incrementally over time.

This book had a big influence me and I still find myself reaching for it to this day.

Planning Extreme Programming

Kent Beck, Martin Fowler (2000)

The first real Agile planning book, this book introduced the concept Iteration Planning, Release Planning, stand-up meetings, yesterday’s weather, “Driving” as a metaphor for software development, the four variables of project planning (cost, quality, time, and scope), as well as tips on story writing, estimation, and how to create your first Agile plan.

A great book for learning how to plan the Agile way.

Extreme Programming Installed

Ron Jeffries, Chet Hendrickson, Ann Anderson (2000)

Often referred to as ‘The Pink book’ Installed was written by members of the original C3 team where Kent pioneered XP. Chalked full of great examples, this book expands on XP concepts like the onsite customer, defining requirements as user stories, how to deliver small and frequent releases, continuous integration, handling defects, and working with on-site customers.

Refactoring: Improving the Design of Existing Code

Martin Fowler (1999)

Refactoring is about improving the design of existing code. It is the process of changing a software system in such a way that it does not alter the external behavior of the code, yet improves its internal structure. With refactoring you can even take a bad design and rework it into a good one. This book offers a thorough discussion of the principles of refactoring, including where to spot opportunities for refactoring, and how to set up the required tests. There is also a catalog of more than 40 proven refactorings with details as to when and why to use the refactoring, step by step instructions for implementing it, and an example illustrating how it works The book is written using Java as its principle language, but the ideas are applicable to any OO language.

User Stories Applied: For Agile Software Development

Mike Cohn (2004)

User stories are one of the main tenets of Extreme Programming. In simple terms, user stories are like use cases (but not really). Mike's book was big when it first came out because user stories were a completely different way of gathering requirements and Mike's book answered a lot of these questions showing people how user stories worked.

Agile Estimating and Planning

Mike Cohn (2005)

As early adopters became more familiar with Agile, practitioners became more adept at explaining the nuances of how Agile estimation and planning worked. Expanding on the work of Beck and Fowler, Mike's 2nd book dove deeper into Agile planning and estimating, covering topics like story points, ideal days, techniques for estimating, re-estimating, and buffering for uncertainty.

Test Driven Development: By Example

Kent Beck (2002)

XP was controversial when it came out because it proposed some really crazy ideas. One of them was writing the tests first. This book shares Kent's vision and philosophy about why developers might want to test first as well as giving them the tools and mindset for how they might go a about it. An excellent book, revolutionary for it's time. A real game changer in terms of how thousands of developers today write software. Great read.

Domain-Driven Design: Tackling Complexity in the Heart of Software

Eric Evans (2003)

Unit testing, Test Driven-Design, Refactoring, and Continuous Integration are what I call four essential Agile software engineering practices. If I had to choose a 5th it would be Domain Driven Design. The concept is simple. Use the same words in your code that your customers uses in the language to describe the business. If you don't you run into all sorts of trouble. This book however is so much more. It contains great patterns, examples, and ideas for how to handle complexity across the enterprise. It's a thick book. But well worth the read.

Lean Software Development

Tom and Mary Poppendieck (2003)

While XP and Agile started making a lot of noise at the turn of the century, Tom and Mary mixed things up by bringing a 70 year old development philosophy pioneered by Toyota into the picture and showing how it could apply to modern software delivery. This process is known as Lean. This book was great because it showed how while much of what we thought we were doing was new, was in fact very old (albeit with a focus on building cars). This is a great book as it highlights the importance of eliminating waste, continuous improvement, and framework for delivering great product with a Toyota touch. Excellent read.

Artful Making: What Managers Need to Know About How Artists Work

Robert Austin, Lee Devin (2003)

In 2006 I met Kent Beck at a conference and asked him how XP could work at startups. He said read 'Artful Making' and I wasn't disappointed. Software delivery and creative endevors like putting on plays have a lot in common. Both have hard deadlines. Both have fixed budgets. And both are highly dependendant on the actors they get. This book is written for software managers to show how other industries manage the creative process, yet still deliver a great product within these constraints. This is one of my favorite Agile books, and the foreword by Eric Schmidt of Google alone is worth the read.

The Toyota Way

Jeffrey Liker (2003)

My favourite book on Lean. A fascinating glimpse into the world of car manufacturing and one companies 70 year quest to building a true culture of continuous improvement and making great people. This book is good on so many levels. Not just Lean. But on people. Business philosophy. And a way of life us in the West can learn from. If you want to see how one of the worlds greatest manufacturers does it, read the Toyota Way.

Drive: The Surprising Truth About What Motivates Us

Daniel Pink (2011)

This book has nothing to do with Agile. It has everything to do with Agile. Dan has distilled can captured the science behind what motivates us as humans. Like why higher pay often leads to poorer performance. The importance to autonomy, mastery, and purpose. This book was the Rosetta stone for me and Agile leadership. This book explains why it works, and why companies who don't get it are going to lose out on this generations brightest and smartest knowledge workers. People like you.

Working Effectively With Legacy Code

Michael Feathers (2004)

When introducing XP concepts like unit testing, refactoring, and TDD, one of the questions that inevitably comes up is: "How to I apply this to my legacy code base." This book answers that question. Michael takes refactoring legacy code as an art this book has great tips and tricks for developers looking for ways to tease their code into a more testable, better designed form.