Creating great teams

As someone who is ushering in a new customer focused software development process at a very large corporation. I'm certainly validating a many tried and true axioms that we all know and love. I thought I'd share a few of what I feel are the most important:

A team of great players doesn't necessarily make a great team

A team is a group of people who have interconnected things to do that will bring an organization closer to it's goals. If the organization can reach it's goals with only 1 member of the team contributing, then it's not a team, it's just a bunch of people in the same organization.

One problem is that there are people who are legitimately superstars. In the time it takes the rest of us mere mortals to print off initial copy of the requirements, they have: comprehended the requirements, acquired some dev infrastructure, built a prototype, and are asking questions about problems that have occurred.

The problem is, with a whole team of people like this they must all work together else, anyone trying to coordinate these activities and build off a coordinated effort is going to rapidly degenerate into a drooling gibbering idiot.

If you are so lucky as to have one of these high powered teams, your job becomes making sure these folks fully appreciate how they need to work together and how the different things they're working on should interoperate.

Great teams are grown

There is a notion that 10 people in the same room working on a project are a team. Or, worse yet, team people mentioned in a project kickoff meeting or some org chart are a team.

I often see 10 people get together for a kickoff, then disburse for 3 weeks and regroup to see what's going on. This is not a team, this is multiple individuals working on the same thing independently.

A team is a group of individuals working on the same thing TOGETHER. This means I cannot do my part properly without everyone else doing their part. Obviously there are things that can happen individually, but that does not require teamwork, that requires individual effort. Team oriented work must inherently require more than one person to complete the task.

great teams don't need great leaders (but it helps)

A great team will often function without the notion of a traditional "leader". The leader is simply the person who has identified the problem they are supposed to solve and then helps remove and/or minimize obstacles.

Too often, folks in a leadership or management role feel the need to be really "hands on". They want to make adjustments the the plan, make technical recommendations, have final approval on every decision, and otherwise micromanage their team.

This should not really be necessary on a great team, they should all understand what the goals are, discover how they fit into attaining those goals, and understand the reason they are on the team. If the team's decisions are constantly overruled by the leader, then they will stop making decisions. This means instead of 5-10 brains working to solve problems, it turns into 1 brain trying to solve problems and 10 brains implementing these decisions.

This CAN work, but it will often lead to (no pun intended) leaders that are overworked, making bad decisions (because they don't have time to properly think about it), and mindless zombie teams.

Comments

Popular posts from this blog

Push versus pull deployment models

the myth of asynchronous JDBC

Installing virtualbox guest additions on Centos 7 minimal image