Software Configuration Management Patterns

[article]
Summary:
Patterns and pattern languages are tools that can be used to help a team be more effective and agile. They can lead to robust, effective solutions, because the solutions that patterns can lead you to take the environment into account. They also solve problems in a way that makes the system work better. This article will show you how you can use existing patterns to improve your SCM process. It will also help you to understand where existing patterns and pattern languages have gaps.

This month we will provide a quick overview of what patterns and SCM patterns are, with enough information to get you oriented. We will also provide a list of resources to find to learn more about patterns and pattern languages. 

If you are already familiar with SCM patterns, this article will provide you with some ideas about how to get your organization to adopt them. If you are new to SCM patterns, or patterns of any sort, this article will get you started. This column may start off a bit more theoretical than many of our others. If that is not what you prefer, hang on for a bit, as there will be practical advice. When we wrote SCM Patterns, we wanted to encourage people to understand what they were trying to accomplish first and apply practices and tools later.

Introducing Patterns and Adding Value


For patterns to be useful, one must think of them as more than just a magic phrase or silver bullet that everyone will understand and appreciate. By using patterns and pattern languages, you can add value to your organization by improving the development process as a whole, rather than simply fixing immediate problems. Patterns also provide for a common vocabulary for SCM concepts, which will facilitate communication in your organization.

To use patterns in your organization, your audience does not need to be versed in what are, or even in the specific patterns that you wish to use for you to leverage their power. In some organizations, the people in a team will be aware of what patterns are and they may be familiar with a certain class of patterns, but this is not typically the case. As with any attempt on process improvement, how much value you get from patterns depends on how you introduce the concepts, as well as the values of the concepts alone.

Often the various aspects of software development, such as coding, configuration management, and testing, are treated as separate steps that concern different people. This leads a sense of competition rather than cooperation.  A pattern approach will help you and your team to understand how SCM practices fit within the development process, thus encouraging everyone to move towards a common goal: higher quality software delivered more effectively.

To benefit from SCM patterns, you need to introduce them into your organization in a way that will have an impact. Walking into in a room and speaking of patterns will not get you very far unless the people in the group understand what patterns are and have some clue about the particular patterns that you are discussing. They may hear the word "pattern" and have some reaction to it (positive or negative) and leave without understanding the real goal of working more effectively.  This is much like the dog in the Gary Larsen Far Side cartoon that has a dog hearing, "Ginger blah blah blah Ginger" rather than the complete message. This can be frustrating, especially if you understand how to implement an effective SCM process and if you have thought a bit about how patterns work with SCM. 

You are more likely trying to influence people who are so focused on their immediate tasks that may not have even heard of Patterns, much less, SCM patterns. So if we're going to talk about how patterns help you to be more effective and more agile, we may want to consider thinking of how you can use patterns effectively without spending too much time on introducing the concept of patterns. After all, in the end people usually want a better software development process, not an education in patterns or other concepts. Though through the education, they may be able to better understand how to fix their own process.

If you understand the patterns they can provide a framework for helping to explain the value in ways that your audience can grasp. For example, many readers of CM Crossroads know the value of private workspaces and how they fit into the development process, so I hope that the private workspace pattern in the book can provide an outline for you to argue why a team should use private workspaces (or anything similar) patterns, whether from software configuration management patterns, or from other sources. Patterns are most effective in the hands of a champion who can interpret the patterns and translate the concepts into a mechanism that works for the existing culture. While there is benefit to adopting the pattern vocabulary, it is more important to have your organization adopt the principles from the patterns.

Pages

About the author

Brad Appleton's picture Brad Appleton

Brad Appleton is a software CM/ALM solution architect and lean/agile development champion at a large telecommunications company. Currently he helps projects and teams adopt and apply lean/agile development and CM/ALM practices and tools. He is coauthor of the book Software Configuration Management Patterns, a columnist for the CMCrossroads and AgileConnection communities at Techwell.com,  and a former section editor for The C++ Report. You can read Brad's blog at blog.bradapp.net.

About the author

Steve Berczuk's picture Steve Berczuk

Steve Berczuk is a Principal Engineer and Scrum Master at Fitbit. The author of Software Configuration Management Patterns: Effective Teamwork, Practical Integration, he is a recognized expert in software configuration management and agile software development. Steve is passionate about helping teams work effectively to produce quality software. He has an M.S. in operations research from Stanford University and an S.B. in Electrical Engineering from MIT, and is a certified, practicing ScrumMaster. Contact Steve at steve@berczuk.com or visit berczuk.com and follow his blog at blog.berczuk.com.

About the author

Steve Konieczka's picture Steve Konieczka

Steve Konieczka is President and Chief Operating Officer of SCM Labs, a leading Software Configuration Management solutions provider. An IT consultant for fourteen years, Steve understands the challenges IT organizations face in change management. He has helped shape companies’ methodologies for creating and implementing effective SCM solutions for local and national clients. Steve is a member of Young Entrepreneurs Organization and serves on the board of the Association for Configuration and Data Management (ACDM). He holds a Bachelor of Science in Computer Information Systems from Colorado State University. You can reach Steve at steve@scmlabs.com.

AgileConnection is one of the growing communities of the TechWell network.

Featuring fresh, insightful stories, TechWell.com is the place to go for what is happening in software development and delivery.  Join the conversation now!

Upcoming Events

Sep 22
Sep 24
Oct 12
Nov 09