In these cases, it is tough for a team to develop a set of repeatable prac-
tices that work for the team.
Poorly defined stopping points. I visited customers in the mid-1990s that
are probably still iterating on a single release. It is important to specify a
set of metrics that define the completion of a project or a phase. Usually,
the iteration units include a finite set of use cases, with some flexibility
to remove or insert additional cases as time permits. The flexibility must
be constrained by the business environment, though. Sometimes, differ-
ent phases of the process are overemphasized. For example, too many
iterations over the requirements and design without a clearly defined
exit strategy led to the term analysis paralysis .
Overmanagement of the artifact set. Object-oriented tools and processes
can produce a staggering amount of paper if left unchecked. When
working at a startup, we were trying to get our cycle time down to six
weeks. As we were building the Client Services organization, two man-
agers with mostly procedural process experience produced a process that
would require a staggering 30 artifacts! Each artifact must contribute to
the delivery of a quality product to the customer. Additional artifacts
should be added only to the extent that they patch holes in the existing
development process and lead to better efficiency or quality.
Poor teams or inadequate education. Most projects that succeed do so
because of good teams with strong knowledge. Investments in the qual-
ity of the team, especially when teams are new to object technologies,
cannot be overemphasized. In addition, it never ceases to amaze me
that many extremely strong teams have completely inadequate hiring
processes. Investments in consulting to shore up the interview process
or good recruiting companies usually provide outstanding returns.
Effective education and leadership can go a long way toward steering clear of
many of these problems. In fact, many organizations seed small projects with
high-powered consultants who serve as mentors to jump-start a project.
Hands-on training under effective leadership can be an extremely strong edu-
Programming horizons: Extreme programming
Some recent refinements to iterative development have shown promise under
the label of extreme programming . Kent Beck introduced this methodology in
a book called eXtreme Programming eXplained. This refined process uses a
collection of simple rules and practices to form a disciplined and team-