Why don’t people use version control?
By Andrew Smith
Ever since I read the subversion manual I’ve been really impressed with version control, and with subversion especially. Like any other student in CS I’ve had my fair share of “Where is the latest version of my assignment? Crap, it’s on my desktop at home and it’s due in two hours”. And subversion got rid of that problem for me.
A couple of times I did a 30-minute tutorial on subversion to a class of CS students. I did my best to emphasize how easy it is to use and how significant a problem it solves. I’m sure I convinced a few to use it, but not nearly as many as I should have.
I guess there are two significant reasons why students don’t bother with subversion:
1 – No time to learn it
Even though there are really just 5 commands one needs to know to make good use of it – it’s 5 commands the students don’t feel like learning.
One shouldn’t blame the poor students, they already have so much to learn, especially in the beginning of a program. They have to manage their time just like anybody else, and learning something that’s supposed to save them from trouble at some undefined point(s) in the future isn’t high on their list of priorities.
2 – No server
Most people aren’t as impressed as me with Linux servers and don’t have their own linux box they could use for a subversion server. And if they do they’re on Rogers or Bell and they’re not allowed to have a public server on that connection.
So even though the subversion server installation is possibly the easiest of any serious server, and creating a repository can be done in a 2-line shell script it’s really beyond the average student’s ability.
All this is quite unfortunate for many reasons, among them:
- In the real world, unless a CS student ends up being a sysadmin or a webmaster – they’ll be required to know and use version control. The concepts of how version control works should be learned in school.
- Graduate students work on years-long projects. Working on a piece of code for a year with no version control is wrong for so many reasons I won’t bother explaining it here.
I’m working on a solution for this problem. That’s all I’ll say for now (until I work out the logistics).
Excercise for the reader: figure out what I called this project (I registered the domain name as soon as I decided to take the project on).
July 24th, 2008 at 9:40
2) I disagree that this is an issue. You can run several vcs (version control systems) as a local user… In fact, I think SVN is supposed to be used locally && the networking support added on later
3) No real catastrophic detriment (yet) for not using it.
The main reason is that Students dont really see the NEED for using VC. They’ve never experienced the anguish of losing their code, and most modern IDEs have long CTRL+Z memories so they do not need to store their changes.
Now that I know the power of VC I think that this tool should be manditory for submission of semester 1 projects. Teachers should not get submissions from students in the traditional way anymore, but instead checkout the current version of the assignment when marking.
July 25th, 2008 at 13:59
I’m not sure about you, but when I was in first semester, I had more time on my hands than I knew what to do with. I can understand experienced programmers not wanting to learn something new because “they don’t have time”, but students should be enthused to learn things like this. I sure would have been.
And as for #2, I’m surprised you didn’t mention a DVCS like Mercurial. I’ve been using Mercurial for some small pet projects and it is extremely easy to learn and use. Mercurial doesn’t have a “server” in the sense that you have to configure one before you can start using it.
A problem with this is the skill level of first semester students varies so widely. Some are bored, others have barely touched a computer. Teaching source control at the same time as say, pointers, may overwhelm some students. I also find it’s better to learn using “the dumb way” first, and then be corrected on the error of your ways as you go.
July 26th, 2008 at 14:15
“Teaching source control at the same time as say, pointers, may overwhelm some students.”
I have to disagree with you on this. I think VC can be taught in a single lab session, and can be used as a nice distration from the “tough stuff”