Pen Drive Problem : Version Control
Introduction : Why Version Control Exists
Before the invention of modern version control tools were invented and existed software developers still wrote the code , but managing the code changes was a big challenge and it made the whole coding process more messy and increased risk of loss of code versions. Also their was a limitation on the team - based development.
And hence the concept of VERSION CONTROL exists to solve these exact problems :
tracking changes
preventing data loss
enabling safe team - based collaboration
The Pen Drive Analogy in Software Development :
Before the existence of version control systems and tools, there was a time where code was written by the software developers and was shared between team members for collaboration using
Pen Drives
Emails
Shared Folders
A typical work flow of the team based collaborative software development would look like this before the existence version control tools :
First developer would write the code and save it in Pen Drive.
Then this Pen Drive would be passed to another developer.
That developer then modified the same code files in the Pen Drive and saved it again in the same Pen Drive.
And in this manner the Pen Drive would be kept circulating in the team until the project development was completed.
To avoid loosing work during development the code files were renamed in the following ways :
For Example :
project_final
project_final_v2
project_latest
project_latest_final_final
This method was still manageable for small codes and projects, but this method made a big problem while managing big codes and projects.

Problems Faced Before The Version Control Systems Existed :
Over-writing the existing code :
When the pen drive would be passed between team members, if any of the two team developers edited the same code file :
The new save of the change made would overwrite the existing of the version saved previously by the other team member.
Once saved the reversing became impossible and hence no going back once changes were saved.
Also there was no easy way to merge only changes in the existing code : Either the whole code changed or the Nothing changed.
Losing The Changes :
If the Pen Drive was :
Lost
Corrupted
Accidently Formatted
Then the entire changes and hard work of the team from long time would get lost.
No Trackability of the History :
Once some changes were made , there was no clear answer to the following questions :
Who changes the particular line in the code ?(who = team member)
When was the feature added ? (Date and Time)
Why was this logic modified ? (Reason for modification)
Once the file was replaced by the new version, the older version was gone and it could not be brought back again by any means.
No Real Team Based Collaboration Was Possible :
Developers could not
Work on the same code at same time.
Review each other’s changes and code properly.
Rolling back to a stable version was impossible, if something in the code broke during development.
Pen Drive Problem and Real World Team Collaboration : Relation
As the teams grew in size :
One person’s mistake while implementing changes could break the entire project.
If any mistake took place, it would lead to errors and bugs, which required manual searching through old code files.
Sharing updates through mail also lead to confusion, as multiple mails were not possible to be tracked efficiently.
All the above problems made the real world software development less scalable, and hence further the requirement of Strong Version Control System was necessary.
Why Version Control became Mandatory:
Finally Version control systems were created to replace this fragile workflow with a structured, reliable process and increase the efficiency of development during Real World Team Collaboration.
The Version Control Systems Introduced :
A complete history and track of every change made during development.
Safe collaboration with team without facing the problem of overwriting.
The ability to roll back to any working version if required.
Teams got to know who changed what and why in the project, defining the Clear Ownership of the change made.
Now instead of passing pen drives, or sharing code files through mails, developers now are able to work on copies of same projects, which were intact under a version control system, and everything is managed intelligently.

Conclusion :
From above discussion and scenarios, we can understand the need of version control systems. Pen Drive analogy highlighted the necessity of the version control more clearly.
From Pen Drive analogy, we understood that what worked for small teams and small projects, would not work always for bigger teams and projects. Losing code, collision between code changes and lack of history tracking made the whole process of software development unreliable.
And hence the emergence of Version Control solved these problems and became the function of modern software engineering, and not a optional tool. This shift is the main reason that, today every serious project relies on version control systems.