Skip to main content

Command Palette

Search for a command to run...

Why Version Control Exists: The Pendrive Problem

Updated
7 min readView as Markdown
Why Version Control Exists: The Pendrive Problem

The Horror Story

It's 2008. You're in a group project with three other people. Code is due tomorrow.

Sarah emails you project_final.zip. You make changes and save it as project_final_v2.zip.

Meanwhile, Jake has been working on Sarah's original version. He emails everyone project_LATEST.zip.

You try to merge Jake's changes into yours manually. Copy-paste, hoping nothing breaks. Save it as project_final_FINAL.zip.

Then Sarah says "Wait, I was still working on it!" She sends project_final_v2_ACTUAL.zip.

Nobody knows which version has what. Someone's changes are gone. There's a bug somewhere but you can't figure out who added it.

Deadline is in 3 hours.

This was actually how people worked before Git became standard. Not kidding.

How We Used to "Collaborate"

The Pendrive Dance

  1. Put your code on a USB drive

  2. Walk over and hand it to your teammate

  3. They make changes

  4. Hand it back

  5. Hope nobody else was working on the same files

Email Attachments

  1. Email code.zip to everyone

  2. Everyone works on it separately

  3. Email modified versions back

  4. Try to merge everything manually

  5. Lose half the changes in the process

The Folder Nightmare

Your project folder looked like this:

project/
├── code.js
├── code_backup.js
├── code_old.js
├── code_final.js
├── code_final_v2.js
├── code_final_FINAL.js
├── code_final_FINAL_USE_THIS_ONE.js
└── code_final_ACTUAL_FINAL_Jan25.js

And you still couldn't remember which one actually worked.

Shared Network Drive

Everyone worked on files in a shared folder. Seemed better but:

  • Two people edit the same file → last save wins, first person's work is gone

  • Someone deletes something by accident → gone forever

  • No way to see who changed what

  • Can't undo something from last week

The Real Problems

Problem 1: Overwriting Work

What happened:

  • Monday 9 AM: You fix the login bug

  • Monday 10 AM: Teammate fixes signup bug (doesn't have your login fix)

  • Monday 11 AM: They upload their version

  • Your login fix is gone. Nobody noticed for 3 days.

// Your version (9 AM) - fixed
function login(username, password) {
  if (!password || password.length < 8) {
    return { error: 'Password too short' };
  }
  // ...
}

// Teammate's version (10 AM) - doesn't have your fix
function login(username, password) {
  // old buggy code
}

// What's in the shared folder at 11 AM: Your fix is GONE

Problem 2: No History

Bug in the payment system. You need to know:

  • Who wrote this?

  • When?

  • Why did they write it this way?

With pendrives: No idea. You had to ask around and hope someone remembered.

Problem 3: Can't Go Back

Released v2.0. Something broke. Need to see what v1.9 looked like.

With pendrives: "Did anyone keep a backup?" Usually, no.

Problem 4: Can't Work in Parallel

Both people working on the same file. Last one to save wins. First person's work disappears.

Problem 5: Impossible to Experiment

Want to try a new feature without breaking the main code?

  1. Copy entire project folder

  2. Name it project_experimental

  3. Work on it

  4. If it works, manually copy changes back

  5. If you changed 50 files, good luck

You end up with:

project_main/
project_experiment/
project_testing/
project_backup/
project_DONT_DELETE/

Nobody knows which folder has what.

Problem 6: No Code Review

"Hey, check my code?" Emails 50 files "Which parts did you change?" "Ummm... I think utils.js and api.js? Not sure."

No way to see what actually changed. Just trust it works.

Team Collaboration Was a Nightmare

5 developers building an e-commerce site:

Week 1:

Sarah: user authentication
Jake: product catalog
You: shopping cart
Mike: payment system
Lisa: admin panel

Everyone works separately. All good.

Week 2: Time to combine everything into one app.

Mike downloads everyone's code. Files with the same name - which version to keep? Opens files side by side. Copy-pastes. Something breaks. Nobody knows whose code caused it.

Debugging takes 2 days.

The Lost Changes Story

Monday: You spend 4 hours fixing a security bug
Monday evening: Email the fixed code to team lead
Tuesday: Team lead merges with other changes
Wednesday: Your security fix is missing

What happened? Team lead was working on an old version. Your fix got lost in the manual merge.

The vulnerability ships to production.

The "Which File" Game

Which is the latest version?

report_final.doc
report_final_v2.doc
report_final_UPDATED.doc
report_final_Jan20.doc
report_final_REVIEWED.doc
report_LATEST_USE_THIS.doc

Answer: Nobody knows. Open each one and compare manually.

Now imagine 50 code files. Every day.

When Everything Broke

Small projects (2-3 people): The pendrive method was painful but sort of worked.

Larger projects (5+ people, 100+ files): Complete chaos.

Companies started losing:

  • Months of work to overwrites

  • Bug fixes that disappeared

  • Money from shipping broken code

  • Developers who quit out of frustration

Something had to change.

Enter Version Control

Git solved every single problem.

What Git does:

  • Single source of truth - one repository, everyone pulls from it

  • Complete history - every change ever made is recorded

  • See who changed what line and when

  • Branch to work on features separately

  • Automatic conflict detection

  • Revert to any previous version instantly

  • Everyone works in parallel safely

Old Way vs New Way

Pendrive HellVersion Control
Manually copy filesgit clone
No idea who changed whatgit blame
Lost changes foreverComplete history
Can't go backgit checkout any version
Manual mergingAutomatic merge + conflict detection
One person at a timeParallel work
"final_v3.zip"Proper version tags

The Transition Was Rough

When Git came out (2005), people complained:

  • "Too complicated!"

  • "Command line is scary"

  • "Pendrives worked fine"

But after learning Git, nobody went back.

First few days: confusing
After a week: "Oh, this makes sense"
After a month: "How did I live without this?"
After a year: "I'd quit if I had to use pendrives again"

Today

Version control isn't optional anymore. It's mandatory.

You can't:

  • Get a developer job without knowing Git

  • Contribute to open source without GitHub

  • Collaborate on projects without version control

  • Deploy to production without it

Modern workflow:

  1. Clone repository

  2. Create branch for your feature

  3. Make changes, commit with messages

  4. Push to GitHub

  5. Create pull request

  6. Team reviews (can see exactly what changed)

  7. Merge

  8. Auto-deploy

All impossible with pendrives.

Wrapping Up

The pendrive era taught us that manual file management doesn't scale. Human memory can't track changes. Collaboration needs proper tools.

Version control didn't just make things easier - it made modern software development possible.

Next time you run git commit, remember people used to write changes on sticky notes attached to USB drives.