<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Why version control ?]]></title><description><![CDATA[Why version control ?]]></description><link>https://pendrive-101-problem.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Wed, 16 Sep 2026 12:31:48 GMT</lastBuildDate><atom:link href="https://pendrive-101-problem.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Before Git: Understanding the  Pen-drive Problem]]></title><description><![CDATA[Table of content

Introduction: Before Version Control

The Pen-drive Way of Sharing Code

The Real Pendrive Problem

When Things Started Breaking

Collaboration Without Version Control

Why Developers Needed Something Better

How Version Control Sol...]]></description><link>https://pendrive-101-problem.hashnode.dev/before-git-understanding-the-pen-drive-problem</link><guid isPermaLink="true">https://pendrive-101-problem.hashnode.dev/before-git-understanding-the-pen-drive-problem</guid><category><![CDATA[ChaiCode]]></category><category><![CDATA[Chaiaurcode]]></category><category><![CDATA[ChaiCohort]]></category><category><![CDATA[Git]]></category><dc:creator><![CDATA[Anshul Tripathi]]></dc:creator><pubDate>Sat, 31 Jan 2026 16:52:37 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1769982357145/a2590361-0765-4306-9402-115d328e94c9.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Table of content</p>
<ul>
<li><p>Introduction: Before Version Control</p>
</li>
<li><p>The Pen-drive Way of Sharing Code</p>
</li>
<li><p>The Real Pendrive Problem</p>
</li>
<li><p>When Things Started Breaking</p>
</li>
<li><p>Collaboration Without Version Control</p>
</li>
<li><p>Why Developers Needed Something Better</p>
</li>
<li><p>How Version Control Solved This</p>
</li>
<li><p>From Pen-drive to Git</p>
</li>
<li><p>Conclusion</p>
</li>
</ul>
<hr />
<h2 id="heading-introduction">Introduction</h2>
<p>Imagine working on a project with your friends where files are passed around using a pen drive. One person updates the code, another overwrites it by mistake, and suddenly no one knows which version is the latest. Files are renamed to <em>final</em>, <em>final_02</em>, or <em>fin**al_03_really_this_one</em>. Now can you imagine how big this problem is? This is the classic <strong>pen drive problem:</strong> confusion, data loss, zero developer contribution and zero accountability.</p>
<p>Now this is the biggest problem which the version control solves. Instead of copying files back and forth, the version control keeps track of every single change made by anyone; it also keeps track of who made the change and when he made the change. In this blog we are going to talk about why version control exists, how it solves the pen drive problem and why tools like GitHub and Git have become a necessity for the modern developer.</p>
<hr />
<h2 id="heading-the-pen-drive-way-of-sharing-code">The Pen Drive Way of Sharing Code</h2>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769876352358/481255a2-393d-4af7-8960-7ec494ae7376.png" alt class="image--center mx-auto" /></p>
<p>In the earlier days when the developer community used to collaborate for some projects, they used to copy the code file into a pen drive and then go and physically share it with each other. Yah! You heard it right; they used to go physically and share the drive, and then only the other developers could start working on that project. It sounds stupid, but this was the only way back then to collaborate with other developers.</p>
<hr />
<h3 id="heading-what-is-the-pen-drive-method">What is the Pen-drive Method?</h3>
<p>The pen-drive method is exactly what it sounds like: the developer used to copy the code file onto a USB or pen drive and physically hand it over to the other person, and then the other person used to plug that USB into their computer, and then they could start working on that file.</p>
<p>This was the standard practice for many developers back in the 2000s when no version control and cloud storage were in place. It was simple and straightforward and required no technical support but was not the best practice.</p>
<h3 id="heading-how-it-worked">How it worked</h3>
<p>Back then the typical workflow would look something like this –</p>
<ol>
<li><p>Initial Share 👨🏼‍💻: You had finished writing your code; now copy the entire project folder into your USB pen drive and physically go with the pen drive with your teammate.</p>
</li>
<li><p>Work Independently 🤝: Now your teammate can copy the project folder into their system, and they can start making the changes. Meanwhile, you might continue working on your copy.</p>
</li>
<li><p>The merge nightmare 💀: A few days later you have to manually compare your code file and have to copy and paste every single code block, hoping that you don’t accidentally overwrite each other’s work.</p>
</li>
<li><p>Pray and Repeat 🙏: This painful cycle has to continue throughout the project’s lifetime.</p>
</li>
</ol>
<hr />
<h2 id="heading-the-real-pen-drive-problem">The Real Pen-drive Problem</h2>
<p>The problem with the pen drive system is that we have to monitor every single change in very detail. We don’t know who made the changes or in what context he made the change, or if he even made the change, even the big mess of renaming the file continuously. Let’s go through every single challenge that every developer used to face at that time.</p>
<ol>
<li><h3 id="heading-version-chaos">Version Chaos</h3>
</li>
</ol>
<p>Imagine that you are working on a middleware.js and you have to add authentication features. Your teammate is also working on middleware.js on their copy, adding password validation. Sometime later you meet up with your pen drives. Now you have two different versions of the same file, both with equal and important changes. Someone has to manually go through both files, line by line, and create a merged version, and if he/she misses one line, he/she will introduce bugs or lose functionality.</p>
<ol start="2">
<li><h3 id="heading-no-historical-record">No Historical Record</h3>
</li>
</ol>
<p>If you made a change that broke everything, then there is no easy way to see what change you or your teammate has made, and there is no easy way to undo it even if you press Ctrl+Z to yesterday’s version. You’d have to manually review your code from the start and have to remember what modifications you have made. Now few people will say that they can solve this problem by saving each and every version into a new file and naming the version in front of it, but believe me, this will cause you more trouble, and it will quickly become unmanageable.</p>
<ol start="3">
<li><h3 id="heading-the-naming-convention-mess">The Naming Convention Mess</h3>
</li>
</ol>
<p>Speaking about creating a new file and copying the entire code into that file for every single change made and naming that file with the version in front of it will not solve any problem; else, it will just have no sense and make the naming chaotic, and what will you do once the project folder grows too big and occupies the whole space of the pen drive?</p>
<ol start="4">
<li><h3 id="heading-physical-limitations">Physical Limitations</h3>
</li>
</ol>
<p>Just imagine that your teammates live in different cities or countries; you have to mail them the pen drive and have to wait a few days for it to arrive, and then you have to wait a few more days for them to mail it back to you. Back then it was not easy for the small team for international collaboration.</p>
<ol start="5">
<li><h3 id="heading-the-security-nightmare">The Security Nightmare</h3>
</li>
</ol>
<p>If the pen drive gets lost, everything is finished; the team has to write the code from the start again. You have to take utmost care of the pen drive.</p>
<ol start="6">
<li><h3 id="heading-collaboration-bottleneck">Collaboration Bottleneck</h3>
</li>
</ol>
<p>Only one person could effectively work on a file at a time. If two people needed to work on the same feature, someone had to wait. This serialised workflow meant projects that could take weeks with modern tools would drag on for months.</p>
<hr />
<h2 id="heading-when-things-started-breaking">When Things Started Breaking</h2>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769876406435/956af18f-34eb-4a4a-a9b8-764efd3eded4.png" alt class="image--center mx-auto" /></p>
<p>This is where the pen drive method truly showed its weaknesses. Imagine this common scenario:</p>
<p>Your application worked perfectly yesterday. Today, after integrating changes from your teammate's pen drive, nothing works. The app crashes on startup. You have no idea what happened and what changes your teammate has made.</p>
<p>With the pen drive method, your debugging process looked like this:</p>
<ol>
<li><p><strong>The Blame Game</strong>: "Did you change the database configuration?" "No, did YOU?" Nobody remembers exactly what they modified three days ago.</p>
</li>
<li><p><strong>File Comparison Hell</strong>: Opening two versions of the same file side-by-side in different windows, manually scanning hundreds of lines looking for differences.</p>
</li>
<li><p><strong>The Nuclear Option</strong>: Sometimes it was easier to just start over from the last "known good" version and re-implement everything from scratch. Hours or days of work, gone.</p>
</li>
<li><p><strong>No Safety Net</strong>: Unlike modern version control where you can check out any previous commit, with pen drives you only had whatever backup copies you remembered to make. Didn't save that working version? Too bad.</p>
</li>
<li><p><strong>Integration Anxiety</strong>: Every time you merged code from a pen drive, it felt like defusing a bomb. Will it work? Will it break everything? You wouldn't know until you tried running it.</p>
</li>
</ol>
<p>The stress of "integration day" was real. Teams would sometimes dedicate entire days just to merging code from different pen drives and fixing the inevitable conflicts and breaks that resulted.</p>
<hr />
<h2 id="heading-collaboration-without-version-control">Collaboration Without Version Control</h2>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769876436393/c89bedce-9327-4736-ad18-28aff45327ed.png" alt class="image--center mx-auto" /></p>
<p>Now just that you are working on a team project where the code files are shared through a pen-drive. Every single update comes with a new filename like <em>final_01</em> <em>final02</em> etc , Now this is what the collaboration would like with the version control .</p>
<p>When teams don’t use the version control the collaboration quickly becomes messy :</p>
<ol>
<li><p>No single source of truth : No one knows who has the original file and which one is the latest copy.</p>
</li>
<li><p>Overwriting work : Two people can edit the same file and one person’s change could disappear permanently and he have to start his work beginning</p>
</li>
<li><p>Physical Error : While sharing the pen-drive physically we have to handle it with outmost care .</p>
</li>
<li><p>No History : You can’t be able to track who changed what and at what time they made the change and why they made the change.</p>
</li>
</ol>
<h3 id="heading-scaling-becomes-a-nightmare">Scaling Becomes a Nightmare</h3>
<p>If you are a solo developer or a small team then it might work for you but the moment the project grows big or more starts to join your team everything will slow down collaboration will become nightmare and people would fear to change simple things because there would be no safety net.</p>
<p>So collaboration without version is a nightmare .</p>
<hr />
<h2 id="heading-why-developers-needed-something-better">Why Developers Needed Something Better</h2>
<p>As the software projects grew in size and complexity the old way of collaboration simply stopped working , sharing the code with the help of pen-drive wasn’t <em>relevant anymore and it was risky as well .</em></p>
<ol>
<li><p>Teams wanted to work in parallel : As the project grew bigger the teams wanted to work in parallel without having the fear of overwriting someone else’s work , They wanted to monitor every single change made ,why it was made and who made it .</p>
</li>
<li><p>Experiment : The other man reason was experiment sometimes the developers want to experiment some new features and changes without disturbing the main project . This would required a large system so that the developer could easily do that without any fear .</p>
</li>
<li><p>Most important the developers needed confidence that their work is safe , recoverable and shareable and they can track every single changes . Most important they can <code>undo</code> their mistake without any worries .</p>
</li>
</ol>
<hr />
<h2 id="heading-how-version-control-solved-this">How Version Control Solved This?</h2>
<p>Version control system transformed the way developer use to collaborate by introducing a structured and transparency into the development process.Instead of sharing files manually the team begin to work from a single source of truth where every change was recorded and tracked .</p>
<p>Version control is a system that records changes to a file or set of files over time so that you can recall specific versions later. Lets say that you are a web designer and you want to keep every single design of your webpage and image a Version Control System (VCS) is a very wise thing to use. It allows you to revert selected files back to a previous state, revert the entire project back to a previous state, compare changes over time, see who last modified something that might be causing a problem, who introduced an issue and when, and more. Using a VCS also generally means that if you screw things up or lose files, you can easily recover.</p>
<h3 id="heading-version-controls-types">Version Controls types</h3>
<ol>
<li><p>Local version control :Many people’s version control method of choice is to copy files into another directory . This approach is very common because it is so simple, but it is also incredibly error prone. It is easy to forget which directory you’re in and accidentally write to the wrong file or copy over files you don’t mean to.</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769981304878/fc018e5f-a6da-4f11-9d70-b9449615428a.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>Centralised Version Control System : The next major issue that people encounter is that they need to collaborate with developers on other systems. To deal with this problem, Centralized Version Control Systems (CVCSs) were developed. These systems (such as CVS, Subversion, and Perforce) have a single server that contains all the versioned files, and a number of clients that check out files from that central place. For many years, this has been the standard for version control.</p>
</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769981447485/66501ebd-d6cf-4bb4-9988-a481a9339f2a.png" alt class="image--center mx-auto" /></p>
<ol start="3">
<li><strong>Distributed Version Control Systems:</strong>This is where Distributed Version Control Systems (DVCSs) step in. In a DVCS (such as Gi), clients don’t just check out the latest snapshot of the files; rather, they fully mirror the repository, including its full history. Thus, if any server dies, and these systems were collaborating via that server, any of the client repositories can be copied back up to the server to restore it. Every clone is really a full backup of all the data.</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769981552349/88b25eb1-7f17-48be-9675-f43028236d42.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-from-pen-drives-to-git">From Pen-drives to Git</h2>
<p>So, what is Git in a nutshell? This is an important section to absorb, because if you understand what Git is and the fundamentals of how it works, then using Git effectively will probably be much easier for you. As you learn Git, try to clear your mind of the things you may know about other VCSs, such as CVS, doing so will help you avoid subtle confusion when using the tool. Even though Git’s user interface is fairly similar to these other VCSs, Git stores and thinks about information in a very different way, and understanding these differences will help you avoid becoming confused while using it.</p>
<p><strong>Git</strong> is a <strong>distributed version control system</strong> used to <strong>track changes in source code</strong> and help developers <strong>collaborate efficiently</strong> on projects.</p>
<p>In simple words, Git keeps a <strong>history of your project</strong>, so you always know <strong>what changed, who changed it, and when</strong> and you can go back to any previous version if something breaks.</p>
<hr />
<h2 id="heading-conclusion">Conclusion</h2>
<p>From manual file sharing to modern distributed systems, version control has completely transformed how developers collaborate. It replaced confusion with clarity, risk with safety, and chaos with structure. Tools like Git allow teams to track changes, work in parallel, and recover from mistakes with confidence.</p>
<p>If you want to read more about version control and Git you can visit the official website</p>
<p><a target="_blank" href="https://git-scm.com/book/en/v2/Getting-Started-What-is-Git%3F">Official Docs</a></p>
<p>If you liked the blog please give a like and share , if you wanted to give feedback please comment down below 😃</p>
<h2 id="heading-thank-you">Thank you</h2>
]]></content:encoded></item></channel></rss>