Version – or source – control is a best practice that tracks and manages changes to software code base. It is especially important for products that are going to be worked on – simultaneously – by many different people in many different places.
Once upon a time, in the land of Pixar, somebody did a “/bin/rm -r -f *” command … and deleted the entire “Toy Story 2” film while it was in production …
In the early days of computing “source control” meant not dropping your deck of punched cards … the first time I saw a grown man cry was when I saw a graduate student with his thesis program strewn all over the floor of the Computer Science building. Weeping. The first time that happened to you, you learned the value of having numbered your cards in the card deck … anyway, things are different now with software systems spanning 10s, 100s, 1,000s of files on multiple real and virtual machines perhaps scattered across multiple continents … but the more they change, the more they stay the same.
I came across the description of the Pixar recursive delete in a recent Quora post and I was astonished that something of such high value as a slam dunk money making animated film would be developed without version control … not to mention nightly backups with redundant off-site storage.
Those can be two things … version control and backups with off-site storage … but the version control itself often includes backups/off-site storage as a side-effect. A distributed version control system (e.g. the tool called Git) maintains a copy of the file tree in “the cloud” where it is typically mirrored and backed up daily as a matter of policy.
Version – or source – control is a best practice that tracks and manages changes to software code base. In my opinion, it should be used for any high-value knowledge product (like an animated film). It is especially important for products that are going to be worked on – simultaneously – by many different people in many different places.
A version control system keeps track of every modification to the product so that the present state of the product can always be constructed … and any previous state of the product can be re-constructed. For example, in most large-scale software projects there is
- one team of people busily writing new code,
- another repairing old code,
- yet another writing documentation, test cases, etc.
- The version control system makes it possible for them to all work on the same project with a minimal amount of stepping on each others toes.
Could you develop software – or any knowledge product – without version control? Sure. People do it all the time. They shouldn’t, but they do.
It only takes dropping your deck once … one instance of a “/bin/rm -r -f *” event … to spark an ardent desire for version control and a robust backup and recovery process in the hearts and minds of even the most footloose code slingers.

