Why Version Control Exists: The Pendrive Problem

Search for a command to run...

No comments yet. Be the first to comment.
When writing JavaScript code, you often need to perform calculations, compare values, or combine conditions. To do these tasks, JavaScript uses something called operators. If you’ve ever done basic ma

When learning JavaScript, you’ll eventually encounter a keyword that can feel confusing at first: this. The value of this changes depending on how a function is called. JavaScript also provides specia

Functions are one of the most important concepts in JavaScript. They help you organize your code and avoid repeating the same logic again and again. In JavaScript, there are multiple ways to create fu

When writing JavaScript programs, you often need to store multiple values together. For example, imagine you want to store a list of fruits: Apple Mango Banana Orange You could store them like t

As JavaScript applications grow, managing code and data can become complicated. To make programs easier to organize and reuse, developers often use a programming style called Object-Oriented Programmi

ygshjm
24 posts
Imagine building software before version control systems existed.
If three developers worked on the same project, collaboration was difficult from the very beginning. Everyone wrote code differently, and there was no safe way to work on the same codebase at the same time.
The most common approach was sequential work. Developer 1 wrote some code and passed it to Developer 2, who then passed it to Developer 3. Only one person could work at a time. Parallel development was risky, so teams avoided it.
Progress was slow, and confusion was constant.
If Developer 1 later changed something, Developer 2 had no reliable way to know what changed or why. There was no shared history, no visibility, and no record of decisions. Collaboration depended entirely on memory and trust, which broke down quickly.
Version control exists because this way of working simply did not scale.
Now picture a small team sharing a single pendrive that contains the entire project.
One developer takes the pendrive, works on a feature, saves the code, and hands it to the next person. To stay safe, they rename the project folder before saving their changes.
At first, the names look reasonable.
Then deadlines arrive.
Soon you see folders named:
final
final_v2
final_v2_fixed
latest_final
latest_final_really_fixed
Nothing gets deleted because no one is sure what is safe to remove. Everyone assumes someone else knows which version is correct.
No one actually does.

This was not carelessness. It was survival.
If two developers edited the same file, whoever saved last won. The other person’s work disappeared without warning. There was no merge, no conflict message, and no recovery.
Hours or days of work could be lost instantly.
Pendrives failed. Email attachments were outdated. Shared folders were overwritten by mistake.
Once a change was gone, it was usually gone forever.
You could see the current code, but not how it got there.
Who made this change?
Why was it done?
When did it happen?
When something broke, the same question always came up:
“Who touched this last?”
Most of the time, no one knew.
Developers avoided working at the same time because it was too risky. Teams worked slower just to stay safe.
As soon as projects grew larger or teams became remote, this model collapsed completely.
Those folder names were not a joke. They were a workaround.
Each rename was a manual attempt to create version history. Developers were trying to protect themselves from losing work.
But folders cannot explain changes.
They cannot show what broke something.
They cannot help you roll back safely.
File names do not tell a story. Software needs history, not guesses.
Replace the pendrive with shared drives, ZIP files, or long email threads. Replace two developers with ten, or a remote team across time zones.
The same problems appear, just faster and louder.
At that point, version control stopped being optional.
Version control systems exist because software needed memory.
They record every change.
They track who made it and when.
They allow multiple developers to work in parallel without overwriting each other.
Instead of copying folders, you commit changes.
Instead of guessing which version is correct, you check the history.
Instead of fearing mistakes, you know you can roll back.
Version control did not just organize code.
It made collaboration possible at scale.
Tools like Git did not appear because developers wanted something fancy. They appeared because the old way was fragile, stressful, and impossible to maintain.
The pendrive era showed what happens when history, collaboration, and accountability are missing.
Version control exists because losing code once is painful.
Losing it every week is unacceptable.