
Good work
is lost, or needs to be thrown away with bad during rollback
Good work
is lost, or needs to be thrown away with bad during rollback. The cost of recovering the good work, if it is
possible at all, would be akin to the cost of re-doing it.
Work can be
lost when it has not been backed up and a crash or mistaken deletion is made. Work can be lost when a basic versioning
system is used, and other work must be rolled back. Work can be lost because the versioning system overwrites one
person’s changes with another person’s changes, when work is checked in. How often should one make backups? That depends on the cost of making the
backup, the value of the work that is at risk if not backed up, and the
frequency of needing to restore the backed-up version. How often should one checkpoint? That depends similarly on the cost of making
a checkpoint, the value of work that would be saved by making a checkpoint, and
the likelihood of having to roll back to the checkpoint. However, we also need to consider the risk
of needing to roll back to an earlier checkpoint.
There are
few projects that could not benefit from a source control system, and few these
days that do not use one. Where this
permits PrivateVersioning, loss of one’s
own work owing to the need of others to roll back can be ameliorated. Use of NamedStableBases
allows separation of the work of developing new functionality and that of tracking
changes made by other developers.
Assuming care is taken in establishing suitability of these stable
bases, rollback beyond the most recent is unlikely. Use of complete sets of regression tests on a regular and
frequent basis (see also TestDrivenDevelopment)
means that local fixes of recently introduced problems are more likely than
large-scale rollbacks.
The more Agile development processes favour ContinuousIntegration. Many non-agile processes could benefit from TestDrivenDevelopment; it, or at least its
full set of unit tests, are a prerequisite for other agile development
techniques. Full source control
facilities and backups are taken for granted.