Agile was developed in response to older project management techniques, such as "Waterfall", which rely on anticipating nearly every scenario at the beginning of a project and are very resistive to change.
In addition to software companies, agile is being utilized by several industries and organizations including manufacturers, financial companies, healthcare organizations, and retailers.
Agile is being applied to many types of projects including web-based applications, mobile applications, life-critical systems, embedded software, and controls automation.
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
In other words, while there is value in the items on the right, we value the items on the left more.
Individuals and interactions over processes and tools
Agile places an emphasis on people working together effectively rather than the processes or tools. After all, it is people that design, develop, and implement the project.
Working software over comprehensive documentation
A comprehensive, extremely detailed, and accurate specification document that does not result in working solutions that meets the customer or project's needs is of little or no value.
Agile uses documentation to service the development of working software.
Customer collaboration over contract negotiation
Value is best achieved through collaboration with the customer. A contract is not an effective means to communicate or capture the best solution.
Responding to change over following a plan
In most software projects, it is extremely difficult to account for every function, data point, and scenario possible. Agile values the ability to change and address new issues rather than follow a plan that was created before everything was known.
Twelve Principles of Agile Manifesto
- The highest priority is to satisfy the customer through early and continuous delivery of valuable software.
- Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.
- Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
- Business people and developers must work together daily throughout the project.
- Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
- The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
- Working software is the primary measure of progress.
- Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
- Continuous attention to technical excellence and good design enhances agility.
- Simplicity — the art of maximizing the amount of work not done — is essential.
- The best architectures, requirements, and designs emerge from self-organizing teams.
- At regular intervals, the team reflects on how to become more effective and then tunes and adjusts its behavior accordingly.
Scrum Method
Scrum Roles
The Product Owner represents the interest of the "customer". This role is responsible for maintaining a prioritized list of work items the team will implement to deliver a solution.
The Scrum Master does whatever they can to make the team successful.
- Serves the Team
- Protects the Team
- Guides the Team
The Team develops and implements the solution.
- Self-Managing
- Cross-Functional
- Provide Ideas to Product Owner
Scrum – Solution Backlog
The first step is for the Product Owner to provide the Product/Solution Backlog.
- Prioritized List of Requirements
- Features
- Development Requirements
- Research/Investigation
- Known Issues
State what is important in the least amount of space. Just be clear on what is necessary for an item to be completed.
Scrum – Sprint Planning
The Sprint is a defined period of time (typically two weeks) that the Team will select items in the Backlog to complete.
During this planning meeting, the Team meets with the Product/Solution Owner to discuss the goals of the solution and get insight into the Product/Solution Owner's thinking. Then, the Team will select items from the Backlog:
- Start with the highest priority items
- Team members decide how much work they will commit to complete
- Team can select lower priority items that can be completed quickly as part of higher priority work.
Sprint
Once the team makes it commitment, any changes from the Product/Solution Owner are deferred to the next sprint. This protects the team from changes in scope, and forces the Product/Solution Owner to carefully consider items and priority in the Backlog.
Daily Scrum
A short (15 minutes or less) stand-up meeting