Related Books

This page contains a selection of books that we have found useful in learning about and implementing software configuration management in an agile environment. You can buy these books from amazon.com through this page. We think that these books are worth reading and owning even if you prefer to purchase them from another bookseller.

Last modified on January 28, 2012

You may also be interested in this list of books on other software development topics.

SCM Techniques

coverContinuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation by Jez Humble and David Farley. This book will help you to understand that the secret to quality software, reliably deployed, is to take a cross-functional approach. You will walk away from this book with an understanding of how to start implementing a continuous deployment pipeline, and you may also find yourself writing down a list of things to try, and tools to use. While not a tool-centric book, the authors provide many examples of tools to help you implement each phase of the process. Since no one book can cover every aspect of every step in the development process, the authors point you to many excellent resources if you want to learn more. While the authors have experience in, an a pre-disposition for, Agile techniques, the principles described in this book apply to any organization, whatever the process, though if you take the approach to heart, you will find yourself becoming more agile. This book covers every aspect of the development process from requirements, design, and coding, to acceptance testing, deployment and operations. While having a lot of material, the book is well organized and written. It's not a quick read, and you'll want to have a notebook or post-its handy to capture the idea it helps you to generate, but if you are interested in improving your deployment process you will find this book valuable, whether you are a developer, tester, release engineer, or someone who manages people in those roles.

coverConfiguration Management Best Practices: Practical Methods that Work in the Real World by Bob Aiello and Leslie Sachs. When I reviewed an early draft of this book I was pleased to see a book on SCM that wasn't just about tools and processes (though it covers those things) but also about people. SCM is about enabling people to work together effectively, and tools and processes are essential, but you need to use them with an understanding of how people work. This book covers not just version control but the range of CM activities from build to deployment, even covering hardware CM issues. While anyone who works with software may benefit from this book, those who manage teams and project or are looking to improve their SCM processes will find the approach especially useful.

coverAdapting Configuration Management for Agile Teams: Balancing Sustainability and Speed by Mario E. Moreira. This book is a good guide to both CM and Agile principles, and it demonstrates how to use software configuration management to enable your team to be more agile. This book can guide you to understanding how to manage releases in an agile environment, and how to apply basic CM concepts like build and branching successfully. While not a replacement for a book on your agile method, this book is a primer on agile for those with a traditional release management background, and and a primer on CM for those who understand agile. After reading it you will have enough background to be productive, and a good sense of what you need to learn more about. In addition, this book covers topics such as how to leverage cloud service providers for infrastructure, how to leverage SCM to make off-shore development less painful, and how to evolve your SCM process in an agile (incremental) fashion. With a good structure that allows you to navigate the book quickly, and a good use of metaphor to describe concepts, this book will help a release managers, project managers, developers and architects use the SCM process to get the most out of their agile teams. (I was a reviewer of the manuscript, this review is based on the final edition.)

coverPragmatic Version Control using Git by Travis Swicegood. A concise, readable, introduction to Git, Distributed Version Control, and SCM Practices. The examples are simple to understand, and show you how to do useful work quickly. This book is an bridges the gap between tutorial and reference very well and should be useful to those new to SCM, as well as those comfortable with SCM concepts who want to learn more about Distributed version control systems and Git.

coverPractical Perforce by Laura Wingerd. This is a how-to guide for doing Software Configuration Management with Perforce. In addition to describing hpw the various commands work this book helps you understand how to structure your version control system to use Perforce effectively. This book describes not only how to create branches, but why, and what policy to have on the branch. The Channelling the Flow of Change chapter is a great introduction to change management concepts in general. Buy this book if you are using Perforce as your SCM solution, or even if you are evaluating multiple solutions, and Perforce is a candidate, as this book will help you understand how to structure your environment for effective development.

coverContinuous Integration: Improving Software Quality and Reducing Risk by Paul M Duvall. This book is an excellent overview of why Continuous Integration is important and about more than just compiling frequently. The book helps you to understand why to do CI, what you can do beyond building, and how to do it. In addition to general principles, the book points you to some excellent tools and resources. This book is an excellent companion to Software Configuration Management Patterns; it provides teriffic information that support the build patterns in that book.

coverPragmatic Version Control Using Subversion by Mike Mason. Like the other Pragmatic Programmer books, this is an excellent resource for getting started using subversion

coverPragmatic Project Automation: How to Build, Deploy, and Monitor Java Apps by Mike Clark. Prag Auto is an excellent companion to the Scm patterns book if you are doing Java Dev. It uses simple examples to show you how to set up a private workspace, integration build , release line among others. using open source tools. I wish that the book had referenced the patterns by name so as to set up a common vocabulary.

