CodeBaseInstability

Workers waste time responding to errors and frequent changes in the work of others, or are unable to maintain a stable situation

Description

Workers waste time responding to errors and frequent changes in the work of others, or are unable to maintain a stable situation.  The time is spent adapting to changes others have made, rather than doing the work that is assigned to the worker. 

Discussion

This and other problems are now rarely observed in serious work environments.  There have been effective source code control systems and effective ways of working with them that allow individuals to work from a stable base of source code. For other source code versioning problems see also LostWork. 

Prevention, Amelioration, Cure

Traditional

Each worker has his own area, a PrivateWorld where he can start his own work building on top of one of the NamedStableBases held in the versioning system for the project.  Where his work will not be integrated with the main stream for an extended period, he will use PrivateVersioning to avoid LostWork and to facilitate rollback should it become necessary.  Integration with changes made by others is still necessary, but this can now be deferred until the functionality being worked upon is complete and tested.  The amount of such work can be reduced by techniques to combat the RippleEffect.

Modern

Agile methods rely heavily on the same methods as are used traditionally.  In addition to this there is one specific relevant practice, that of ContinuousIntegration, to replace part of the work of NamedStableBases.  Workers merge their code with the main stream regularly, ideally several times per day.  This reduces the chance of duplicating work where new work that exists in the main stream is needed for the current work, but it does not exist in the old version from which the current work started.  Alternatively it reduces the need for waiting for such work that is complete but not yet integrated into the main stream.