Agility has become
today’s catchword when describing a modern software process. Everyone is agile.
An agile team is an active team able to appropriately respond to changes.
Change is what software development is very much about. Changes in the software
being built, changes to the team members, changes because of new technology,
changes of all kinds that may have an impact on the product they build or the
project that creates the product. Support for changes should be built-in
everything we do in software. An agile team recognizes that software is
developed by individuals working in teams and that the skills of these people,
their ability to collaborate is at the core for the success of the project.
Agility is operative reply
to use to define procedures for incremental
software development. It is an substitute to traditional project management
where highlighting is placed on empowering people to collaborate and make team
decisions in addition to continuous planning for continuous testing and
continuous integration. They are appropriate for many types of projects and are
particularly useful when Web applications are engineered.
Any agile software
process is considered in a method that addresses a number of key expectations
about the majority of software projects:
It is difficult to forecast in advance
which software requirements will persist and which will change. It is equally
difficult to estimate how customer significances will change as the project
Many types of software, design and
construction are enclosed. That is, both activities should be performed in
tandem so that design models are proven as they are created. It is difficult to
predict how much design is necessary before construction is used to prove the
Analysis, design, construction, and
testing are not as predictable as we might like.
Followers of agile
software development take great pains to emphasize the importance of “people
factors.” As Cockburn and Highsmith Coc01a state,
development focuses on the talents and skills of individuals, molding the
process to specific people and teams.”
The main point in this
statement is that the process forms to the needs of the people and team, not
the other way around. If members of the software team are to drive the
characteristics of the process that is applied to build software, a number of
key traits must exist among the people on an agile team and the team itself:
Although members of the
agile team may perform different tasks and bring different skills to the
project, all should be focused on one goal—to deliver a working software
increment to the customer within the time promised. To achieve this goal, the
team will also focus on continual adaptations (small and large) that will make
the process fit the needs of the team.
Software engineering is
about assessing, analyzing, and using information that is communicated to the
software team; creating information that will help all stakeholders understand
the work of the team; and building information
that provides business value for the customer. To accomplish these
tasks, team members must collaborate—with one another and all other
In an agile development
(as well as software engineering) context, “competence” includes innate talent,
specific software-related skills, and overall knowledge of the process that the
team has chosen to apply. Skill and knowledge of process can and should be
taught to all people who serve as agile team members.
Any good software team
(including agile teams) must be allowed the self-determination to control its
own intention. This implies that the team is given self-sufficiency decision-making
authority for both technical and project issues.
Software managers must
identify that the agile team will frequently have to deal with ambiguity and
will continually be buffeted by change. In some cases, the team must accept the
fact that the problem they are solving today may not be the problem that needs
to be solved tomorrow. However, lessons learned from any problem-solving
activity (including those that solve the wrong problem) may be of benefit to
the team later in the project.
Mutual trust and
The agile team must
become what DeMarco and Lister DeM98 call a “jelled”. A jelled team exhibits
the trust and respect that are necessary to make them
strongly knit that the whole is greater than the sum of the parts.” DeM98