coverPragmatic Version Control Using CVS by Dave Thomas and Andy Hunt. Dave Thomas and Andy Hunt have written an excellent book, Pragmatic Version Control which explains how to use CVS in a basic and effective way. This book is an excellent companion to the SCM Patterns Book.

coverSoftware Configuration Management Implementation Roadmap by Mario E. Moreira. Finding the path to the right process for your project and organization is tricky, and this book provides a map of the terrain that can guide you to the implementation appropriate for your project. This book will guide you through the steps that you need to take if you need to implement an SCM process for your organization at an organization, application, or project level. It includes customizable templates and examples to more quickly get you to your SCM goals.

coverSoftware Release Methodology by Michael E. Bays. This book has a good discussion of various types of codelines, as well as branching and merging strategies. It is clearly written and is a good resource if you want to go into more depth about branching strategies.

coverConfiguration Management Principles and Practice by Anne Mette Jonassen Hass and Glenn Hass. This book is less about how to do SCM than about what SCM is. It is a great resource to read and to have on your shelf if you want to understand the scope of SCM. It is not entirely clear to me why this book is in AW's Agile series, but it is a worthwhile read so that you can understand what aspects of more formal SCM that you may be (justifiably) skipping on your project after you have implemented the techniques in the SCM Patterns book.

coverSoftware Configuration Management Patterns: Effective Teamwork, Practical Integration by Steve Berczuk (with Brad Appleton ). This book describes Essential SCM practices. Developers, team leaders and those just learning about software configuration management should find this book useful.

Related Areas (Architecture, Process)

coverContinuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation by Jez Humble and David Farley. This book will help you to understand that the secret to quality software, reliably deployed, is to take a cross-functional approach. You will walk away from this book with an understanding of how to start implementing a continuous deployment pipeline, and you may also find yourself writing down a list of things to try, and tools to use. While not a tool-centric book, the authors provide many examples of tools to help you implement each phase of the process. Since no one book can cover every aspect of every step in the development process, the authors point you to many excellent resources if you want to learn more. While the authors have experience in, an a pre-disposition for, Agile techniques, the principles described in this book apply to any organization, whatever the process, though if you take the approach to heart, you will find yourself becoming more agile. This book covers every aspect of the development process from requirements, design, and coding, to acceptance testing, deployment and operations. While having a lot of material, the book is well organized and written. It's not a quick read, and you'll want to have a notebook or post-its handy to capture the idea it helps you to generate, but if you are interested in improving your deployment process you will find this book valuable, whether you are a developer, tester, release engineer, or someone who manages people in those roles.

coverWicked Problems, Righteous Solutions by Peter DeGrace and Leslie Hulet Stahl. A Wicked Problem is a problem where some of the solution space lies within the problem space; the problem is only fully understood after it is solved. Thsi book describes how many programming problems fall into the catgegory of wicked problems and how waterfall softwarae development practices are not well suited to these kinds of problems.This book explains how agille approaches are more suited for many software development projects. In addition to all of this, this book had many excellent references.

coverContinuous Integration: Improving Software Quality and Reducing Risk by Paul M Duvall. This book is an excellent overview of why Continuous Integration is important and about more than just compiling frequently. The book helps you to understand why to do CI, what you can do beyond building, and how to do it. In addition to general principles, the book points you to some excellent tools and resources. This book is an excellent companion to Software Configuration Management Patterns; it provides teriffic information that support the build patterns in that book.

coverWorking Effectively with Legacy Code by Michael Feathers. This book shows you how to apply patterns and refactorings to the task of untangling legacy code so that you can apply effective techniques like test driven development as you change the code. Since there will always be legacy code, this is a very practical book. The author emphasises the role of testing as a change enabler in a way that echos the the ideas in the SCM Patterns book.

coverJUnit Recipes: Practical Methods for Programmer Testing by J. B. Rainsberger and Scott Stirling. Get this book both as an introduction to what JUnit can do for you and also as a reference when you are looking for information on how to solve a particular testing problem. The book covers the basics of using JUnit as well as issues around database and J2EE testing. It is filled with pointers to many frameworks and resources that can simplify your testing experience. This is not just a testing cookbook. J.B. also discusses issues such as how to design for testing (and how that can improve your architecture) as well as what to do when you need to test legacy code. This is an excellent guide to the details of how to use JUnit effectively.

coverSoftware Architecture: Organizational Principles and Patterns by David M. Dikel, David Kane and James R. Wilson. This is one of the most useful books on software architecture that I have read. It discusses the qualities of a good architecture, and how the organization and process relates to the architecture.