SCM Best Practices: Determining Which Practices Are Best for You

  • the codelines it expects to receive changes from, and the codelines it needs to propagate changes to
  • o Expected activity load and frequency of integration
  • o Duration of work or conditions for retiring the codeline

Communications: That is:

  • Work closely with the development team
  • Attend staff meetings
  • Know what's happening
  • Publish schedule changes
  • Announce implementation of changes
  • Be a coach and mentor
  • Be a friend - not an inconvenience or bottleneck

Prudent branching:

  • Use a simple branch model
  • Branch only when necessary
  • Do not copy when you mean to branch
  • Branch on incompatible policy
  • Branch late
  • Branch instead of freeze
  • Never branch to avoid integration

Intelligent builds:

  • Check in all original source
  • Segregate built objects from original source
  • Use common and simple build tools
  • Use a centralized build process
  • Build often
  • Keep build logs and build output


The SCM best practices examples listed in this article are not all-inclusive. That is, there are many other activities that can be termed as best practices. Much has been written and said about SCM best practices and a significant number of those practices are critical to the success of a project and the quality of the product or products being built. However, we need to keep in mind several things to ensure such practices remain in proper perspective. First, best practices are products of empirical experience. That is, a process or practice that has been used repeatedly and successfully by an organization can be considered as a best practice. Second, an automated solution is not always a best practice. If your SCM processes adversely affect the productivity of the development group or become a bottleneck, then a tool will only serve to automate those chaotic processes - making them occur more efficiently. Finally, the application of common sense should prevail. The use of logical, pragmatic practices in the execution of SCM tasks to produce strategic work products and conduct essential SCM activities should be the norm. The following are guidelines (or best practices) for successful SCM practitioners:

  • Keep the SCM system easy; otherwise it won't be used
  • Configuration items should exist in the SCM system in one place only
  • Never delete anything from the SCM system - you can move it, but never delete it
  • A properly designed SCM system will solve the development problems first - downstream problems will automatically be solved in development
  • Any build that is not fully automated is risky and costly
  • All on-line work products should be managed by the SCM system
  • Adding more process will never solve a SCM problem - a little process is necessary; too much process is anti-work
  • Backups must be performed - if you lose a repository, you'll probably lose your job
  • Keep things simple!!!


[1] The Airlie Software Council - 2001; (

[2] Anne Mette Jonassen Hass, Configuration Management Principles and Practice , Addison-Wesley; 2003

[3] Cisco Systems - Configuration Management: Best Practices White Pape r

[4] Stephan Berczuk and Brad Appleton, Software Configuration Management Patterns , Addison-Wesley, 2003

[5] Brad Appleton website 

Dick Carlson is a process architect with more than 20 years of IT and software engineering experience that includes software development, software engineering training and mentoring, development and implementation of software/system lifecycle methodologies, software configuration management, software project management, software quality assurance, and software process improvement. Dick has trained and mentored teams and individuals on efficient techniques applied to SCM activities, project management, requirements management and development, risk management, business modeling, and business re-engineering. He has also implemented software process improvement initiatives preparing organizations for SEI CMM compliance. Dick is the current VP of Education

About the author

AgileConnection is a TechWell community.

Through conferences, training, consulting, and online resources, TechWell helps you develop and deliver great software every day.