Agile development is a method of working to rapidly deliver better software by utilizing cross-functional teams. When software development became more focused on Internet applications, the product development process was forced to become faster and more pliable. This development method stems from the belief in The Agile Manifesto, founded in 2001 by 17 software industry leaders. This manifesto has been refined and expanded by the non-profit organization the Agile Alliance, who provide an open-soruce, evolving guide around agile practices and terms, such as a focus on collaboration and iterative processes.
Agile development focuses heavily on a collaborative working style instead of the more rigid “waterfall” style (resembling an assembly line where one team member completes a task and hands it off to the next person). According to agile methodologies, communication between team members plays a crucial role, and is often considered more important than tools, processes or documentation. This is especially noticeable in the common use of pair programming, which is an agile practice in which two programmers will work at one station to review and make recommendations around code as it is being written. Effective communications is a necessary step throughout the iterative agile process of developing software.
The agile development process requires software development teams to enact a flexible approach to problem-solving, and should remain highly focused on product delivery and effective testing at every iteration. When enacting agile software development, it is important the developers maintain focus on producing the correct product for the targeted consumer or “stakeholder.” To help ensure this, there will oftentimes be a designated “product owner,” or someone who is responsible for clarifying goals on behalf of the stakeholders. Oftentimes, the product owner will help in crafting “user stories,” which are informal descriptions of the software from the point of view of the end user. These user stories become the focus of different iterations throughout the agile project management system, and are often recorded on index cards or in project management software so they can be easily referenced.
As part of the focus on iterations, agile methods recommend that projects be broken into smaller chunks, sometimes referred to as “sprints.” Sprints help to minimize upfront planning and allow for quicker changes to be made as needed. At the end of each sprint, the product owner will be present to ensure that the proper goals are being met, and to perform as much testing as possible at the end of the current sprint. Once a sprint is complete, agile teams will then start another small sprint, and they will continue iterating new sprints throughout the project lifecycle. These sprints allow for continual improvement, as changes can be made after appropriate user testing at the end of each sprint. Rather than having a completed project being tested, testing is integrated throughout the development process, so small changes can occur frequently instead of large changes all at once.
Agile development is a useful system as it helps: