Ask HN: How could you effectively collaborate with non-vcs users?

4 points by hirsutehippo ↗ HN
I will soon start my master's degree in engineering (not software), and I will have compulsory group projects as part of my coursework, which will involve writing a lot of Matlab code. Based on my past experience in undergrad, I assume that none of my teammates will know what a VCS is, and that the main platform for collaboration would be a shared Dropbox folder. I am rather proficient in git, and developing software without a proper VCS makes me uncomfortable, but I would like to build a good relationship with my teammates nonetheless. Thus, I thought of the following scenarios:

1) Try to evangelize and teach my teammates how to use git and GitHub; this would be ideal, but I don't know how willing they would be to learn those tools on top of the already stressful course material.

2) Let others collaborate on Dropbox while I use git alone and synchronize the changes by creating and applying patches; this solution has the most overhead, but it will allow everyone to use their favorite tools.

3) Ditch git altogether, use Dropbox and hope for the best.

In your opinion, what would be the best option?

7 comments

[ 2.5 ms ] story [ 21.2 ms ] thread
Number one, but these types of projects also require coordination beforehand to prevent huge merges / incompatible merges when two people try to work on the same thing at once
Do you think it would be best to teach git directly from the terminal or using a graphical frontend?
Check out the github graphical client for windows, it's pretty easy to understand and use the basic features. It also shows graphically what's going on: Changes of each commit, history of commits, merge conflicts, who did what, and so on. And you don't need the terminal, which is a bit daunting if you never used it before
I recommend git extensions for beginners. If they're unfamiliar with CLI it's like teaching two things at once almost, and the "scare factor" is higher
For simple group exercises and labs in Matlab, it probably won’t really be complicated/big enough to need it, frankly.

You might get a few starter files and have to tweak some pieces. Unless your project is more than like a few weeks long just do it together in study sessions and pair program if you can.

When you write your own work, solo labs, thesis, dissertation etc, then absolutely use vcs, obviously.

I did mechanical engineering in undergrad and the labs were fairly self contained and didn’t really need much revision.

If anything I would prioritise writing tests to help document and check others code, over worrying about vcs. TDD in Matlab would be quite a thing.

Usually a group project starts at the beginning of the semester and the completed work is presented during the final exams, so it would be a long-term endeavor. Thanks for mentioning TDD, that is another area that I should explore
You can create your own repo and also do a `git init` in the dropbox folder. Then configure both to point to each other as remotes. (`git remote add dropbox /path/to/dropbox`)

When merging stuff, make a commit if needed on the dropbox repo and merge in your changes. Then pull from your personal repo from the dropbox one.