2001 – Kent Beck and 16 other noted software developers, writers and consultants (referred to as “Agile Alliance”) signed the “Manifesto for Agile Software Development.”
Agile methods –developed to overcome perceived and actual weaknesses in conventional software engineering.
It can provide important benefits, but is not applicable to all projects, product, people, and situations.
Manifesto Defined
MANIFESTO. A solemn declaration, by the constituted authorities of a nation, which contains the reasons for its public acts towards another.
-Dictionary.net
Manifesto for Agile Software Development
We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
- That is, while there is value in the items on the right, we value the items on the left more
What is Agility?
Agility has become today’s buzzword when describing a modern software process. An agile team is a team able to appropriately respond to changes.
- Software being built
- Team members
- New technology
What is an Agile Software Process?
Characterized by 3 Key Assumptions about the majority of software projects:
It is difficult to predict in advance which software requirements will persist and which will change. It is equally difficult to predict how customer priorities will change as project proceeds.
For many types of software, design and construction are interleaved. 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 design.
Analysis, design, construction and testing are not as predictable (from a planning point of view) as we might like.
How do we create a process that can manage unpredictability?
Process adaptability (to rapidly changing project and technical conditions)
An Agile process must be adaptable.
- Requires feedback – incremental development strategy should be instituted
- Software increments must be delivered in short time periods for adaptation to keep pace with change.
- This iterative approach enables the customer to
evaluate the software increment regularly, provide necessary feedback to the software team and influence the process adaptations that are made to accommodate the feedback.
Human Factors Needed in Agile Process
- Competence
- Common Focus
- Collaboration
- Decision-making ability
- Fuzzy problem-solving ability
- Mutual trust and respect
- Self-organization
Innate talent, specific software related skills & overall knowledge of the process that the team has chosen to apply.
Skills and knowledge of the process can and should be taught to all member of the team
Common Focus
Members of the team should be focused on one goal even if they are performing different tasks and bringing different skills to the project.
Goal: To deliver a working software increment to the customer within the time promised
Collaboration
Team members must collaborate with one another, with the customer and with business managers
Decision-making Ability
The team is given autonomy –decision-making authority for both technical and project issues.
Fuzzy Problem-Solving Ability
Agile team will continually have to deal with ambiguity and change
They have to accept that the problem they are solving today may not be the problem that needs to be solved tomorrow.
Should exhibit trust and respect that are necessary to make them “so strongly knit that the whole is greater than the sum of the parts” - DeMarco
Self-Organization
Implies three things:
- Organizes itself for the work to be done.
- Organizes the process to best accommodate it local environment
- Organizes the work schedule to best achieve delivery of the software increment.