Configuration management is probably the most important thing a programmer can learn about in his or her early years, more so than just more languages that they won’t use again for a few years once they finished the class. I have not realized the importance of it until I started working for a game server community where they pretty much forced me to learn how to use Bitbucket (basically GitHub).
All of our projects would be stored in private repositories on Bitbucket where we would work on several projects at a time depending on priority, and only on parts we were assigned. Got a bug in this minigame on live? Make a hot fix, just push and commit directly to master. Working on that new update set for next month? Put it on the Beta branch. We were also working from all around the world; it was very important to know exactly what everyone would be working on, where, and to keep the syntax very precise and consistent. Otherwise, there’d be a snowball effect which would cause a lot of issues- none major- but would indefinitely effect progression in the project due to confusion and bugs.
Thankfully, I’ve never had to deal with that issue. I did, however, have to deal with people who didn’t know how to use GitHub/Bitbucket or any sort of version control while doing some hackathons. Although we were all in the same room, it still caused some strange habits to occur. Such as emailing project files, waiting for those files to come in before you could work on your part, or designating an entire large portion of the programming to one person while another does design while another person does the entire other large portion of programming on the hardware side. This sort of management also calls for a lot of back-seat programming (just watching someone program while occasionally giving feedback), which is not entirely bad, but it’s also not the most productive.
The chicken or the egg; which came first? That would probably be the best analogy to describe who made who popular: git to GitHub, or the vice versa.
To programmers, it’s without a doubt that ever since large programming projects have been made, online version control is extremely important. Being able to have a lot of programmers work and maintain the same project from all around the world in recent years have, of course, become a necessity. In order to achieve this, one must know git, or at least of its existence and tools for it if they don’t want to learn the command line. Though at the same time, if there weren’t such a popular (free) repository host that’s widely accepted in the programming community, would people still learn it?
Personally, I probably wouldn’t.