Learn Why Version Control Is Important for Team-Based Development
After completing this unit, you’ll be able to:
- Describe the common challenges faced by software development teams.
- Explain the role of version control in mitigating these challenges.
- Describe the principles of collaboration shared by effective development teams.
Meet Sally, Gunjan, and Ali. These three amazing developers are working on an exciting new Salesforce app, and tomorrow is the big launch day. Sally and Gunjan have been working in developer orgs, and Ali in a sandbox org. Sally creates an unmanaged package and pushes it to the sandbox org. Gunjan does the same. What could go wrong?
- There’s no merge process, so they can easily overwrite each other’s changes.
- If the changes Ali made in the sandbox are overwritten, there’s no way to go back to recapture them.
Sally, Gunjan, and Ali are seasoned developers. They have processes in place to prevent these things from happening, but it takes a lot of time and careful planning—lost energy that could be spent on building new features. This team may not even know it yet, but they’re being limited by their tools. Even without feeling constrained, they may realize that they're not as effective or productive as their team has the potential to be.
Version control exists to solve these problems, and it’s within easy reach for every developer. There are many high-quality free and open source version control systems available, but the focus of this course is on Git. Whether you work alone or with a team, transforming your workflow can do more than help you prevent the problems we just discovered. It can also improve the overall quality of your work.
The term version control broadly includes any system that helps people keep track of multiple versions of something. This can include naming conventions like in the example above, but it's used more often to describe software tools like Git.
Each VCS has different pros and cons, but all can be categorized into two types: central or distributed.
Git is the most popular example of a distributed version control system. Distributed version control systems give developers flexibility and freedom by providing every collaborator with a copy of the entire repository at any time, including all branches (lines of work) and commits (saved points in history) on a developer's local machine.
Modern version control systems are designed to help address problems that teams face when collaborating.
Solving the problem of working together takes more than just a great VCS like Git—it also requires you to step back and assess your approach. Breaking down silos and embracing more perspectives and conversations can enable you and your team to deliver better software. There are tools and workflows designed for the express purpose of improving communication and overall quality.
Enter GitHub—a collaboration platform built on top of Git. GitHub serves as a community space where you can share your work, see your team’s work, complete code reviews, and connect integrations that help you build, test, and deploy your code. GitHub is home to the largest collection of open source projects in the world, and it’s increasingly being adopted by progressive organizations all over the world who recognize the benefits of open, collaborative development.