When I was a child, I lived near the statistic research institute. There were a lot of cardboards around the territory with printed rows of numbers. Some numbers punched with holes. Later I realized those cardboards were the first computer programs. They were used even earlier to code drawings on textiles.
The first computer I ever saw was 386 PC at school. It used five-inch disks. The first disk I bought was a three-inch disk for computer class at the University. My code and coursework fit the only disk. Once I pulled it out while the green light was on. That is when I learned to make backups.
I learned how to make backups using CVS (Concurrent Version System) at my first job. Most of the projects at that time were done by the only developer. That is why we did not use concurrent features.
At my second job, I learned about prod, dev and test envorinments. Frankly speaking, we used only the first two. Because test environment was considered a waste of resources. All tests were completed using dev only. I also learned about different access rights and roles. Developers had access to the dev environment only. Our project manager was responsible for copying codes from dev to prod. Once the new functionality was finished developer wrote a description and attached files with code. The manager checked the description and copied code. Once there were errors on the prod he reversed files to the previous version.
Today Git is the most popular system for backup, concurrent work and access rights management. Being integrated with another system Git allows one to run unit tests every time one pushes his code to the repository.
Git supports prod and dev environments that are usually called master and develop branches. Only the project manager can update the master branch. Developers can create their own branches like feature or bugfix and merge them to develop. Git allows to merge branches event if there are conflicting lines of code. E.g. one line of code was updated by different developers.
One can install Git on it’s own server but most developers prefer to use GitHub.com or Bitbucket.com. They allow one to compare code before and after updates, leave comments and likes, creating a social net for developers to share code and code review.
Our team uses Github.com and Bitbucket.com extensively. Clients can access the code 24/7, you can test, review and leave your comments.