Skip to main content

Command Palette

Search for a command to run...

Why Version Control Exists: The Pendrive Problem

Published
•5 min read•View as Markdown

There was a time when “version control” meant pendrives, email attachments, and folders named final, final_v2, and latest_final sitting on someone’s desktop. Code was copied manually, changed locally, and overwritten casually. As teams and projects grew, that chaos made one thing very clear: manual file management doesn’t scale.​


Why Version Control Exists

Version control is a system that tracks changes to your code, remembers every version, and lets teams work together without stepping on each other’s toes. It gives a single source of truth, with full history, so you can always answer: who changed what, when, and why?.​

Before tools like Git, teams still needed to share code—but they did it the hard way. That “hard way” is what this blog calls the pendrive problem.​


The Pendrive Analogy in Software Development

Imagine a small dev team building a website. There’s no GitHub, no GitLab—only a shared folder and a pendrive moving between people like a relay baton.​

Everyone saves slightly different versions:

  • home_page_final.html

  • home_page_final_v2.html

  • home_page_latest_final(1)_copy.html

At first, it feels manageable. But very quickly, no one remembers which “final” is actually final, or which file contains which change.​

Two developers edit the same file on different machines:

  • One adds a new button.

  • Another fixes a bug.

  • Someone copies their version over the other one.

The app still runs, but a bug returns or a feature disappears days later—and nobody knows why.​

Pendrive Workflow (Text Diagram)

textDeveloper A  --->  Saves file --> Pendrive --> Email --> Developer B
                    (final_v1)                       (creates final_v2)
                      ↓                                   ↓
          Overwrites / Conflicts / Lost Versions

This pendrive-style workflow was never designed for real collaboration. It was a workaround that broke the moment teams or codebases grew.​


Problems Faced Before Version Control Systems

Sharing code with pendrives, emails, and “final_v3_latest” folders created real, painful problems for teams.​

  • Overwriting work
    The last person to copy their version “wins”, and everyone else’s changes vanish with no trace.​

  • No history or traceability
    There is no commit history, no change log, and no way to see who changed what or when.​

  • No safe collaboration
    Multiple developers editing the same file means conflicts are silently overwritten instead of detected and resolved.​

  • Version chaos in folders
    File names like final, final_v2, latest_final, latest_final_backup pretend to be version control, but they only create confusion.​

  • High risk of data loss
    If a pendrive is lost, corrupted, or left at home, hours or days of work can disappear.​

Team Collaboration Without Version Control

textDeveloper A    Developer B    Developer C
   ↓               ↓               ↓
  Changes         Bug fix        Design tweak
   ↓               ↓               ↓
   ⟶ Email / Pendrive / Random Folders

Result:
- Multiple “latest” versions
- No clear source of truth
- Fixes and features randomly disappear

This was not caused by careless developers, but by a broken collaboration model.​


Pendrive Workflow vs Version Control Workflow

Version control systems like Git were created to fix exactly these problems. Instead of code living on one pendrive or one laptop, it lives in a repository that everyone can clone, update, and contribute to safely.​

Without Version Control (Pendrive / Email)

textWithout Version Control

Developer A
   |
   |  copies folder to pendrive / sends zip
   v
Pendrive / Email
   |
   |  edits, new folder: project_final_v2
   v
Developer B
   |
   |  edits, new folder: project_final_v2_latest_final
   v
Developer C

Problems:
- Different people work on different copies
- No single source of truth
- Files get overwritten or lost

With Version Control (Git / Repository)

textWith Version Control (Git / Repository)

        +----------------------+
        |   Remote Repository  |
        |     (e.g. GitHub)    |
        +----------+-----------+
                   ^
                   |
          push / pull / fetch
                   |
   ---------------------------------
   |               |               |
Developer A   Developer B    Developer C
    |              |              |
   commit         commit         commit

Benefits:
- One shared project history
- Everyone syncs from the same source
- Changes are tracked, reviewable, and recoverable

Version control turns a pile of disconnected folders into one consistent, shared codebase.​


Multiple Developers Editing the Same File

The pendrive problem becomes most obvious when several people touch the same file, like auth.js.

Scenario: auth.js Without Version Control

textScenario: auth.js without version control

Developer A                Developer B                Developer C
-----------                -----------                -----------
Works on old copy          Works on another copy      Works on pendrive copy
Adds login feature         Fixes a bug               Changes UI text

        ↓                         ↓                          ↓

          No central history or merge

        ↓                         ↓                          ↓

Result on shared folder / pendrive:
- auth.js (overwritten by last copied file)
- Some changes silently lost
- No idea who changed what

Same Scenario With Version Control (Git)

textScenario: auth.js with Git

Developer A       Developer B       Developer C
-----------       -----------       -----------
git pull          git pull          git pull
create branch     create branch     create branch
add feature       fix bug           tweak UI
git commit        git commit        git commit

        ↓             ↓                 ↓

        git push origin <branch-name>

        ↓  (Open pull/merge requests)

Repository:
- Shows all commits with authors and timestamps
- Highlights conflicts instead of hiding them
- Lets you review and merge changes deliberately

Version control makes parallel work normal instead of dangerous.​


Timeline: Lost Files vs Tracked History

Before Version Control: Messy Timeline

textTimeline without version control

v1        v2           v3             v4?
 |---------|------------|--------------X
           |            |
       "final"     "final_v2"
                      \
                       \-- "latest_final"

Problems:
- Old versions overwritten
- No easy way to go back
- No clear history of what changed

With Version Control: Clean Commit History

textTimeline with Git (commit history)

commit a1b2c3  -- "Initial version"
       |
commit d4e5f6  -- "Add login feature"
       |
commit g7h8i9  -- "Fix login bug"
       |
commit j1k2l3  -- "Improve UI text"

You can:
- Checkout any commit
- See exactly who changed what
- Compare any two versions (diffs)
- Tag releases like v1.0, v1.1, etc.

The Modern Lesson

Today, version control is not just a “nice-to-have”—it is mandatory for any serious software team. It solves the pendrive problem by giving structure, history, safety, and true collaboration to your codebase.

More from this blog

H

HIMANSHU ANAND

30 posts