In today’s fast-paced business environment, companies are constantly pressured to adapt to changing market conditions. Companies that produce software increasingly turn to agile development practices to help them stay competitive. Agile processes are highly collaborative, iterative and all focused on the rapid and repeatable delivery of software. Many practices, such as pair programming and regular retrospectives, may appear on their surface to slow teams down. However, the benefits to organizations of “going agile” far outweigh the costs. In this slideshow, Paul Infield-Harm, director of product development at Cyrus Innovation, explains why.
Click through for five reasons why agile is worth the cost and effort to implement, as identified by Paul Infield-Harm, director of product development at Cyrus Innovation.
Agile organizations can more easily adapt their project portfolios due to changing business priorities. Agile projects deliver working software on a regular schedule, typically weekly or biweekly. The features delivered within each “iteration” are determined by the business, which will typically prioritize the highest value features first. These practices combine to reduce the risk of shifting resources away from an agile project. Because there isn’t much half-done work at any point, the work that is finished is high value, and the state of the project is always unambiguous.
The most important lessons you will get about your software will come from customers. Agile teams are able to get software into their hands quickly by only building just enough software to get valuable features delivered. The principle of “YAGNI,” short for “You Ain’t Gonna Need It,” serves as a reminder to avoid over-thinking and over-architecting. Since agile teams are also experienced at delivering software on a frequent basis, your business can respond and deliver better software based on customer feedback.
The details of delivery bog down many product owners: spending time assigning work, checking progress and writing status reports. In contrast, agile teams strive to be “self-organized.” The whole team is responsible for determining who works on what and for tracking and reporting progress. Agile teams are also responsible for maintaining a high level of quality and verifying that everything that goes out actually works. This means that agile product owners can focus on their customers and market, rather than doing team management.
Teams change. Employees quit. New hires come on, and employees move between projects within an organization. Agile teams can handle changes to the team much more easily than non-agile teams. Pair programming, where developers work together at a single computer, is a key practice of many agile teams. Pairing quickly and effectively distributes knowledge and know-how across members. Agile teams also practice collective code ownership, where no single person has special rights to a particular part of the software. This means that losing a critical team member is much less of a risk for an agile project.
Every organization and process has problems. Finding these problems and fixing them is critical to staying competitive. Detecting and eliminating issues in the development process is a central feature of agile development. Agile teams reflect on their work in regular retrospectives, as often as after every iteration. Teams zero in on problems that are slowing them down or making delivery unreliable. Since delivery cycles are short, new problems can be detected quickly before they can threaten the project and the organization.