Working With Others Question submitted by (16 May 2001) | Return to The Archives

| I've totally been boggled on this topic... Programming with multiple people. How exactly do you do this without one good programmer taking over and doing everything, while the others just sit there??? I'm guessing it involves some good layouts of coding and game layouts. But im lost on how to mesh everything together that everyone has been working on.
It would be really helpfull if you can shed some light onto this topic, as I havent been able to find much information on it.
-NetArc

| There isn't a definitive answer on this, though there are a lot of good answers. Also, I usually try to stay away from those Ask Midnight questions where my experience is lacking. In this case I personally feel there are a lot of others far more qualified to answer this than me (I don't know if I'll ever be satisfied with my design or managerial skills.) So I'm going to get things started and hopefully, people will take the hint and share their experience in the comments to follow.
As for myself, I think there are a few key components to a shared project:

> - 1. A project lead - not necessarily the best programmer on the team, but somebody well suited for overseeing the development process. Good personal skills, good communication skills, etc. I also feel that it's important for any leader to know the job of the people they lead. So this person should have at least basic programming skills.
> - 2. A common design - A 'big picture' that all team members are familiar with.
> - 3. A team of people that is capable of working as a team.
> - 4. Some form of RCS (revision control system) like SourceSafe.

This list is short and only covers the critical pieces.
I don't feel there is any importance of one of the listed items over another. This is because I've worked on successful projects where there was no common design; the only person that knew the entire design was the project lead. I've also worked on successful projects where the lead was actually detrimental to the project's success. However, in this case the team worked very well together was able to overcome the lead's shortcomings.
Also, I included RCS on the list because I simply can't imagine a project without one. For those not familiar, I'll explain what a RCS is. A RCS is simply a network tool that stores all of your source code in a common database, allowing team members to "check out" files of a project. This prevents two different team members from modifying the same file at the same time. They also keep track of past revisions of every file in the project, and who was responsible for each revision. They can also manage automatically merging multiple changes to the same file by multiple developers, when it's necessary for two people to have access to the same source file simultaneously. A good RCS will do a lot more than this, too.
I want to address one specific area of your question. You asked how to prevent one programmer from doing all the work while the others just sit there. Though, this isn't always the case, it is often due to the one programmer not trusting the others to do what that person considers "a good job." This was my biggest hurdle to overcome when learning to work in a true team environment. A good project lead or a team that works well together can overcome this, like many other problematic areas of team development.
Response provided by Paul Nettle

This article was originally an entry in flipCode's Ask Midnight, a Question and Answer column with Paul Nettle that's no longer active.

Copyright 1999-2008 (C) FLIPCODE.COM and/or the original content author(s). All rights reserved.
Please read our Terms, Conditions, and Privacy information.