Book Review - Ship It!

Ship It! By Jared Richardson and William Gwaltney Jr.

Introduction

Ship It! is a book about basics. It’s an education in the fundamental practices that are needed to develop software successfully. This is the stuff they don’t teach you in college. Ship It doesn’t espouse a particular methodology (such as Scrum or XP). Rather, it is a set of practices. The advantage of this is that you don’t have to adopt everything in an all-or-nothing fashin. In fact the authors state explicitly that you should use the things that work and don’t use the things that don’t work. This will work particularly well in situations where someone works in an environment that has an entrenched methodology. While management might not be willing to buy off on a wholesale switch to a different methodology, many of the practices outlined in this book don’t require you to spend any money. Therefore, individual developers, leads, or managers can implement a couple of practices (say “The List”, and daily meetings) without needing management approval.

Let me start off by saying that I’m a huge fan of the Pragmatic Programmers. The original book completely changed the way I approached programming. I’ve bought several books from them since then, and have been extremely happy with them all. This is rare. Even O’Reilly has a few stinkers amongst all of their great books. The point is, I started reading this book with high expectations.

The book is divided into four basic sections:

  1. Tools and Infrastructure
  2. Pragmatic Project Techniques
  3. Tracer Bullet Development
  4. Common Problems and How to Solve Them

The first section, Tools and Infrastructure, covers the basics of software development tools. It not only covers what you need, but how you should use it. The tools covered here include source control (with an emphasis on Subversion), build scripts (using tools like Ant and NAnt), continuous integration, defect and feature tracking, and more. The book obviously can’t go into each tool in great depth, but there is enough there for you to get a good understanding of why you would want to use these tools.

The section on Pragmatic Project Techniques is equally interesting. As I said before, Jared and William don’t advocate any particular methodology, but have acquired a collection of practices over their years of software development that work. That said, there’s a fair amount of overlap with traditional agile methods. It covers techniques such as daily meetings (aka Daily Standups in XP), a shared list of work referred to as “The List”, among others. I would imagine that this section of the book would be the most useful to the majority of people reading this book. Geeks tend to focus on tools (section 1), but often ignore the processes that make a project successfull (or not).

Tracer Bullet Development was covered in the original Pragmatic Programmers book, though this book covers it in much greater depth. It’s very useful in situations where the client doesn’t fully know what he/she wants. You essentially build a prototype, and use it to draw out the requirements from your customer. It’s more involved than that (it warranted its own section in the book), you’ll need to read the book to gain a full understanding.

Common Problems and How to Solve Them was probably my favorite section of the book. It’s a collection of 18 recipes for how to handle a given situation using the principles outlined previously in the book. It covers situations like “The customers are unhappy” and “Features keep creeping in” with practical advice for how to deal with them. All of us find ourselves in these kind of situations from time to time, and this book would come in very handy when they do arise.

Summary

In summary, I think this is an excellent book. It’s not billed as such, but it could almost be considered a sequel to the original Pragmatic Programmers book. While the original focused on the tools and techniques of the trade, this book elaborates on those and adds a lot of information on processes. Combine this with the “Common Problems” section, and you have a very useful book indeed. The writing style is somewhat casual, similar to the other books from the Pragmatic Programmers, and the book is filled with real-world examples from the authors. I would highly recommend Ship It! to anyone interested in improving their software development skills.