Skip to main content

Command Palette

Search for a command to run...

Why Version Control Exists: The Pendrive Problem

Updated
4 min read

Before tools like Git, GitHub, or any modern version control system existed, software development was… chaotic.

Not a little mess but more like where the code goes? who changes the code? or which is the final version of the code?

In order to understand the problem, let’s go back how the developers works before the version control was introduced.

The Pen drive Analogy in Software Development

Imagine a you (Developer 1) working on a project. You create the feature1 and save it on your computer. You know what code you have written and what changes you have done. You can modify the code as per your requirements.

Before Version control, the developer used to exchange the code by the help of pen drive in which they updates the code and share with the next developer.

There is:

  • One pen drive (or Google Drive / email thread)

  • One project folder inside it

  • Everyone copies the project, works on it, and sends it back

Now, if you start working with one more developer (Developer 2), you will code, copies the code in pen drive and pass the pen drive to second developer.

When Developer 2 code the new feature “feature2” and pass it back to the Developer 1. Seems like fine but here where the problems start.

  • Tracking code: Developer 1 doesn’t know what has changed, which file has changed and for what reason the existing code is changed.

  • Working at same time: Individual developer which has the pen drive can only work on the project at a time.

  • Bug Fix issue: If the previous developer fixes some code the current developer does not know what has been fixed.

Now let’s assume the same situation with more than 2 developers.

The “final”, “final_v2”, “latest_final” Era 😄

Almost every developer has seen folders like these

project/
  final/
  final_v2/
  final_v3/
  final_latest/
  final_latest_really/
  final_latest_this_one/

Or files like:

app.js
app_new.js
app_new_fixed.js
app_new_fixed_final.js
app_new_fixed_final2.js

Why did this happen?

Because there was no reliable way to track history.

So developers did the only thing they could:

  • Make copies

  • Rename folders

  • Pray they didn’t delete something important

The Pendrive Problem at Scale

Now imagine this same workflow:

  • Not for 3 people

  • But for 50 developers

  • Working for 2 years

  • On millions of lines of code

It becomes completely impossible to manage.

This is the moment the industry realized that, we don’t just need storage. We need history, tracking, merging, and safety.

Why Version Control become mandatory?

Problems faced before Version Control

  • Override Each other code: Two developers start from the same code.

    • Dev A adds a payment feature.

    • Dev B fixes some bugs.

Both send back their versions.

Now what?

  • If you copy Dev A’s code → you lose Dev B’s bug fixes

  • If you copy Dev B’s code → you lose Dev A’s feature

There is no automatic way to merge changes.

Someone has to compare files and code manually ensuring nothing has broken.

  • Losing changes forever: Lets assume if the previous version of the code is working fine.

    • There is no history of the changes which can be reverted back.

    • Once lost → lost forever

  • Cannot track the developer who has worked / fixed the code.

  • Fear of changing the code.

Version Control Systems (VCS) were created to solve exactly these problems:

They allow you to:

  • Keep full history of every change

  • Know who changed what and why

  • Go back to any previous version

  • Work in parallel without overwriting others

  • Merge changes intelligently

  • Experiment safely without fear

The timeline concept in Version Control

Instead of this:

project_final/

You now have this:

Version 1 → Version 2 → Version 3 → Version 4 → Version 5 → ...

Each version is called a commit (in Git).

Each commit is:

  • A snapshot of your project

  • Plus metadata (author, time, message)

So your project becomes a timeline of snapshots.

Conclusion

From chaos to control, From the era of pen drive to folders to version control, the industry has learned that without tracking you can not build a scalable projects. And now Git has become a mandatory for individuals or organizations for build softwares.