The best way to understand version control is to imagine it as saving changes in a Microsoft document or a document in Google Docs. Think of the code as a text file, and then imagine going into the document and looking at the revision history to see all of the different changes, when people made changes to your document, and why.
The history of different versions of a shared Google document is easy to review, and that type of simple workflow is exactly why software configuration management and version control is essential to a developer’s workflow today, according to MacKenzie Burnett, head of product at CoreOS.
Software configuration management is so fundamental today, that everything starts and ends with SCM, according to Job van der Voort, vice president of product at GitLab, who said he would argue that SCM systems are the only way to work nowadays.
“You now have one team that manages everything from an idea, to building the software, to shipping the software, to monitoring the software,” said van der Voort. “I believe personally that this is the evolution of how developers work.”
RELATED CONTENT: Git’er done: SCM system keeps developers and projects on track
Other software experts expressed just how essential SCM is to a developer’s workflow, like GitHub’s senior director of infrastructure, Sam Lambert, who said that he “just doesn’t know anyone responsible developing software that doesn’t use SCM.”
“I just couldn’t imagine doing without it,” said Lambert. “It’s like building a gigantic bridge and burning the [plans] after. You have this thing that works with no tracking of the changes that were made going forward.”
Also, SCM is critical to a developer’s workflow because it is the mechanism that allows developers to collaborate today, according to Edward Thomson, senior program manager at Microsoft. The source code that’s check in to the version control system is the “source of truth” for a software project, he said, since it reflects not just the current state of development, but everything that’s been shipped to the customer.
“Without version control tools, you’d lose that ability to collaborate easily and you’d lose that traceability,” said Thomson.
How does SCM fit in with Continuous Delivery?
Viktor Farcic, senior consultant at CloudBees says: SCM is the initiator of continuous delivery processes. It all starts with a change in SCM and ends in production. Every commit would trigger a build in one of the CD tools which would initiate the tasks that lead to software being deployed to our production clusters. That trigger is what makes the process continuous. Without it, we would be delivering periodically and could just as well call it eventual delivery.
One of the changes that CD brought is that there is an increasing number of companies that are abandoning branches and committing code directly to master. That, on the first look, sounds like a step back. It took many years to convince everyone that a good branching strategy is a must in every software development company. Working without branches was too risky due to conflicts and potential bugs that would be introduced through commits. Now we (proponents of continuous delivery and deployment) are telling those same teams that they should commit directly to master. What changed?
The difference is in the processes that are initiated on every commit. CD, together with microservices adoption and the ideas behind immutable deployments, allows us to have a robust set of automated pipeline steps that can provide a reasonable guarantee that a commit that passed them all is ready to be deployed to production. By committing to a master branch we have a truly continuous process and, as a result, the time between a feature being developed and its deployment to production is reduced to an absolute minimum. Time to market was never shorter, and it is not uncommon for an organization to have tens or even hundreds of deployments every day. The flexibility and the power behind Git is one of the essential pieces that allowed us to reach this speed.