<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Shubham Prasad</title>
    <description>The latest articles on Forem by Shubham Prasad (@infohrsp).</description>
    <link>https://forem.com/infohrsp</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1475507%2F1f559898-0eae-469e-9a5f-5e1278613ca9.png</url>
      <title>Forem: Shubham Prasad</title>
      <link>https://forem.com/infohrsp</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/infohrsp"/>
    <language>en</language>
    <item>
      <title>Understanding the Need for Version Control: Solving the Pendrive Problem</title>
      <dc:creator>Shubham Prasad</dc:creator>
      <pubDate>Thu, 29 Jan 2026 02:24:29 +0000</pubDate>
      <link>https://forem.com/infohrsp/understanding-the-need-for-version-control-solving-the-pendrive-problem-ndc</link>
      <guid>https://forem.com/infohrsp/understanding-the-need-for-version-control-solving-the-pendrive-problem-ndc</guid>
      <description>&lt;h2&gt;
  
  
  The Pre–Version Control Era
&lt;/h2&gt;

&lt;p&gt;Before Git, before GitHub — even before stable internet — writing software as a team was messy.&lt;/p&gt;

&lt;p&gt;Imagine you and your friend Sid building your dream project. No internet. No cloud.&lt;br&gt;&lt;br&gt;
Just two laptops and a pendrive.&lt;/p&gt;

&lt;p&gt;You write your part, zip the folder, copy it to the pendrive, travel to Sid’s place.&lt;br&gt;&lt;br&gt;
Sid writes his part, saves, and hands the pendrive back.&lt;/p&gt;

&lt;p&gt;You return home, open the project… and something has changed.&lt;/p&gt;

&lt;p&gt;But you don’t know:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;what changed
&lt;/li&gt;
&lt;li&gt;where it changed
&lt;/li&gt;
&lt;li&gt;who changed it
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You ignore it because the project still works.&lt;br&gt;&lt;br&gt;
Until the next day — when a bug appears.&lt;/p&gt;

&lt;p&gt;Now you're stuck:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If you fix it, you might overwrite Sid’s work.
&lt;/li&gt;
&lt;li&gt;If Sid fixes something later, he might overwrite yours.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is where development turns into chaos.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsxhcfqlh7pksta92d769.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsxhcfqlh7pksta92d769.png" alt="flow" width="800" height="91"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The “Brilliant” Fix You and Sid Invent
&lt;/h2&gt;

&lt;p&gt;Since both of you are smart, you create a clever system:&lt;/p&gt;

&lt;p&gt;You start making &lt;strong&gt;new folders&lt;/strong&gt; for every change.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5ta8ynwx6mju26cw28m8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5ta8ynwx6mju26cw28m8.png" alt="fileversions" width="800" height="212"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For a moment, this feels genius.&lt;/p&gt;

&lt;p&gt;Then reality hits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the project size explodes
&lt;/li&gt;
&lt;li&gt;you forget which folder contains which change
&lt;/li&gt;
&lt;li&gt;both of you edit different copies
&lt;/li&gt;
&lt;li&gt;merging becomes impossible
&lt;/li&gt;
&lt;li&gt;adding even one more teammate breaks everything instantly
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your “system” collapses the moment more than one person works at the same time.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Real Problems
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. No visibility
&lt;/h3&gt;

&lt;p&gt;You can’t see what changed, when it changed, or who did it.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. No reliable history
&lt;/h3&gt;

&lt;p&gt;If a bug appears, there’s no clean way to go back to a working version.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Risk of overwriting
&lt;/h3&gt;

&lt;p&gt;One person’s work can silently erase another’s.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. No parallel work
&lt;/h3&gt;

&lt;p&gt;Only one person can work safely at a time.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Slow, painful development
&lt;/h3&gt;

&lt;p&gt;Everyone waits for everyone else → progress dies.&lt;/p&gt;

&lt;p&gt;This isn’t a small inconvenience.&lt;br&gt;&lt;br&gt;
This is a &lt;strong&gt;fundamental blocker&lt;/strong&gt; to building software as a team.&lt;/p&gt;




&lt;h2&gt;
  
  
  Trying to Imagine a Better System
&lt;/h2&gt;

&lt;p&gt;Developers around the world wondered:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“What if we had a system that tracks changes the way a time tracker logs start and end times?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A system that could:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;record every change
&lt;/li&gt;
&lt;li&gt;know who made it
&lt;/li&gt;
&lt;li&gt;let us go back to any past version
&lt;/li&gt;
&lt;li&gt;prevent overwriting
&lt;/li&gt;
&lt;li&gt;allow teams to work at the same time
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But that raised more questions.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do we store these changes?
&lt;/h3&gt;

