When you go out to eat, it is highly likely that more than one person had a hand (literally) in creating your dish. Prep chefs are the first hands on your meal–cutting vegetables, trimming meat or baking bread. Next, an expediter will call in your order once it’s received from the server to alert the cooks of what’s coming up that they’ll need to prepare. Then, line cooks or sous chefs will grab the necessary prepped ingredients, season them and take them to the flame! Once all the ingredients are cooked to perfection, the head chef will masterfully plate your meal with artistic flare and make sure your items are the correct temperature. Once it’s ready to be devoured, your server will be beckoned by the kitchen to deliver your meal. How does it taste? Amazing! It had better taste good for a $40 entree…
Now that you’re belly is full, you don’t mind a 20-30 minute wait for a delicious dinner. But what if you had to wait 50-60 minutes? Would you be willing to wait that long for dinner? The only way restaurants can get their customers food out in an acceptable time frame is to utilize several people with differing skills. For example, you wouldn’t want the Dish Washer cooking your tenderloin. So the restaurant uses the cooks with the greatest knife skills to prep, the greatest saute skills to line cook and the most culinary knowledge to plate and finish your dish. Having multiple cooks in the kitchen is just like managing multiple developers on one project. It saves time and allows each developer to work on the piece of the project that they are the best fit for.
While utilizing multiple developers for one project sounds like a disaster waiting to happen to some, to others it sounds like a great way to get a whole project completed at twice the speed! Working multiple developers in one project is done all the time by companies of all sizes with even remote employees too. Version control systems, project management tools, and repositories make managing multiple developers much easier than it may sound.
Our team uses GitHub. It’s a version/revision control system (VCS) that allows our developers to have control over any changes to the source code. Other popular VCS’s are Subversion, Mercurial, and Bazarr. Project management tools are commonly used in combination with VCS to keep communication amongst the developement team open and also to track bugs.
How it’s Done
If all of your developers have commit access to the repository, they will pull changes from it, make their own changes, locally commit, and then push back into the main repository when they have working code.
If you have several developers who are responsible for committing to the repository, then you need to have each of them clone the repository into their own accounts and have them send pull requests when they have a change they want to send into the main repository. Our team has found that each developer needs their own GitHub account. These separate accounts can be set up as collaborators so they can all have commit access.
For features or fixes that will require more than one commit, use branches. This way, more than one developer can be working on a branch at the same time. You can clone a specific feature as well. By utilizing the pull request workflow mentioned above, you can add changes to the main repository when your feature is complete.
Tricks of the Trade
Avoid corrupting the project by respecting each developer’s work items and ensure that no single object is being changed at the same time.
- Create a work item before making changes to an object
- Never work on someone else’s item until they have released it
- Save the project once you’re done working on an object and then release the item
- Do not rename work items without notifying your team
- Before you start a new development task always save and reload
- Version control DOES NOT replace communication. Try a real-time communication medium like Slack or Skype groups
- Write detailed check in comments about changes you’ve made for the other developers on your team.
If you need a little more convincing check out what the spiceworks community has to say about managing multiple developers on the same project at the same time. You don’t expect one chef to cook your entire meal at a restaurant, so don’t expect one developer to work your entire codebase.