The Agile Method is a particular approach to project management that is utilized in software development. This method assists teams in responding to the unpredictability of constructing software. It uses incremental, iterative work sequences that are commonly known as sprints.
Agile Process and Method Overview
Below you will find an overview of the agile process (and what has been called “agile project management for dummies”) as well as a simple definition of agile methodology for any beginners starting out in software design and development.
The Agile Method Defined
A sprint is a period of time allocated for a particular phase of a project. Sprints are considered to be complete when the time period expires. There may be disagreements among the members of the team as to whether or not the development is satisfactory; however, there will be no more work on that particular phase of the project. The remaining phases of the project will continue to develop within their respective time frames.
The general principles of the Agile Method
- Satisfy the client and continually develop software.
- Changing requirements are embraced for the client’s competitive advantage.
- Concentrate on delivering working software frequently. Delivery preference will be placed on the shortest possible time span.
- Developers and business people must work together throughout the entire project.
- Projects must be based around people who are motivated. Give them the proper environment and the support that they need. They should be trusted to get their jobs done.
- Face-to-face communication is the best way to transfer information to and within a team.
- Working software is the primary measurement of progress.
- Agile processes will promote development that is sustainable. Sponsors, developers and users should be able to maintain an indefinite, constant pace.
- Constant attention to technical excellence and good design will enhance agility.
- Simplicity is considered to be the art of maximizing the work that is not done, and it is essential.
- Self-organized teams usually create the best designs.
- At regular intervals, the team will reflect on how to become more effective, and they will tune and adjust their behavior accordingly.
History of Agile Method
Many of the Agile ideas surfaced in the 1970s. Studies and reviews were conducted on the Agile Method that explain its emergence as a reaction against traditional approaches to project development.
In 1970, Dr. William Royce published a paper that discussed the managing and developing of large software systems. The paper outlined his specific ideas about sequential development. His presentation stated that a project could be developed much like a product on an assembly line. Each phase of the development had to be complete before the next phase could begin. The idea required that all developers must first put together all of the requirements of a project. The next step was to complete all of its architecture and designs. This is followed by writing the code. The sequences continue in complete increments. As these steps are completed, there is little or no contact between specialized groups that complete each phase of the project.
Pioneers of the Agile Method believed that if developers studied the process, they would find it to be the most logical and useful solution to software development.
Companies That Use Agile Method
Although there is no official list of companies that use the Agile Method for their projects, IBM is one of the companies that openly uses this method to develop software. Many companies will adopt the use of this method within their development structure, but they aren’t always open about their choice to use it.
According to IBM, the use of the Agile Method means that significant organizational changes will take place. They believe that many Agile software development teams will increase their chances of success by partnering with a trusted guide. They help clients implement their own Agile software development strategies for their projects. They provide critical guidance that will help Agile software development teams to avoid common adoption, expansion and implementation pitfalls.
Benefits of Using the Agile Method
The Agile Method grew out of experience with the real-life projects of leading software professionals from the past. Because of this, the challenges and limitations of traditional development have been discarded. Subsequently, the Agile Method has been accepted by the industry as a better solution to project development. Nearly every software developer has used the Agile Method in some form.
This method offers a light framework for assisting teams. It helps them function and maintain focus on rapid delivery. This focus assists capable organizations in reducing the overall risks associated with software development.
The Agile Method ensures that value is optimized throughout the development process. The use of iterative planning and feedback results in teams that can continuously align a delivered product that reflects the desired needs of a client. It easily adapts to changing requirements throughout the process by measuring and evaluating the status of a project. The measuring and evaluating allows accurate and early visibility into the progress of each project.
It could be stated that the Agile Method helps companies build the right product. Instead of trying to market software before it is written, the Agile Method empowers teams to optimize the release during its development. This allows the product to be as competitive as possible within the marketplace. It preserves the relevance of the critical market, and it ensures that a team’s work doesn’t wind up collecting dust on a shelf. This is why the Agile Method is an attractive developmental option for stakeholders and developers alike.
There are many critics of the Agile Method; however, this method produces results that clients can take to the bank. Although a project may not turn out exactly as the client envisions, it will be delivered within the time that it needs to be produced. Throughout the process, the client and the team are changing the requirements in order to produce the quality needed by the client. Clients are happy with the results, and the team satisfies the client’s needs. The ongoing change can sometimes give both the client and the team more than they had originally envisioned for the product. The Agile Method really is a winning solution for everyone involved in software development.
Criticism of Agile Development
- It is developer-centric rather than user-centric.
- Agile focuses on processes for getting requirements and developing code and does not focus on product design.
- Agile methodologies can also be inefficient in large organizations and certain types of projects.
Difference Between Agile and Traditional (Waterfall or Spiral) Development
Traditional: Systems are fully specifiable, predictable, and can be built through meticulous and extensive planning.
Agile: High-quality, adaptive software can be developed by small teams using the principles of continuous design improvement and testing based on rapid feedback and change.
Traditional: Process centric
Agile: People centric
Traditional: Individual—favors specialization
Agile: Self-organizing teams—encourages role interchangeability
Traditional: Guided by tasks or activities
Agile: Guided by product features
Traditional: Life cycle model (Waterfall, Spiral, or some variation)
Agile: The evolutionary-delivery model
Desired Organizational Form/Structure
Traditional: No restriction
Agile: Favors object-oriented technology
Glossary: What is Meant by Agile Methodologies
Acceptance Test: Confirms that an story is complete by matching a user action scenario with a desired outcome. Acceptance testing is also called beta testing, application testing, and end user testing.
Customer: A customer is a person with an understanding of both the business needs and operational constraints for a project who provides guidance during development.
Domain Model: the application domain responsible for creating a shared language between business and IT.
Iteration: An iteration is a single development cycle, usually measured as one week or two weeks.
Planning Board: Used to track the progress of an agile development project. After iteration planning, stories are written on cards and pinned up in priority order on a planning board.
Planning Game: A planning game is a meeting attended by both IT and business teams that is focused on choosing stories for a release or iteration.
Release: A deployable software package that is culmination of several iterations of development.
Release Plan: An evolving flowchart that describes which features will be delivered in upcoming releases.
Spike: A story that cannot be estimated until a development team runs a time-boxed investigation.
Stand-up: A daily progress meeting (literally every stands up and meets to keep engaged and motivated), traditionally held within a development area.
Story: A particular business need assigned to the software development team. Stories must be broken down into small enough components that they may be delivered in a single development iteration.
Timebox: A defined period of time during which a task must be accomplished.
Velocity: The budget of story units available for planning the next iteration of a development project. Velocity is based on measurements taken during previous iteration cycles.
Wiki: A wiki is a server program that allows users to collaborate in forming the content of a Web site.