views:

456

answers:

5

I'm very interested in the community's input on this question: What are some characteristics of a good team of programmers? As a follow-up, what are your suggestions for a non-manager that wants to improve the team that they're on?

It seems that some teams cooperate very well together and effectively deal with adversity. There are also teams that seem kind of "fragile," in that the team members aren't very happy, they aren't as productive, or things will fall apart if something goes wrong.

A: 

a good team is one that has people that will communicate to each other well and be able to take constructive criticism well. also each member must be willing to do their part and take responsibility for what is produced.

John Boker
+3  A: 

Small, confident, humble, realistic, trusting, communicative.

SCdF
+2  A: 

From my experience, so long as every member is reasonably competent (nobody on the team needs to be a rockstar programmer or lead), there are two things that can ruin a project. Lack of communication, and egotism.

Nobody on the team will mind picking up the slack for another member, given both sufficient notice and reasonably circumstances. However, at the same time, "your lack of planning is not my emergency."

In the case of the latter, when somebody is adamant that nobody can touch their code, or that their way is best (even when they are right), it causes tension and stress within the team. Patience is required to explain (and sometimes re-explain) why a decision was made, to the other teammates. Everyone must be open to constructive criticism. For developers it might come in real-time during pair programming or later during a code review.

Rob Rolnick
A: 

First a competent and knowledgeable Tech Lead and Project Manager. If those two can not work together and are not good at their job well then the rest of your team is at a huge disadvantage. Now i am not saying they have to be the greatest, but they need to be able to really work together. They are the ones that set time lines, tasks, goals, measure performance, and really set the tone for the team.

You need one or more seniors that not only can do the hard work but they also need to be able to work with and mentor the mid and junior level programmers. I don't just mean hey do the code like this, i mean actually mentor. Spend time doing code reviews and some time teaching them. It would amaze alot of people how much more satisfied a programmer will be if they get this type of feedback and interaction. Programming is not just about writing code, its about learning and improving. That is the only way to move up.

You need something to help bring the team together and build camaraderie. I know it sounds cheesy but a team that is happy knows they people they work with and have built some trust in each other work far more efficiently. Now what to do, well that is very dependent on the people on the team. One place i worked at most the team was into outdoors type stuff, so we went on a whitewater rafting trip. It was alot of fun and we all got to know each other better which lead to everyone working together better.

Those are a few thing that help a team immensely in my experience.

Oh also i forgot to mention, everyone needs to leave their egos at the door when they come to work. Egos are a huge problem and they can cause many many issues.

pete blair
+3  A: 

Max Pool of Codesqueeze has a nice (and entertaining) article about team compositions in a post entitled What Your Dog Can Teach You About Building Teams.

In it he posits that you generally have three types of team members:

  • Guard Dogs or Software Architect types
  • Alarm Dogs or Senior Developer types
  • Happy Dogs or Junior Developer types

Having too many "Guard Dogs" will result in a lot of squabbling over what design direction you will take and how it will be implemented. Having too many "Happy Dogs" without a Guard Dog to guide them will make for a team that either has no direction or no discipline.

The ideal is to have only one Guard Dog, a few Alarm Dogs to counterbalance the Guard Dog's decisions, all of which who lead the Happy Dogs in their day-to-day work.

So the only real characteristics successful teams need to have: balance.

It's hard to achieve IMHO, though not impossible.

Jon Limjap