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.

Prevention, Amelioration, Cure


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.