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.
2
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.
6
…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.
1
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).
- the APP + DB on development server
- Everyone on the same messenger all the time while working so they can speak and know who’s working
- Everyone edits live on the DEV server through plain old FTP
- 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.
1
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
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.
4
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?