A world without version control

2007-08-03, Comments

The requirements were open to interpretation but the customer had fixed a delivery date. Everything had to be completed by the end of the month. The team quickly agreed how to tackle the project:

  • the system would be broken down into components
  • development of the components would be shared, but each component would have a single owner who would take primary responsibility for its completion
  • the project manager would take sole responsibility for integrating the components into the final system
  • all work would be peer-reviewed

Because of the short timescales, the team adopted a simple project infrastructure:

  • the source for the components would be shared using a combination of email and a networked drive
  • concurrent modification of the components was prohibited; each component’s owner took responsibility for evaluating and merging in changes suggested by other team members
  • change logs would be included in the component headers
  • version numbers would be included in the component headers, and reinforced using a simple file naming scheme (component_V001, component_V002, component_V003, …)
  • final assembly of the components into the finished system would be done at the end of the project
  • to produce the best possible finished system, final assembly would be left until the penultimate day of the month