With all due respect to Fred Brooks and his seminal work – The Mythical Man Month – I think there's one area that could use another example. He puts forth the idea of the Surgical Team which pulls together a set of skills and abilities into a cohesive group that can be effective without intruding on one anothers' roles and talents…
To look at it another way, you might think of the A-Team.
First, every team needs a Hannibal Smith. He's the man with the Vision on what the team is going to do and how they're going to get there. He's the planner, the tactician, and the guy who keeps everyone else moving. He protects their interests and has a strong history of doing so, so they all trust him.
In addition, he's the front man. He represents the team to others and makes sure the team's time is not wasted. At the end of the day, good or bad, the plan is his, the team is his, and the responsibility is his.
"I love it when a plan comes together."
Next, you need a B.A. Baracus. This is the guy who is going to push through and do the right thing no matter what. He doesn't let anything stand in his way… and often ends up intimidating other people. No, not because of gigantic arms and 30lbs of gold chains… instead it's often due to high and exacting standards and a lack of tolerance for anything short of those standards.
He's also the guy who will be the first to speak up when something is wrong… either with the team or with the plan. And he won't hesitate to speak up. After all, he's expecting everyone else to accept his standards at minimum.
"Hannibal, I don't like this."
Next, what about Face? While there probably aren't many opportunities for seduction on your team, Face still plays a role. He's the guy with connections. He can get the tools you need. He may know what other teams are doing and how to get in touch with them. And quite often, he knows people all over your organization and industry. So when the time comes to add more people or take a new direction, he can make things happen there too.
He doesn't lead, but despite all this, he still knows his job and can get things done. Your B.A. Baracus wouldn't accept him otherwise.
"This stuff takes time. I don't keep these things in my backyard."
And last but not least, every team needs a Murdock. Murdock is a bit of a wild card… and in a good way. You need someone who is looking to use the tools, tactics, and ideas in new and creative ways. Some of those ways going to be good and others are going to be
terribly bad ideas less so. Either way, his ideas and attempts are going to cause everyone else to look at things differently and may spark ideas for them.
Unfortunately, this guy will be completely unfocused. He's the one that will want to fundamentally refactor your code each and every week as he learns more and comes up with new ideas. This will drive your B.A. Baracus nuts.
"Garbage bags! Garbage bags! I want garbage bags!"
While this covers what I see as the senior roles in small teams, there is plenty of room for others. It's almost always a good idea to have a few mid and junior level developers to back up each of these people and provide a larger pool of talent and information for team members. In my experience, I've found that almost every developer – of any level – has some of these qualities…