CM wiki web
CM Metaphors and Analogies
This page is for describing various metaphors and analogies people use to explain what CM is to people who don't yet know or understand what it is and/or why it is necessary. -- Initiated by BradAppleton? - 30 Jul 2003Table of Contents - (Generated automatically from sections below)
CM is the "Humpty Dumpty" problem
Sometimes when I'm trying to keep things at a very simple/high-level (i.e. someone unfamiliar with the acronyms "CM" or "SCM") I try to succinctly summarize CM as trying to solve "The Humpty Dumpty Problem": The classic nursery rhyme goes something like:- Humpty Dumpty sat on a wall. Humpty Dumpty had a great fall.
All the King's horses, and all the King's men,
couldn't put Humpty together again!
CM is the "Plumbing" of software development
In the book Software Configuration Management Patterns, I wrote:- SCM is, after all, the “plumbing of software development” to a lot of programmers: everyone acknowledges that they need it, but no one wants to have to dive into it too deeply and get their hands entrenched in it. They just want it to work, and to not have to bother with it all that much.
CM is the "Accounting" of Software Development
Another analogy I've used ... CM is like the accounting of software development. The currency used is change and the value of a change is how much business value it buys you in terms of realizing a requested feature/fix/enhancement. The cost is the impact in terms of effort, time, maintainability, quality, etc. Double-entry book-keeping uses two columns for recording "transactions". CM uses physical audits and functional audits to verify a configuration. And CM accounts for the status and content (both physical and functional) of changes/requests across their entire life-span. -- BradAppleton?CM is the "Logistics" of Software Development
When I try to explain to my kids or my wife what CM is, I sometimes compare it to a company doing logistics to supply supermarkets. Trucks are driving from a distribution center to a number of supermarkets for new supplies. Truckloads must be planned based on the predicted needs of the supermarkets (done by the supermarket!), but also the distribution center itself needs to be supplied with goods. Thus a chain (or network) of supply-demands exists. We (as a customer) only see the configuration at the supermarkets. We buy what we need and take for granted that it takes a lot of complex work to provide this configuration. In software projects, developers must be able to take for granted that their work area (configuration) contains what they need. They don't have to bother about how it got there. To them, CM may look like overhead or be invisible altogether, but in fact it co-exists with project management and architecture to provide a necessary support for the development process. With this analogy I hope to open some eyes that bypassing CM ("I lose days going through the CM cycles", "Why can't I just get the changes directly from my collegue?", "What are you guys doing the whole day?") may increase development speed for a day, but will ultimately spoil the development speed for the whole project. -- FrankSchophuizen? - 18 Aug 2003CM as the "Rubik's Cube" solution
CM/SCM complexity can be viewed as the solution of the Rubik's cube problem. A way I use to explain CM/SCM work to newcomers that have to go deeper in (i.e. as an introduction in training courses for developpers) is to compare CM/SCM underlying scheme as the Rubik's cube solution. To get the right deliverable result (the one colored faces of the cube), you have to manipulate in the right sequence all of the inter-coordinate elements of :- the product parts and the dependencies between them
- the versions of parts and the dependencies between them
- the tasks to produce the versions of parts and the dependencies between them
What are some of the metaphors and analogies you have successfully used for explaining CM to the "uninitiated"?

CMMetaphorsAndAnalogies