Now that semester has been going for a bit I'm getting questions from people I know who are studying about various things. This led to that recent post about the state of c++ education in 2021
My friend shared me this screenshot from a lecture slide:
What do you notice about this?
I find asking people this question quite interesting, because depending on what you know you are likely to give quite a different answer here.
People who know nothing are likely to think this sounds reasonable and maybe don't think much more of it. People who have gone through the painful experience of having lost a substantial amount of work react to this very differently. Once you've gone through the experience of losing hours of work the pain tends to stick with you for a while, you start to ask not if you will back up work but how. The best tools by far for backing up plain text based work, of which computer code is just one example, are modern version control tools. Once you've got used to using them it's pretty much impossible to go back.1
Seeing as this is supposedly a software engineering course the stand out part to me about this is that version control tools are not mentioned as the number one item here. And it gets worse, far worse, as it turns out version control isn't on their curriculum anywhere. I think this is dangerously out of touch and frankly they are failing their students by not covering this. This is disturbingly common too, I remember at a previous job a new hire came from a software development course, and had rather high marks even, but didn't understand even the most basic thing about version control. He wasn't able to contribute any code at work until he learned how to interact with Git.
Version control systems are now sufficiently powerful enough to make such an overwhelmingly positive impact on software construction such that not using them is effectively negligent. These tools are freely available and have a huge ecosystem around them, there's really no excuses for not using them. This has been the state of affairs for many years as well, back when I was studying some of these subjects we covered version control and Git didn't even exist back then. I remember doing some things with RCS which was kinda shit compared to modern tools and when we eventually used Subversion it felt great, but the fact that version control was on the curriculum was something I'm extremely grateful for. Now you have Git being freely available and there's just very little excuse for not teaching it. It's used basically everywhere in the industry, if not as the version control of choice then you will likely see it in 3rd party packages you interact with.
If you are putting together a software engineering curriculum please make sure that version control is covered, do your part in making the industry better.
I'm dealing with writing a business case for something at the moment and currently we are working with a word document that's being emailed back and forth. This is just hell. I strongly think that people outside of software development, like say content writers, can get great benefits from using version control tools as well. Anyone that deals with creating multiple versions of documents is well placed to gain substantially from learning version control software to at least a basic level. ↩