bookreview - Continuous Integration in .NET by Marcin Kawalerowicz and Craig Berntson

Disclaimer: I responded to a tweet of Manning ( and received a free copy of the e-book to review it. I reviewed chapter 1 to 11 released to the MEAP.

Continuous Integration in .NET by Marcin Kawalerowicz and Craig Berntson

A bit about my background: I am a .NET developer for almost 5 years (3 of them full time). I am familiar with Visual Studio 2003 up to 2010, TFS 2005 and 2008, SVN and SourceSafe. I am very interested in using the right tools to speed up development and increase software quality.

Continuous Integration is getting more and more attention from the .NET community. With Microsoft focusing on ALM tooling and releasing new and better versions of Team Foundation Server, CI is getting a place in the spotlights. However, the barrier for starting with CI is still high. There are lots of tools, and starting with CI can be overwhelming. Many aspects and things need to be thought out. This book brings a lot of information about starting with CI to the .NET community. The book doesn’t presume any knowledge except for some basic .NET and Visual Studio things.

The book is very pragmatic and practical. The authors take you through the complete process of installing and configuring a CI server, visualizing this process even more with an example project. The strong part of this book is that the authors aren’t focusing on one technology by forcing Microsoft tools on the reader. They show different approaches, and give you the pros and cons of Microsoft tools, open source tools and commercial third party tooling. So the reader can make a solid choice based on functionality, complexity and pricing.

Although the book gives a lot of information, there are also some downsides to the book. One of those downsides is the current collection of blogs, twitter accounts and other resources that are available through the Internet. Many pieces of the information found in the book can be found online. The danger is that the book becomes outdated very fast.

By making the book very practical, the writers have made the book also less readable. The content forces you to read the tutorial steps one by one, because sometimes good information is hidden between those steps. Not all readers are interested in every technology, so it could be wise to split up the content into different parts. In that way readers can decide to skip some parts of the book. By splitting up the book, it can also become more of a timeless resource. Readers interested into the concepts and the big picture can focus on the main content part, while readers wanting to get started on implementing CI into their organization can go to the tutorial section.

A piece of information that I missed is the fact that most of the readers probably aren’t starting with a fresh project. Many developers are already maintaining pieces of software that could really benefit from CI. However, how does someone start with CI on an existing piece of software? That could really be a valuable addition to the book. A smaller piece that is missing if a little bit of information about Mono and how to make sure that you software is compatible with Mono. I would be nice to spend a chapter on that part as well.

To summarize this review: I would recommend this book to any one who is starting fresh on the CI process. It is a very good starting point with practical guides on the implementation of CI. For people already familiar with CI and using it to some extend, the book can be a next step. Experienced developers familiar with CI and the different steps will probably find little new information in this book.