&lt;p&gt;In files? In a custom database? Something fast but reliable?&lt;/p&gt;

&lt;h3&gt;
  
  
  How do we prevent history tampering?
&lt;/h3&gt;

&lt;p&gt;Maybe only allow changes through specific commands.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do teams collaborate from different places?
&lt;/h3&gt;

&lt;p&gt;Host this “change tracker” online so every developer can sync updates.&lt;/p&gt;

&lt;p&gt;This idea — the idea of &lt;em&gt;tracking&lt;/em&gt; and &lt;em&gt;organising&lt;/em&gt; changes — evolved into…&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is a Version Control System?
&lt;/h2&gt;

&lt;p&gt;Version Control is simply:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;A system that records every change to your files so you can revisit any version later.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Tools like Git, Mercurial, Subversion, and Perforce all follow this idea.&lt;/p&gt;

&lt;p&gt;At their core, they’re &lt;strong&gt;extremely smart trackers&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;They solve the pendrive problems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;lost work
&lt;/li&gt;
&lt;li&gt;overwritten files
&lt;/li&gt;
&lt;li&gt;no history
&lt;/li&gt;
&lt;li&gt;no safe collaboration
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9jx59foknlgvx6d4ni20.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9jx59foknlgvx6d4ni20.png" alt=" " width="800" height="267"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Version Control Became Essential
&lt;/h2&gt;

&lt;p&gt;Imagine the same pendrive chaos inside a real company with:&lt;/p&gt;

&lt;p&gt;10… 50… or &lt;strong&gt;hundreds&lt;/strong&gt; of developers.&lt;/p&gt;

&lt;p&gt;Everyone pushing code, fixing bugs, adding features, and moving fast.&lt;/p&gt;

&lt;p&gt;If even two people overwrite each other, the entire project can break.&lt;br&gt;&lt;br&gt;
If a bug appears and no one knows who changed what, teams can lose days.&lt;/p&gt;

&lt;p&gt;As software grew bigger and teams became global, this chaos became impossible to manage.&lt;/p&gt;

&lt;p&gt;Version control didn’t become popular because developers wanted it.&lt;br&gt;&lt;br&gt;
It became popular because &lt;strong&gt;without it, modern software would collapse&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Git, in particular, became the backbone because it offered:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;complete history
&lt;/li&gt;
&lt;li&gt;safe collaboration
&lt;/li&gt;
&lt;li&gt;powerful branching
&lt;/li&gt;
&lt;li&gt;extremely fast operations
&lt;/li&gt;
&lt;li&gt;a design that makes rewriting history almost impossible
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It didn’t just help teams — it made today’s software ecosystem &lt;em&gt;possible&lt;/em&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Can You Build Your Own VCS?
&lt;/h2&gt;

&lt;p&gt;Surprisingly: &lt;strong&gt;yes.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;At its core, a VCS is just:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a way to track changes
&lt;/li&gt;
&lt;li&gt;a way to store history
&lt;/li&gt;
&lt;li&gt;a way to sync updates
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You could build a simple one with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a database
&lt;/li&gt;
&lt;li&gt;some hashing
&lt;/li&gt;
&lt;li&gt;some diff storage
&lt;/li&gt;
&lt;li&gt;a small server to sync changes
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Different VCS tools do exactly this — they just implement these ideas differently.&lt;/p&gt;

&lt;p&gt;The idea is simple.&lt;br&gt;&lt;br&gt;
The engineering is not.&lt;/p&gt;

&lt;p&gt;That’s why developers rely on mature systems like Git, which have already solved all the tricky parts.&lt;/p&gt;




&lt;h2&gt;
  
  
  What’s Next?
&lt;/h2&gt;

&lt;p&gt;Version control isn’t just a tool — it’s a &lt;strong&gt;concept&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A concept built so developers can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;track every change
&lt;/li&gt;
&lt;li&gt;preserve clean history
&lt;/li&gt;
&lt;li&gt;collaborate without fear
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In the next article, we’ll look at &lt;strong&gt;Git&lt;/strong&gt; — the most widely used VCS today.&lt;/p&gt;

&lt;p&gt;We’ll cover:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;how Git stores your changes
&lt;/li&gt;
&lt;li&gt;what makes Git so fast
&lt;/li&gt;
&lt;li&gt;the essential commands you’ll actually use
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And no — GitHub isn’t Git.&lt;br&gt;&lt;br&gt;
It’s just a hosting platform.&lt;/p&gt;

&lt;p&gt;See you in the next one.&lt;/p&gt;

&lt;p&gt;Connect with me on &lt;a href="http://www.linkedin.com/in/prsdx" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; and &lt;a href="https://x.com/prsd_x" rel="noopener noreferrer"&gt;X&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>chaicode</category>
      <category>git</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
