Getting back to my earlier topic of The Principles of SCM, I'd like to step through each of the Object-Oriented Design Principles mentioned in Robert Martin's book Agile Software Development: Principles, Patterns, and Practices and step through each principle, looking for how it applies to SCM.
Before I do that however, I'd first like to look at what "Uncle Bob" (as he is more affectionately called) refers to as design smells. These are as follows:
- Fragility - Changes cause the system to break easily and require other changes.
- Immobility - Difficult to disentangle entities that can be reused in other systems.
- Viscosity - Doing things wrong/sloppy causes more friction and slows you down the next time you navigate through that code.
- Needless Complexity - The System contains infrastructure that has no direct benefit (overengineering and/or "gold plating").
- Needless Repetition - Repeated structures that should have a single abstraction (Redundancy).
- Opacity - Code is hard to understand.
Here's one possible "translation" of how these might apply to Software CM process and procedures:
- Intolerant/Fragility - Changes cause the project, team, or organization to fall apart easily and require change to other parts of the project, team, or organization.
- Rigidity/Immobility - Difficult to identify or disentangle practices and policies that can be reused by other projects, teams, or organizations.
- Friction/Viscosity - Doing things wrong/sloppy causes more friction and slows you down the next time you navigate through that workflow or go on to the next one.
- Wasteful/Needless Complexity - The Process contains "waste" in the form of extra steps, processing, handoff, waiting, or intermediate artifacts that do not "add value" for the customer, project, or organization.
- Manual Tedium/Repetition - Repeated or tedious steps and activities should have a single mechanism to automate them.
- Opacity - The project or process is hard to understand. (Lack of Transparency)
How would you translate design smells into process smells for Software CM?