Herding Cats: How to pull together diverse development teams into one team, and not go crazy.

Getting a bunch of programmers from different companies and corporate cultures to work together is worse than trying to herd cats; it takes a psychologist’s light touch, a politician’s creative tongue, and less knowledge about programming than you might think.  Most of the work is human rather than technical.

Over a year ago, I was asked to bring 4 development teams together so that we could unify our products and develop according to common standards and best practices.  On the surface the problem seemed mostly technical… each team followed different coding and security standards, revisioning control systems, project management systems, authentication schemes… the list goes on.  In truth, however, my main challenges were all human.

Why human rather than technical?  Because technical issues are simply problems to solve.  We have smart people; we can solve them.  But when you have different groups of people with different value systems, corporate cultures and strong personalities… you have a formula for conflict if things are not carefully managed.

I outlined my “human” strategy in the following way:
  1. Identify allies;
  2. Identify those who might pose a challenge, their motivations, obstacles at work, and their reasons for why they thought as they did;
  3. Earn their respect, build trust, and solve problems together;
  4. Determine what motivates and hinders each leader and key player on the team;
  5. Outline tasks to be done, who can do them, and when the work needs to get done;
  6. Earn their respect, build trust, and solve problems together;
  7. Create a communication system for outlining best practices and red flagging critical problems;
  8. Manage each person according to their tasks, obstacles, needs and motivations.
  9. Recognize and reward excellence… punish the opposite;
  10. Earn their respect, build trust, and solve problems together;
  11. Identify and communicate common interests, benefits of working together, losses of not working together, and encourage cooperation and cross-working as much as possible; and
  12. Make sure leaders and key players get to know each other personally as much as possible.
  13. Earn their respect, build trust, and solve problems together;
Why this approach?  It is simple:
  1. Allies are critical to communicating the common mission to other players… not just from your mouth.
  2. Knowing who might pose a challenge is important because they could disrupt or diminish your ability to pull everyone together.
  3. Knowing what motivates people and the obstacles they face at work helps you manage them in a way that recognizes their needs and challenges while connecting them to the group’s goals.
  4. Excellence breeds excellence and catching problems early avoids bigger problems later; and
  5. All this helps build respect and trust between you and your subordinates and between colleagues.

Did I succeed?  Yes.  So far so good.  My teams are working well together and improving as the days go on.  Members of various teams are helping each other by coding joint projects, sharing advice, building friendships and creating this blog.

What’s best is that I did not fire people in order to build respect and a team mentality.  I did it by promoting common interests, building respect between team members, and emphasizing excellence…  all good stuff that bodes well for the future.

For additional reading on tech team building, please see the following articles:

  1. Three Strengths of a Technical Project Manager
  2. Building the Killer Development Team

* * *

One Response to “Herding Cats: How to pull together diverse development teams into one team, and not go crazy.”

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>