Settings

Theme

Ask HN: Git or Mercurial for beginning students?

4 points by klancaster 10 years ago · 14 comments · 1 min read


I regularly teach Git to students at the senior level that are building RoR applications. Even though we only cover the basics, they seem to struggle quite a bit with both the concepts and the mechanics. They are on Windows for the most part, and are required to push their code to Bitbucket. The seniors have suggested that I introduce the topic much earlier in the curriculum in a sophomore level Java class. The students in that class have had one prior programming class, but generally are still struggling with the basics. I've been thinking about using Mercurial at the sophomore level instead of Git to see if that eases the introduction to the concepts. Any thoughts one way or the other?

dozzie 10 years ago

I guess that they are simply not accustomed to work in command line, given that Windows gives terrible terminal and shell. I would rather expose them to Linux (or maybe BSD), possibly through providing them shell accounts on some server and requiring code to be built primarly there. Then it should not be too difficult to jump from working with files in command line to working with version control in the same command line.

  • jotux 10 years ago

    >given that Windows gives terrible terminal and shell

    Though the command set is a little verbose I think powershell is pretty nice. If you get posh-git(https://github.com/dahlbyk/posh-git) and use powershell it makes the git experience on windows quite pleasurable.

    • dozzie 10 years ago

      > Though the command set is a little verbose I think powershell is pretty nice.

      Last time I checked, PowerShell made more or less sensible programming language, but was awful in term of command completion. If that hasn't changed, it is still a terrible shell.

      • jotux 10 years ago

        The commands themselves are verbose but I've never had a problem with completion. Can you highlight some problems you had?

  • klancasterOP 10 years ago

    You are definitely right that they are not comfortable in the command line. They do get exposed to it quite a bit in the curriculum, but not prior to the Java class. I have been using Vagrant in the senior class, and quite a few of the students end up installing Linux for RoR dev. It might be too much for the sophomores however.

    • dozzie 10 years ago

      Or it may not be too much. My whole university year was required to use some unix variant starting with the first semester, where we learned C (so add memory management and pointers arithmetic to things to learn, and I didn't even start with mathematics we were taught at the same time; computer usage was not the only totally new subject for us).

      Of course I agree that it's not an insignificant load. Learning how to write programs at all is difficult enough, and what I propose is just adding learning new environment on top of it. On the other hand, a shell server with compilers and editors already installed may be a good start. This way students get stable environment which already works, so they can focus on learning how to use it instead of struggling with administering it.

  • veddox 10 years ago

    If using the commandline is the main problem, why not use a git GUI interface? (Would Github's be of any use?)

    I'm not saying learning the commandline is not important, but that would split the learning load so they only have to learn one new concept at a time (only cmd or vcs instead of both together).

    • klancasterOP 10 years ago

      Some did use SourceTree, although I emphasized the command line more. Perhaps I should move toward having them use the GUI versions.

senjindarashiva 10 years ago

Last time I checked mercurial has better windows-support and tooling. And since the concepts generally is the same they should have no issue learning git later on if the need it.

http://tortoisehg.bitbucket.org/

  • klancasterOP 10 years ago

    The windows support was one of the issues that I was considering. I think you are right that it is a bit better than Git from that standpoint.

theaccordance 10 years ago

On whether to use Git or Mercurial, my gut suggests you teach Git, but if you have the ability, poll alumns of the program and/or companies who are nabbing grads to see what they have/haven't used. Personally, I've never been around an environment that uses Mercurial, but that's just my particular situation.

Also, the basics of version control should be taught in the very first programming class. You can then expand on the basics in further courses.

  • klancasterOP 10 years ago

    My gut has been Git as well, since I have always used it in commercial development. My guess is that the companies the students are going to use Perforce or a commercial tool since most end up in energy / oil related companies that tend not to use open source at all. That said, I'll see if I can get more info on what they are using. I don't have control over the first class they take (yet) but I do agree with getting them started early. Most of the programs (CS,EE, etc.) don't even teach version control at all at the undergrad level, so I am doing what I can to remedy that issue.

japhyr 10 years ago

Are you talking about high school students?

  • klancasterOP 10 years ago

    Sorry - should have been clearer. These are undergrads in a 4 year bachelor of science technology program. They are not CS majors, so they have limited programming background in general.

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection