Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I need to work with 4-5 programmers on a fairly average PHP application using codeigniter. We're in 5 different locations in one city, and all of the programmers are all not too well educated and I'm assuming that most of them have never used any version control system.

Can you recommend some very very easy-to-get-into platform for collaborating on a project like this? I'm talking about something that is only a tad more sophisticated than a shared dropbox folder.

share|improve this question

closed as off-topic by ChrisF Sep 4 '13 at 7:49

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions asking us to recommend a tool, library or favorite off-site resource are off-topic for Programmers as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it." – ChrisF
If this question can be reworded to fit the rules in the help center, please edit the question.

    
You used github as a tag. Github is very nice - do you have the money for a private repo? –  user1249 Jul 16 '12 at 14:49
    
I recommend SourceAnywhere Hosted. It's very intuitive to use the product. Actually, if you search for version control, you'll find many good suggestions/tools. If you want to shorten the learning curve, besides the product itself, bear "good customer service" in mind when choosing a product. Because it means you'll have good training and technical support from the company. –  Windy Jul 17 '12 at 5:23
add comment

6 Answers 6

You already know the answer

Version control was designed to solve this exact problem. If your developers are unwilling to learn to use this standard development practice, you may need to reconsider your developers. What kind of software are they going to churn out if they're showing an aversion to standard accepted practices, as well as an aversion to learning new things?

I would suggest having them read Pro Git and setting up a private git repository for your team.

share|improve this answer
    
I neither have the option to pick other developers, nor to have them learn version control. Trust me, I'd prefer both. But I can't - that's the reason I have asked this question. There are plenty of amateur deveopers out there, what do they use? –  Esuus Jul 16 '12 at 14:38
5  
They learn the proper tools or stay juniors forever. –  Adrian Schneider Jul 16 '12 at 14:58
2  
@Esuus It doesn't take that long to learn git: try.github.com/levels/1/challenges/1 –  VirtuosiMedia Jul 16 '12 at 16:46
2  
@VirtuosMedia I don't think Git is exactly simple, SVN is much easier to grasp. –  Matěj Zábský Jul 18 '12 at 6:19
1  
I don't know about Git, but TortoiseSVN makes it really easy for inexperienced users to deal with SVN. –  Brian Jul 18 '12 at 18:35
show 1 more comment

Well, there is no way out than to use version-control.

Dropbox does have sort of version-control, but I believe that if two people save a file, the newer version will just replace the older version, which is not desirable for version control during software development.

Svn is an easy to learn (at least easier than git) version-control system, and you can find various public repositories hosted online, but I would not recommend it for geographically distributed teams.

So the way to go for ditributed teams is git. If having your source public OR buying a private plan is not a problem, then create a repository on github, otherwise setup a local git repository.

May be you can find a GUI for git which might make it easier for these developers to start grasping a version-control system conceptually. For Windows its TortoiseGIT. I haven't used any git gui client for Linux or MAC, so I won't recommend one here.

share|improve this answer
    
Dropbox has one advantage: you can get people using it who have never used source control systems in their life. This can be a major advantage when working with science professors… –  Donal Fellows Jul 17 '12 at 21:11
    
GitHub also has private repositories if you don't want to make your code public. –  VirtuosiMedia Jul 18 '12 at 7:24
    
@VirtuosiMedia Yes, I know that, but I am not sure if they are free. –  Ozair Kafray Jul 18 '12 at 7:30
    
@OzairKafray They aren't free, but they're pretty inexpensive. The smallest plan gives you 5 private repositories for $7/month, plus unlimited public. –  VirtuosiMedia Jul 18 '12 at 7:33
add comment

...FTP

Ok, this is the way I started to collaborate, hooking up Notepad++ to FTP, backing up crap every 10 minutes in renamed folders really sucked, if you do this, for the sake of your project at least use version control at the server.

An online IDE

Cloud9 is very nice and has concurrent editing, however, it will cost you to have more than 1 private workspace to work with your team, but it is worth it.

...try Mercurial

If you don't find Git approachable enough by your coworkers, try Mercurial with TortoiseHG, which is a GUI client for Mercurial. It will take them two minutes to setup and less to start using it.

Have them use the GUI, they just have to learn to use 4 buttons (pull, update, commit, push) and learn 2 or 3 concepts in order to save and share their work.

Have them register in bitbucket. Create a repository for your project, and have them fork it so they can work in their own mirror of the repository and that way they don't have to deal with merging. You do the integration and just ask them to issue pull requests from their Bitbucket fork once they've pushed. Have them pull only from your repository (the one they forked from).

Learn Mercurial yourself so that you can solve all related problems, this is a good start: http://hginit.com/

Try both

You can use Mercurial from Cloud9, how cool is that?.

Stop assuming

If you are the one looking to use the correct tools you are already in a leadership position. Don't assume they're not educated and talk with them about how things are done in the real world.

Be enthusiastic about it an not patronizing.

It really doesn't get any easier than this if you want to do things right. If they expressly don't want to use version control then you might have another kind of more serious problem.

share|improve this answer
add comment

I'm assuming that most of them have never used any version control system.

You need to correct that assumption and find out if they do or do not have any knowledge or experience of any version control systems. No point assuming when they could have knowledge.

As other answers have said, this is what version control is for. Git is probably the best way forward, and Learn Git is a really good starting point

share|improve this answer
add comment

I recommend your developers to http://try.github.com

But if no version control is possible, you could stick with something fit for the very beginner/junior that is basic (and archaic).

  1. the APP + DB on development server
  2. Everyone on the same messenger all the time while working so they can speak and know who's working
  3. Everyone edits live on the DEV server through plain old FTP
  4. Enforce team rules on updating a changelog with their revisions + making code comments crucial

The setup for your development server's web folder could also be svn checkout (or git) and you can setup the crontab to auto commit revisions every so often automatically or you can just install a backup or maybe rsync the folder to some other backup location for when they overwrite each others files (as it will happen) and you need to give Bob his changes he lost. Eventually after working with the system for a few months they are going to be begging you to give them svn/git access.

share|improve this answer
    
Even though all answers here were helpful (and because of them I'm now seriously considering if there is a way to make em learn GIT/SVN), you're the only one who actually answered my question. Thanks man. –  Esuus Jul 21 '12 at 0:46
add comment

You are on a right track

The version controlling is the way to go! It will serve well to collaborate code sharing and help with integration. In addition, frequent check-in(s) are very important discipline that all team needs to practice.

However, choosing the right version control for your project is very important.

There is a recent nice post and answers to help you decide : What is a good toy example to teach version control?

share|improve this answer
add comment

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