Chapter 6. Version Control
Imagine you are running a small business with a partner who lives in another location. You share a business bank account to pay the bills. While online banking lets you log on at any time to see the state of your finances, it doesn’t tell you about planned changes or provide insight into your finance management. As a result, you often receive late fees from unpaid bills and the occasional overdraft fees due to duplicate payments to the same vendor.
You adopt a system that allows you to schedule your bills and track the accountability of planned changes. The new system improves your collaboration and enables you to do the work you want to do. Ultimately, what differentiates your business from others isn’t how you manage your money.
Now replace “shared bank account with a business partner” with the system you need to manage. Your business partner is the rest of the team you have to work with (including the future you at 2 a.m., who has to deal with the system’s state and occasionally makes mistakes). Every individual on a team could have different preferences for managing the system. Unless you all agree on a common way of working with the system, you will experience the pain and frustration of trying to fix it whenever there is conflict. Instead, suppose you adopt version control and leverage the tools already in your organization (e.g., Git, Artifactory, GitHub, and GitLab). In that case, you get visibility, accountability, and alleviation of the pain ...