Have you ever seen people brainstorm ideas to solve problems but have their solution fail miserably? Their heart and intentions are in the right place, but due to a number of forces, the solution is not effective and typically misses important factors that can make it a good working solution.
Is it enough to derive a solution if the solution does not work in the context of the organization, application or project? A 15-step change control process (e.g., solution) that includes full impact analysis, estimation, and traceability is appropriate for a mature organization, but is it appropriate for an immature organization that has never experienced change control?
Using another scenario, how likely is ‘defect prevention', a CMM Level 5 key process area (KPA) going to succeed in a company where there is little or no desire to have consist processes or there is no historical data being tracked? While defect prevention is considered a good practice, if an organization that is CMM Level 1 (e.g., ad hoc) is tasked to do a CMM Level 5 KPA, the forces currently in play within the organization will likely lead the KPA activities to become low priority (or people will avoid them) and ultimately fail to take root.
In addition, how likely is long term planning to succeed when a company is driven by quarterly profits? This is where the study of anti-patterns plays a role and may be helpful in considering future solutions.
What is an Anti-pattern
When talking about what an ‘anti-pattern' is, we must also address what a ‘pattern' is. A very simple definition of a pattern is that it is a ‘good' solution with the implication that the solution actually works within the context of the organization or group. Ergo, an anti-pattern is defined as a ‘poor' solution. What is meant by that is that an anti-pattern is a solution to a problem that may appear like a good idea, but lacks the necessary input to make it effective and workable.
An anti-pattern will appear when a solution is decided and deployed, but the context and forces are not factored in and consequences of the solution are not considered. The context and forces may be considered critical input prior to defining a ‘good' solution (aka, pattern). By context, this refers to the setting or experience level of the organization in which the problem lives and in which solution must work. By forces, this refers to various influences in play (political, procedural, social, resistance, maturity, etc.) that can affect a solution and therefore the solution's adoptability within the context.
How Anti-patterns Impact Change Control
Change control is a configuration management process used to manage changes to important baselines like requirements and production. Change control may be considered a critical practice in that it often can be used to manage critical items within a project lifecycle, an application lifecycle, or the organization.
It can be challenging to implement change control effectively. Often the reason why is because there is an anti-pattern (a.k.a., poor unworkable solution) in place. Where a solution appears to exist, the forces and context were not considered prior to designing the solution. As mentioned above, to implement an advanced form of change control (that includes full impact analysis, estimation, and traceability) into an immature company may imply that the context and current forces had not been considered in the preparation of the solution.
Change Control Anti-patterns
Below are three examples of anti-patterns for change control. These are just some and more can certainly be considered.
Anti-pattern Name: Equal Vote
- How do we decide on change?
- A decision