views:

160

answers:

7

I realize that this is a subjective question, so I've marked it as a community wiki. I think that it is pretty specific to programming teams, though, so I've posted it here as opposed to somewhere else.

I'm leading a small game development team (four people) as a side project. We are a disjoint team, with everyone in different places, but we do have some of the mainstays of an organized team.

  1. Source Control
  2. Continuous Integration
  3. Bug Tracking
  4. Document Workspace
  5. Regular Meetings
  6. Calendar / Schedule

How do you keep your small, disjoint teams on-track? I tend to agree with Joel's opinion about when and how to micromanage and know that my team is motivated, but it can be easy to fall off-course when everyone isn't connected in a physical way and doesn't see what other people on the team are doing. Suggestions, feedback, or criticisms are welcome!

Edit: I'm managing the team; I'm not looking for automated tools or anything to do my job for me, just ideas for approach or process that might help everyone feel more "connected" and involved.

+1  A: 

A manager. Someone has to keep track of where folks are at and how their progress fits in the scope and time-line of the entire project. There isn't really a good way to automate this. It must be done by a human.

Edit When I worked for a game industry company, we always had to meet certain milestones to get payments from the publisher. As the manager you can break down each persons tasks into milestones as well. This way you can track the progress of each developer without bothering those who are on track with their features. It also makes it easier for the developer to know what their deadlines are in nice bite size pieces. If they are consultants, you can even pay them upon meeting their milestones. Money is great motivator ;) Another great motivator is to make all milestones open to the whole team. So if one person falls behind, others can jump in and help her meet it.

Byron Whitlock
I am the manager. I'm not looking for an automated way of doing this—just some suggestions for process or approaches that might help.
Ed Altorfer
+1  A: 

This is an interesting article about that very topic: Gaming the System.

GrayWizardx
+3  A: 

You need a Team Leader with specific skills.

  1. Motivator: You have to keep your team Motivated. This is really hard to do, and requires a special personality. Without this skill, small teams like yours are hopeless.

    1a. Request thoughtful answers to a controversial question and then after 7 minutes accept one of few answers and go on to something else. This shows that you take the long view and is highly motivating to your contributors

  2. Intelligence: For small projects like this, it's best if the Team Leader knows something about everything. If he knows something about everything, everyone is going to follow him.

  3. Objective: Remaining objective is very key.

  4. Organized: You have to be the most organized out of everyone, because when things get chaotic, people run. And I would say in small projects, this is the skill that most Team Leaders lack.

I have been part of several small projects. I would guess that 90% of them fail. I would say it's primarily due to the Team Leader lacking in certain skills.

BTW. Good Luck. I couldn't be a Team leader. :)

jsmith
5. Request thoughtful answers to a controversial question and then after 7 minutes accept one of few answers and go on to something else. This shows that you take the long view and is highly motivating to your contributors.
Carl Smotricz
@Carl Smotricz added as a subcategory to Motivator for you.
jsmith
A: 

So far I've been on the development end of this equation, and by personal preference rejected attempts to place me in a managerial position. Techniques I have observed are:

  1. Set very, perhaps impossibly short deadlines. Developers will be so rushed to achieve the goals that they won't have time for any distractions. They won't have time for refactoring, cleaning up code, indenting, code review or anything else either, but as long as their code compiles they can reach the milestone and worry about debugging it later.
  2. Have a technical project lead so dedicated to the project he'll crack the whip on all others until they produce maximum (visible) output. Also, he'll work lots of overtime and encourage others to do the same.
  3. Weekly meetings, all hands. Some of the information exchanged about what other folks are doing and what they've learned can actually be useful.
  4. Provide standardized equipment, software and development environments. They may be awkward to work with and developers will hate it, but at least they won't end up playing with their configuration when they could be coding.
  5. Have a business-savvy administrative project lead who can keep customers off the developers' backs and filter requirements for them. Anytime a customer "helps" it delays progress by many hours.
Carl Smotricz
A: 

Daily standup meetings done properly help a whole lot. If you keep it to:

1 what did you do yesterday? 2 what are you doing today? 3 what problems are you having?

it should remain quick and helpful. Keep in mind #3 is just to state it not to solve it. That is done after the meeting and is facilitated by the development manager or project manager.

Stephen
I've never seen daily stand-ups work as well with remote teams. The face to face seems to make these kinds of meetings 10x more useful and without that it can be frustrating.
Fraser Graham
Yea I agree that remote teams make it a little harder but I have seen them work. The ones that seemed to work best is when there is a definite leader of the meeting keeping things on track
Stephen
+1  A: 

I've worked in large and small game development teams for many years and I think the most important thing you can keep in mind to hit milestones and stay on track is discipline.

Game Development seems to suffer immensely from the desire to add more and more features or focus too much energy in something that's just not that much of the final experience. Your best tool for keeping the team on track is the word "No"

Fraser Graham
+2  A: 

Be a Leader: How to Change People Without Giving Offense or Arousing Resentment from "How To Win Friends and Influence People":

  1. Begin with praise and honest appreciation.
  2. Call attention to other people's mistakes indirectly.
  3. Talk about your own mistakes first.
  4. Ask questions instead of directly giving orders.
  5. Let the other person save face.
  6. Praise every improvement.
  7. Give them a fine reputation to live up to.
  8. Encourage them by making their faults seem easy to correct.
  9. Make the other person happy about doing what you suggest.

Those are my suggestions for some helpful tactics, even if they are rather old as the book was written in 1936.

JB King