The art of building software: Team building

Monday, June 21, 2010

Team building

I've found that most large business goals are unique, and require assembling the appropriate resources to achieve. These resources start with people, and also include the equipment and other assets needed to achieve the objective.

With respect to organizing people, you look at the people you've already got on board in terms of existing employees and consultants, and you also look at new employees or consultants or outsourcing in various ways. The choice of which type of human resource to use often depends on the amount of time they'll be needed, how specialized, rare, or expensive their skills are, and whether the knowledge built during the process of doing the work is something that would add value to an existing strategic knowledge base or cultural asset.

In many cases, you must recruit existing employees or consultants that are already busy doing something, so getting them to take on these new tasks requires an understanding of how work is requested, specified, assigned, performed, tracked, and valued within an organization. This requires an understanding of both the processes (e.g. feature requests, hiring processes, purchase orders, help desk requests, budgets, etc.) and culture of how to get things done. It also requires an understanding of what motivates each and every one of the individuals involved, because those motivations need to be aligned as much as possible with an emerging commonly felt group motivation for getting whatever it is achieved.

Every team has a life span. Sometimes that lifespan is very short - a few hours - and some times it's years. Or anything in between. Sometimes the teams grow and shrink over time as new needs evolve.  It's important to know when to grow and when to shrink a team.

It would be a mistake to view a team as the sum of its members.  In the best teams, something magical happens when the team is working together well - a team spirit emerges that is palpable - you feel it on the team.  It's what makes working on one team feel really different from working on another team.  The members feel everything is clicking, they're in the groove.  And the whole company knows it.  They are able to deliver best in class, innovative software that solves some of the toughest engineering challenges around.

On such teams, they are self-organizing.  Team members instinctively know when and how to work with other team members efficiently.  Leaders naturally emerge when needed to solve problems with the support of others.  Overtime is rarely needed.  Deadlines are usually met, or if not, for good business reasons that have appropriate management / executive support.

No comments:

Post a Comment