Skip to main content

Command Palette

Search for a command to run...

A Time Before Git And The Pendrive Problem

Published
3 min readView as Markdown

Let us travel back in time to an era when sharing code was not as easy as it is today. Imagine working on a project with a friend, where the only way to exchange code is through a pendrive.

How hard could it be?

The Pendrive Problem

You write your code, copy the entire project onto a pendrive, and hand it over. Your friend adds a new feature, saves the updated code as “final_v0”, and sends it back. Later, you discover a critical bug they missed. You fix it, rename the project to “final_v1”, copy everything again, and send it back to your friend.

Sounds manageable, right?

Now imagine the same pendrive carrying a codebase of over 50,000 lines, spread across multiple modules. How do you find out what change introduced a bug to you code? Reading through tens of thousands of lines just to identify what was added or modified is clearly not an efficient approach. And this problem exists even when there are only two developers involved.

Now scale this to 200 developers, all contributing features, fixes, and experiments. At this point, two major problems emerge.

  • Either everyone waits for the pendrive to stay in sync. This will slow development to a crawl, where a single round of changes can take weeks or even months.

  • Or everyone works independently on their own copy of the code, making synchronization nearly impossible, with changes clashing and no reliable way to merge them back together.

At this scale the problem was no longer about writing code it was about managing changes.

How Was The Pendrive Problem Eventually Solved?

What we needed was a system designed specifically to solve these problems. A system that was accessible to all developers at all times, and one that tracked changes, not entire copies of the codebase.

This is where a Version Control System like Git came to the rescue.

Instead of storing the whole project every time, Git records small, meaningful snapshots called commits. Each commit captures essential information: what changed, who made the change, and when it was made.

This makes it possible to keep the codebase centralized yet synchronized, even when multiple developers are working on it simultaneously without overwriting each other’s work or losing history.

How Version Control Revolutionized Collaborative Development

Version control didn’t just change how code was stored, it changed how developers thought about writing software. Code was no longer a fragile asset that could be lost with a wrong copy or overwritten by mistake. It became a shared history, where every change was recorded and recoverable.

Developers could work in parallel without waiting for each other, experiment without fear of breaking the project, and review changes before they were merged. Instead of manually coordinating who worked on what, the system handled synchronization automatically.

Conclusion

The pendrive was never the real problem it was a solution for a time when software was smaller and teams were simpler. But as codebases grew and collaboration became unavoidable, the cracks in that approach became impossible to ignore. Like they say “Necessity is the mother of all inventions”, Version control emerged not as a luxury, but as a necessity. It solved the human problems of collaboration, coordination, and memory allowing developers to focus on what actually matters: building software and thinking like an engineer.

More from this blog