Version Control

Cleanliness and order are important when it comes to building anything, and the same is especially true when you're building software. Only one person can put in any one nail at the construction site, but on a dev team we could all be holding the same nailgun, fixing up the same spot in a myriad of different ways.

When we go to compare our work, we'll want to see who punched in that proverbial nail at the most perfect angle, the angle that will ensure it's position in this proverbial wall for as long as possible and without producing any chipping or fractures in the future.

In this analogy, the wall is our program and the nail is the update you've made it to it. We want to ensure that we get the best version of that update, the one which is least likely to produce bugs rather than just whichever one is sent to the website last. Version control gives us a way to do that.

When we go to compare our work, we realize that our top developer Sam found a bug that would have been produced by every other person's solution. Everyone claps Sam on the back and says "Great job!", and everyone agrees to push Sam's changes into the new update!

"But wait!", Laura cries with the fierce determination she is known for when faced with a bug to be squashed, "he missed this one!"

The team goes over Laura's changes once more and realizes that yes, she also found a possible bug, and dealt with it handily! There is an uproar of applause as the project manager schedules a celebratory lunch and Sam and Laura briefly discuss who should go about combining the two sets of changes. Laura volunteers, as she has gotten through a lot of bugs today and is feeling even more daring than usual. She downloads Sam's version of the project, and adds the parts of his that avoid a bug to all of her changes.

Just like that, we've ensured that the newest update has all of the best parts of all of our changes, without any overlapping changes, and while producing the fewest possible bugs.