Collective Wisdom from the Experts 67
These often-overlooked integrations underscore a fundamental problem for
development teams. The complexity of software seems to be geometrically
proportional to the number of component interconnections. Don’t ignore the
time needed to craft a demo environment, and do write user-level/acceptance
testing scripts and create accompanying documentation. No matter how light
your methodology, shippable software requires a certain level of documentation.
When these items are not ignored, the macro definition of what it means to
be “finished” differs significantly from the accumulated finishing of a set of
features within an iteration. And, the delta created from a buildup of those
missing items per iteration can alter the way a feature is implemented, tested,
and perceived by the customer.
Let’s not overburden our developers with administrative or business issues.
The underlying concept we need to spread is that iterations are not just for
software developers. They must be coordinated with tasks important to the
larger, general software project team members. Business analysts, software
project managers, and quality testers must coordinate their crucial activities
with those of the developers.
The person responsible for this coordination is the software project manager,
who must understand and spread the overall definition of what it means to be
finished at the macro level so that the non-code-based activities are performed
side by side with the weekly iteration work. The project manager must be the
arbiter between the development team and the other stakeholders to define
what it truly means to be “finished.”