Skip to main content

Command Palette

Search for a command to run...

Why Version Control Exists: The Pendrive Problem

Published
3 min readView as Markdown

Understanding the real pain before Git

Before learning any tool, I strongly believe one thing:
first understand the problem, then the solution automatically makes sense.

So instead of starting with Git commands, let’s talk about how developers used to work before version control existed.
Once you see that pain clearly, you’ll understand why version control is no longer optional.


Life before version control systems

Before Git and GitHub, developers still had to work together.
But the methods were very manual, risky, and confusing.

The email workflow

How it worked

  • Developer A writes code

  • Compresses the project into a ZIP file

  • Emails it to Developer B

  • Developer B makes changes and emails it back

  • This cycle repeats again and again

Problems with this approach

  • Version confusion
    Files were named like:

    • final.zip

    • final_real.zip

    • pakkafinal.zip

  • Human errors
    Someone sends the wrong ZIP file

  • No rollback
    If the new code breaks something, there’s no safe way to go back

Slowly, inboxes filled with ZIP files but clarity was still missing.


Shared folders on network devices

When emails became chaotic, teams moved to shared folders.

How it worked

  • Project is stored in a shared folder

  • Developers download it locally

  • Create backups like:

    • project_backup

    • backup_final

  • Upload it again, overwriting previous code

Problems here

  • Someone accidentally overwrites working code

  • No version history

  • Small conflicts go unnoticed

  • One mistake can break everything

This worked for very small teams, but not for long.


The pendrive workflow (the real nightmare)

Now comes the most famous one — the pendrive method.

Imagine three friends: Aman, Abhi, and Ravi working on one project.

How the pendrive story goes

  • Aman starts the project and writes HTML and CSS

  • He copies the folder into a pendrive and gives it to Ravi

  • Ravi adds JavaScript and UI improvements

  • He also edits some of Aman’s files

  • Saves everything and gives the pendrive to Abhi

  • Abhi adds backend logic

  • Accidentally removes some JavaScript code

  • The site still runs, so he doesn’t notice

  • Saves and returns the pendrive

A few days later, Aman opens the project.

Something feels wrong.
One feature that worked earlier is now broken.


Now the confusion starts

Everyone starts asking:

  • Who changed this file?

  • When did this bug come?

  • Which version was actually working?

No one knows.

So people start creating folders:

  • project_final

  • project_final_v2

  • project_final_last

  • really_final

Laptops get filled with folders, but clarity is still zero.

And one more scary question:

What if the pendrive gets lost or damaged?

All the hard work is gone.



Problems faced before version control systems

From all these workflows, the same problems kept repeating:

  • No single source of truth

  • No history of changes

  • No idea who changed what

  • Easy to overwrite someone else’s work

  • Difficult to fix bugs

  • Zero support for remote collaboration

  • Scaling to more developers became impossible

Development became more about managing chaos than writing code.


Why version control became mandatory

As software grew bigger and teams became global, these old methods completely failed.

Modern development needs:

  • Multiple developers working at the same time

  • Safe rollback when something breaks

  • Clear history of changes

  • Collaboration without overwriting work

Today:

  • CI/CD pipelines depend on version control

  • Open source projects cannot exist without it

  • Platforms like GitHub are built on it

  • Large teams are impossible to manage without it

Version control solved all the problems that pendrives, emails, and shared folders couldn’t.



Final thoughts

Version control was not invented for convenience.
It was invented because software development without it was painful and unsafe.