Patterns on the Fly


By: D.S. Olson
Published in: PHand
Pages: 141-170
Category: Organization and Process

Summary: Compares software development to fly fishing. Patterns and antipatterns for team structure.

Url: http://c2.com/cgi/wiki?DonOlson

Pattern: Train Hard Fight Easy

Pages: 145-147

Teams are thrown together and given a project without establishing team mentality or shared skills, knowledge, or vocabulary. Consequently, everyone learns "on the job" by trial and error. Train the team as a unit in relevant technologies to help give everyone the same tools and language.

Pattern: Train the Trainer

Pages: 147-148

Training is expensive and time-consuming to give to entire teams. Just train one or two individuals in a classroom setting, and then use them to train the rest of the team. This is an antipattern.

Pattern: Trial Project

Pages: 149-150

A team of experienced software developers is formed, and Train Hard Fight Easy has been applied. Build a trial project together using the new technology. Make it a real project but a small one of no profound consequence.

Pattern: Casual Duty

Pages: 150-151

When a team is between projects and there is uncertainty about the next assignment, give the team some work on infrastructure, tools, process--something to benefit them and other teams in the future.

Pattern: Guru Does All

Pages: 153-154

A newly formed team is given a project with a tight schedule, uncertain requirements, uneven distribution of skills, and new technologies. Let the most skilled and knowledgeable developer drive the design and implement the critical pieces. This can be an antipattern.

Pattern: Cult of Personality

Pages: 154-155

A tight schedule, poorly defined requirements, uneven distribution of skills among the development team, and new technologies has put a project in jeopardy. To save the day, bring in a legendary figure among the developers to take over the lead. Team members who are not impressed may need removal or reeducation.

Pattern: Cargo Cult

Pages: 162-164

A project is in trouble and is very visible. Criticism is directed at the project, staff, and management. People on the project are beaten up by rumor, management interference, and demands for replans. The project is important and can't be scrapped. Redraw organization charts showing the troubled project in a new, larger context, possible demoting it in stature. You could use Sacrificial Lamb, but don't make any real changes. This can be an antipattern.

Pattern: Containment Building

Pages: 164-165

A project is failing and is too visible. People are leaving or are severely disgruntled. Much criticism is directed at the project, staff, and management. Add the failing project to another, larger project, changing its name if necessary and apparently altering its scope. This gives the team room to recover.

Pattern: Doormat

Pages: 166

A doormat enables outside powers to manage the team without a reorganization. A rehabilitated Sacrificial Lamb can make a good doormat.

Pattern: Let's Play Team

Pages: 166-167

A tight schedule, uncertain requirements, uneven distribution of skills among developers, and new technologies have put a project in jeopardy. Pretend to be a team. Present a unified face through a team lead but otherwise do not collaborate. Be sure every team member has something to do but keep knowledge vertical, with little communication among members.

Pattern: Long Pole in the Tent

Pages: 167

A member of the team is the "long pole in the tent" if he is behind schedule or is suspected of being behind schedule, affecting other collaborating members.

Pattern: Peacemaker

Pages: 168

A peacemaker is a placeholder in an organization who tries to calm and hold things together until a leader can be found or a reorganization is complete. The peacemaker should be someone who is well liked but who is not necessarily technically proficient. Usually this individual has many years with the company, knows the political ropes, and can buy time for a team as well as the team's management.

Pattern: Sacrificial Lamb

Pages: 168-169

A project is visibly in trouble. Action must be taken. Select someone to be punished, whether through demotion, rescoping or removal of responsibility, or banishment to an area of no importance. Termination is rarely used if the action is primarily symbolic.

Pattern: Schedule Chicken

Pages: 169

A project of some size with many sub-teams is underway. More than one team is slipping its schedule, but all are loathe to report problems, hoping that some other team will give in sooner and admit delay. It's best if the team that loses the game is one that other teams depend on; then the losing team will take the heat for slippages that would have occurred anyway.