2

I've been working with a buddy of mine on a school project. We forecast it'll take ~2 months, so it isn't a small scale project at all. Communication and splitting the work effectively has been a NIGHTMARE though.

He doesn't have a phone, which makes communicating outside of the one 1 hour class we have together difficult.

Basically what's been happening is we end up working on the exact same thing, or we write code for components that doesn't work with components the other person has written. Because of this, we spend about 20 or 30 minutes each day in class making both copies of our code work together, and figuring out what stays and what goes. It's horrible for efficiency.

I looked into github but it looks so ridiculously overkill for this 2 man team. Also I was unable to find github tutorials for specifically what I'm looking to do (They're all too technical for someone with 0 git expeience or tackle things unrelated to my needs).

How can we organize this project more effectively and efficiently?

  • Use github, once you learn how to use it, you'll be glad. I can guarantee you your effort won't be wasted. However, you should draw diagrams that map the interactions between classes before you start coding. You'll have fewer conflicts then. – Juan Mendes Sep 16 '14 at 19:35
  • @JuanMendes Ill give it a shot! Do you have any specific tutorials you could recomnd? All the ones I've found have been extremely jargony... – Nathan Sep 16 '14 at 19:36
  • If you use windows, you may find that using their app is simple enough. windows.github.com Their help doesn't look "jargony" windows.github.com/help.html There is some jargon, but you do have to learn what it means, and it'll prove very helpful once you do get a job. – Juan Mendes Sep 16 '14 at 19:38
  • 1
    Use github (or some other VCS). You'll be very very glad you did. See also git for personal (one-man) projects. Overkill? and Version control for independent developers. If git is a good choice for a team of 1, it'll be a good choice for a team of two. – Dan Pichelman Sep 16 '14 at 19:54
  • 2
    I would recommend that you fix the communication problem first before you find a technology to help. Divvy up the work properly will solve 95% of your problems :) – Rocklan Sep 17 '14 at 1:06
2

There are a couple of things here that need to be addressed.

First, there is the two code bases. You've got your code. Your friend has his code. Wen you do a merge (somehow) you're doing it without the ability to see the changes that did it before.

You don't need github to do this. You could have a master git repo on a thumb drive, and then merge to and from that. Github makes it easier to do this (and harder to lose it). Working from the thumb drive though, you wouldn't have as complete a set of tutorials on how to use it or the other things that github has that are quite nice.

Next, there are the issues. You don't have a clear division of labor and tracking of this labor:

  • Who is working on what?
  • What changes fix what?

The github issue tracker within github allows you to assign who is working on a given issue and identify what state it is in. It also hooks up nicely if you tag the commits with the issue number, which then shows back in the issue tracker part of Github. This makes it clear when you later want to go back and see "what did I change to make issue #5 work?" - you can go to issue 5 and see the commits.

This doesn't prevent anyone from actually working on anything though. You or your friend could disregard the issue tracker and work on whatever. Working with other people takes discipline - properly communicating what you are doing, taking tasks, finishing tasks, and saying that they are done and then moving the changes into a place where other people on the project can make use of them.

If you, or your coworker are not disciplined to do this you will have problems.

Git or any VCS will not fix the problem of "basically what's been happening is we end up working on the exact same thing, or we write code for components that doesn't work with components the other person has written" on its own. You could do that today - write out all the specs on paper and have a stack of index cards with all the things that need to be done. Divvy up the index cards and work on them according to the written spec. No git involved in that process at all. An online version control system makes it easier to do this, if you are willing to work with it. But, if you aren't going to take the steps to actually be disciplined in your work habits in the first place, its just going to be extra tedious work.

As to overkill? Nope. Its not overkill. Its a very useful tool set that has a lot of features that you will use some day. There are simpler version control systems (I used RCS back in the day and it worked fine for my college projects with partners (drunken checkins are easier to revert than begging the lab staff for a restore from the nightly backup). Aside from the cloud and server nature of git, it had just a steep of a learning curve as RCS.

Note that many IDEs today have git support built in that make using it much easier. You've got this tagged with - consider reading Using Git Support in NetBeans IDE.

  • 1
    Thanks for the really informative help, you've given me some info that should really help a lot. Ill talk with my partner tomorrow and we'll try to figure out where we should go from here. Not too sure who's downvoting the answer, its exactly what I was looking for – Nathan Sep 16 '14 at 21:19
  • Don't know why this was voted down, great answer. In particular this isn't a technology problem, it's a communications problem. – Rocklan Sep 17 '14 at 1:05
0

Your question is about code organization (as specified in the title) and many here seem to be talking about VCSs, that might not solve your problem at all. You do not seem to need version control, your problem seems to be something else.

Basically what's been happening is we end up working on the exact same thing, or we write code for components that doesn't work with components the other person has written.

If you got to talk to each other, you could decide what each of you will do, right? You are stepping on each other's toes by, as you said, working on the exact same thing.

I looked into github but it looks so ridiculously overkill for this 2 man team. Also I was unable to find github tutorials for specifically what I'm looking to do (They're all too technical for someone with 0 git expeience or tackle things unrelated to my needs).

I mean no offence. But if you fail to find GH tutorials, you will fail to find tutorials for anything. Give a try to Pro Git (or any introductory Git book). It may be overkill, but, in the end, it stills kill it. Plus, you are likely going to have to learn at least one VCS someday.

How can we organize this project more effectively and efficiently?

What about organizing it? No VCS will be able to merge what you are doing if you two are doing the exact same thing every day.

As you said, it is not a small scale project, so two things must be clear:

  1. GitHub (or any VCS) is not overkill.
  2. You two are likely to have different things to implement / refactor / work on.

He does not have a phone? Does he have internet access? Can he create an e-mail account? Use any messaging service?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.