When implementing Software Configuration Management processes in an organization, one must be aware of common pitfalls that some configuration managers fall into. As rightly said, excess of everything is bad, so is true for SCM. We must ensure that while targeting goals and benefits of SCM we may not fall prey to these bad practices.
Process Gets in the Way:
One of the major caveat of implementing SCM processes is that they become so fat and start hindering activities of other departments.
Three common scenarios when process gets in the way are:
a) When SCM policies start hindering activities of developers. SCM should support and speed up development rather than slowing them down. SCM managers must discuss with developers off and on to identify policies that are hindering their normal working flow so that those practices can be modified or abandoned altogether.
b) Sometimes pre-check-in testing takes too long thus resulting in idle time of developers which is never desirable for any organization. Pre-check-in testing should be automated and divided so that most critical areas are targeted frequently. Less critical tests can be scheduled with a delayed cycle to speed-up development.
c) Code freeze is a term used for a point in software development life cycle, before a release, after which developers are not encouraged to check-in any code into planned release source code. Sometimes configuration managers make this period so extended that developers keep waiting for checking-in their codes and thus resulting in idle resources. SCM processes must minimize the Code freeze period and implement processes that would allow developers to freely continue with their activities.
Long Integration Times at Project Release:
Having less frequent code integrations during an iteration may lead into long integration times when project is to be released. Specially if something is found broken, “Fixing it” in integration may end up missing a deadline and business.
SCM managers must ensure frequent integrations and implement policies that will make integrations smoother.
Configuration Management is there to help, rather than imposing its own limitations. Tools used for SCM must be selected while keeping all the goals and pitfalls of SCM in mind so that we do not end up serving the tools, rather than serving our own goals.
Lack of Expertise:
Coincide to Inflexible tools is inflexible configuration managers, as they cannot adapt as per organizational needs due to their own technical limitations. To fully benefit from SCM practices, proper technical training should be provided to people implementing SCM policies.
If a company is new to SCM, then for right reasons SCM managers face resistance from all levels of organization. Managers and Developers alike feel SCM practices as additional work when compared to their normal development activities. This behaviour leads to non-cooperation with SCM managers and thus failed SCM efforts.
It is the responsibility of SCM managers to communicate benefits of SCM to every organizational unit that is going to be affected with new policies. Everyone must be convinced that people implementing policies are aware of potential pitfalls of SCM and they would do their best to avoid them. Only with internal commitment can SCM practices be implemented and its goals achieved
Failing to avoid these pitfalls will result in obvious consequences including, but not limited to, frustrate developers, financial and time losses and angry customers. In pursuit of SCM benefits we must not fall prey to these common mistakes.
Did you ever experience similar bad practices in your organization, or behaviors of your colleagues that would have hindered SCM implementation.