Kent Beck
2005-03-02 16:05:56 UTC
Keep effective teams together. There is a tendency in large organizations to
abstract people to things, plug-compatible programming units. Value in
software is created not just by what people know and do but also by their
relationships and what they accomplish together. Ignoring the value of
relationships and trust just to simplify the scheduling problem is false
economy.
Small organizations don't have this problem. There is only one team. Once
you gel, once you earn and offer trust, nothing short of shared calamity can
pull the team apart. Large organizations often ignore the value in teams,
adopting instead a molecular/fluid metaphor for "programming resources".
Once a project is done they go back "into the pool". The goal of such
scheduling is to get all the programmers fully utilized. This strategy
maximizes micro-efficiency but undermines the efficiency of the organization
as a whole, striving for the illusory efficiency of keeping individuals busy
typing while ignoring the value of enabling people to work mostly with those
they know and trust.
Keeping gelled teams together doesn't mean that teams are entirely static.
I have been astonished at how quickly new members begin contributing to
established XP teams. They insist on signing up for tasks the first week and
they are independently contributing after a month. By mostly keeping teams
together and yet encouraging a reasonable amount of rotation, the
organization gets the benefits of both stable teams and of consistently
spread knowledge and experience.
abstract people to things, plug-compatible programming units. Value in
software is created not just by what people know and do but also by their
relationships and what they accomplish together. Ignoring the value of
relationships and trust just to simplify the scheduling problem is false
economy.
Small organizations don't have this problem. There is only one team. Once
you gel, once you earn and offer trust, nothing short of shared calamity can
pull the team apart. Large organizations often ignore the value in teams,
adopting instead a molecular/fluid metaphor for "programming resources".
Once a project is done they go back "into the pool". The goal of such
scheduling is to get all the programmers fully utilized. This strategy
maximizes micro-efficiency but undermines the efficiency of the organization
as a whole, striving for the illusory efficiency of keeping individuals busy
typing while ignoring the value of enabling people to work mostly with those
they know and trust.
Keeping gelled teams together doesn't mean that teams are entirely static.
I have been astonished at how quickly new members begin contributing to
established XP teams. They insist on signing up for tasks the first week and
they are independently contributing after a month. By mostly keeping teams
together and yet encouraging a reasonable amount of rotation, the
organization gets the benefits of both stable teams and of consistently
spread knowledge and experience.