I haven't met any developer who was incapable of learning a version control system on the job. Why should universities spend the student's <i>very expensive</i> class time to learn about this? That time would be much better spent learning about fundamental knowledge such as algorithm design rather than learning about a specific tool that could be obsolete by the time the student graduates. Also, in a first semester course on programming, learning version control is a distraction from all the other things you need to learn to write a working program, like programming language syntax and building a mental model of how program execution works. (Not every CS student gets to college already knowing this stuff!)<p>Which is not to say that universities shouldn't make these tools available and encourage their use for class projects. But that doesn't require them to "integrate version control into their curriculum" like the article suggests. The documentation for git is freely available on the web and anyone who wants to can read it on their own time and ask their fellow students about it.<p>The larger philosophical question here is whether higher education is a vocational program for creating good "team players" who are productive with the current technology on the first day of their employment, or rather to provide an education that teaches them fundamental knowledge and how to learn new things on their own.<p>Side note: I've taught a first semester CS course in a well-known university, so I have some experience with the difficulties that even some very smart students face while trying to pick up the basic concepts. Adding in version control would have made it harder for some of them to successfully complete the course.
One way or another, I feel they should come out of college knowing something about version control, but not in the first class. I can easily believe greenyoda that trying to learn programming and, say, git at the same time would be a disaster. I'm tempted to say you should just warn them that at some point it's going to be part of their class workflow, but I don't think that would fly bureaucratically. At the same time, it would be weird to just have a class in "version control"; it only makes sense in the context of another project. So maybe make it part of a lab-style class, with a focus on individual instruction, and RTFMing.<p>Then I get to my internship and have to learn Team Foundation Server... Sheesh.
I blogged a response: <a href="http://jarofgreen.co.uk/2013/05/why-programmers-should-learn-git/" rel="nofollow">http://jarofgreen.co.uk/2013/05/why-programmers-should-learn...</a><p>Basically, I think it's important to teach Git (or other Version Control) to students because what you are really teaching them is good development practices. These take time to learn and get used to and Uni's absolutely should be teaching them.<p>The whole issue of "students should be able to teach themselves git" is a bit of a red herring, IMHO.
One of the classes I teach is at the senior undergrad level, and they have been thrilled that I have them use version control. Many have commented that they wish that they had known about git in earlier classes, as it would have saved them when they screwed up their programs.
At the University of Montreal, one teacher introduced Subversion in a Software Engineering class and another Git in a compiler class. Version control <i>is</i> taught at university, it just depends which university.
Oh, I thought that was going to be about code written by education people. Actually, it's a larger problem - I'm constantly shocked that <i>anybody</i> who writes documents for a living (code or otherwise) is relying on the filesystem. My wife's a teacher where her department pools their lesson plans and tests and whatnot and I'm constantly harassing her about the importance of setting up some kind of VC to keep track of all that crap.
The git log could be a gold mine for researchers studying how CS students learn CS concepts and programming techniques. It could also be used to detect cheating.
This is like those mandatory undergrad computing courses where they teach you to use word by typing into an open document. If you can't figure it out with a few minutes and access to the help files, maybe computers just aren't your thing.
I feel many of my upper division projects would have benefitted from having the ability to branch and try a new approaches safe in the knowledge they could be easily abandoned if they failed to bear fruit.
Who are these CS students who need their hands held to such a degree? A simple, <i>You should consider using version control for your projects. Try git or subversion. It will come in handy later in your career</i> at the beginning of an introductory programming class should be all that's necessary. A CS curriculum doesn't teach students how to touch-type either, nor should it.<p>I'd suggest to people doing hiring that the candidates who haven't even heard of version control (which some other posters have mentioned interviewing) are ones that you don't want to hire. You should be glad to have the easy selection criterion.