Agility has becometoday’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 softwarebeing 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 theproject that creates the product.
Support for changes should be built-ineverything we do in software. An agile team recognizes that software isdeveloped 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 replyto use to define procedures for incrementalsoftware development. It is an substitute to traditional project managementwhere highlighting is placed on empowering people to collaborate and make teamdecisions in addition to continuous planning for continuous testing andcontinuous integration. They are appropriate for many types of projects and areparticularly useful when Web applications are engineered. AgileProcessAny agile softwareprocess is considered in a method that addresses a number of key expectationsabout the majority of software projects:1. It is difficult to forecast in advancewhich software requirements will persist and which will change.
It is equallydifficult to estimate how customer significances will change as the projectproceeds.2. Many types of software, design andconstruction are enclosed. That is, both activities should be performed intandem so that design models are proven as they are created. It is difficult topredict how much design is necessary before construction is used to prove thedesign.
3. Analysis, design, construction, andtesting are not as predictable as we might like. HumanFactorsFollowers of agilesoftware development take great pains to emphasize the importance of “peoplefactors.
” As Cockburn and Highsmith Coc01a state, “Agiledevelopment focuses on the talents and skills of individuals, molding theprocess to specific people and teams.”The main point in thisstatement is that the process forms to the needs of the people and team, notthe other way around. If members of the software team are to drive thecharacteristics of the process that is applied to build software, a number ofkey traits must exist among the people on an agile team and the team itself: CollectivefocusAlthough members of theagile team may perform different tasks and bring different skills to theproject, all should be focused on one goal—to deliver a working softwareincrement to the customer within the time promised. To achieve this goal, theteam will also focus on continual adaptations (small and large) that will makethe process fit the needs of the team. GroupeffortSoftware engineering isabout assessing, analyzing, and using information that is communicated to thesoftware team; creating information that will help all stakeholders understandthe work of the team; and building information that provides business value for the customer. To accomplish thesetasks, team members must collaborate—with one another and all otherstakeholders.
ProficiencyIn an agile development(as well as software engineering) context, “competence” includes innate talent,specific software-related skills, and overall knowledge of the process that theteam has chosen to apply. Skill and knowledge of process can and should betaught to all people who serve as agile team members. Decision-makingabilityAny good software team(including agile teams) must be allowed the self-determination to control itsown intention. This implies that the team is given self-sufficiency decision-makingauthority for both technical and project issues. Uncertainproblem-solving abilitySoftware managers mustidentify that the agile team will frequently have to deal with ambiguity andwill continually be buffeted by change.
In some cases, the team must accept thefact that the problem they are solving today may not be the problem that needsto be solved tomorrow. However, lessons learned from any problem-solvingactivity (including those that solve the wrong problem) may be of benefit tothe team later in the project. Mutual trust andrespectThe agile team mustbecome what DeMarco and Lister DeM98 call a “jelled”. A jelled team exhibitsthe trust and respect that are necessary to make them”Sostrongly knit that the whole is greater than the sum of the parts.” DeM98