In fact, GitHub is a very convenient service for anyone who works with an array of changing files.
For clarity, we will not talk about programmers, but imagine that you are a designer who makes a website project. What will your workflow look like?
You create some kind of first version and gradually improve it until it is ready. In the process, you get many intermediate options. Some options will fail, and you will have to “roll back” the changes to the previous version. You may need to compare several versions in order to choose the best one. There will be errors that need to be corrected.
As a result, in the process of work, you will receive a huge number of files with designs of varying degrees of readiness, which will be difficult to understand.
Many of us have come across this when, for example, writing a diploma at the university. Remember all these documents "Full Diploma", "Diploma with corrections", "Latest Diploma", "Last Diploma", "Diploma total", "Clean Diploma", "Diploma to print"? It was exactly like this for me and it was difficult even for me to understand these versions, not to mention someone else. Horror!
Now imagine that this is not just a website design, but a full-fledged project to create some kind of application, which is being worked on by a whole team of developers, several designers, analysts, managers, marketers. Everyone does their job. Everyone needs to have a clear idea of the state of the project. There is a need to make changes without interfering with each other, and for these changes to be visible to other team members. It is necessary to distribute tasks and understand who is responsible for what tasks. And here the question of systematizing information and organizing version control of the project arises in a very serious way.
To organize the work of a large team in such a way that it would be convenient for everyone to work on one product, previous versions were not lost, it was clear what changes were made and who and when they were introduced by the GitHub platform.
GitHub allows all team members to work on a project at the same time. Each developer has his own version of the project on his computer. This allows you to work quietly, without intersecting, and without interfering with each other. After making changes to their files, programmers send an updated version of the project to the cloud, where all team members can see them. All versions of the project are saved, so if errors occur, you can easily “roll back” the project to the previous (or even the earliest) version.
GitHub has analogues, such as GitLab, Bitbucket and others. The platforms are different from each other, but serve the same purpose - to make things easier for their users.
So get acquainted, choose and master! Despite all the horror stories, GitHub (or equivalent) will become your faithful assistant in your work!