# Why Version Control Exists: The Pendrive Problem

## What is a version control system?

A Version Control System is software used to track changes in files and help developers work collaboratively with other developers, which eases the process of software development.

## Why does version control exist?

Version control helps programmers to track their changes in files and work collaboratively on a single project. gives programmers the freedom to experiment or innovate by creating a new feature in a new branch without modifying the main file code.

### Main features of Version Control System:

1. **Track every change:**  
    Programmers easily track their changes using a version control system and know who wrote the code for that particular feature.
    
2. **Enable Collaboration:**  
    Helps programmers to work collaboratively on the same project by tracking every change made by the programmers and saving those changes to the server.
    
3. **Rollback the change:**  
    While developing software, having errors in the code is normal; then we need to roll back our recent changes for that feature or bug.
    
4. **Experiment with a new feature:**  
    Using version control, we can create a branch or a copy of the code and develop features without worrying about the chaos in the code.
    
5. **History of commits:**  
    We can save changes in the stage using a version control system, just like we do in video games, where we save at checkpoints. We save our changes similarly for every new feature or any point where we want to save our changes.
    

## The Pendrive Analogy in Software Development

**Pendrive Analogy:**  
**A group of programmers working on the same project using a single pendrive.**

### Drawbacks of the pendrive analogy:

* Collaboration is not possible as at a single time only one programmer with a pendrive can work while others are waiting for their turn for development.
    
* Features are overwritten by other programmers, which causes conflicts and errors in the code.
    
* Risk of the pendrive loss and the pendrive getting corrupted, in that case, need to start from scratch.
    
* Tracking of changes in files is not possible.
    

## Problem faced before the Version control system

* Not able to track the changes.
    
* Collaboration is not possible.
    
* Experimentation and innovation are not possible.
    
* Delay in the development process.
    
* Rollback is not possible.
    
* Code is overwritten by other programmers.
