What Is Agile? A Deep Dive Into Agile Methodology.
Agile methodology is a defined framework for software development success. Based upon a set of four values and twelve principles laid out in the Manifesto for Agile Software development, Agile is designed for adaptability in solving a market’s specific needs at a given time and prioritizes accelerated time to market and the value of user insights.
Created with flexibility and adaptability in mind, Agile is a method of organizing development and product management teams that prioritizes the continuous development of products after they go to market. Agile ensures that products are able to solve market issues as they arise and reduces the number of abandoned projects in any team’s portfolio.
Agile vs Waterfall
Before the creation of the Agile methodology, it could take years to develop a product that solves a business’s key challenges and allows them to focus on continuous growth. The most common software development process of the pre-Agile era was known as Waterfall. Waterfall encourages development teams to identify problems, develop a solution, and bring a product to market in its entirety, providing the most robust experience at first interaction.
The Waterfall development methodology follows a clear path to reach its end product:
- Project requirements and scope of work are set into place
- Products are designed to meet requirements laid out by the scope
- Products are built
- Products are tested
- Problems are discovered during testing and fixes are applied
- Products are launched once testing is completed
While the Waterfall approach led to more complete products hitting the market at a given time, it also introduced several downsides. The biggest issue was that Waterfall forced development teams to stick to the scope without introducing changes throughout the process. This meant that solutions would often no longer be viable as challenges shifted over time to newer, rapidly emerging problems. It was commonplace for development teams to rack up a “graveyard” of abandoned projects rather than bring outdated solutions to the marketplace.
Shift to Agile
As frustrations mounted across enterprises throughout the 1990s, the software industry became ripe for an update to how projects are built. The answer arrived in 2000 with the introduction of Agile methodology.
Pioneered by a group of seventeen software developers in Oregon, Agile emerged as a way to speed up development times to bring new software to market swiftly. These developers realized that reducing the time it takes for users to receive solutions to their problems would fix issues with market fit while also realizing that receiving rapid feedback from users would affirm work in progress and allow for constant improvement. Eventually, the seventeen developers were able to formalize the Manifesto for Agile Software Development, commonly referred to as the Agile Manifesto.
The creation of the Agile Manifesto brought about four central values and twelve principles that set the basis for Agile methodology.
- Individuals and interactions should be prioritized over processes and tools – the people who create the products are responsible for the success of that product.
- Working software is more useful than comprehensive documentation – ensuring products can reach the market in a timely manner is the priority.
- Customer collaboration should be prioritized over contract negotiation – customers are crucial to the development of quality products.
- Responding to change is valued over following a plan – Agile work environments are all about adaptability and making the right decision for a given moment.
- Customer satisfaction is the top priority
- Harness change
- Deliver working software frequently
- Business-wide collaboration is a must
- Build supportive environments around motivated individuals
- Embrace face-to-face decision making
- Measure progress through working software
- Promote sustainable development
- Maintain attention to technical excellence
- Simplicity is essential
- Rely on self-organizing teams
- Regularly reflect on and adjust team efficiency
As teams began applying their own Agile frameworks, the entire methodology would develop and revise itself well into the 21st century. The benefits of Agile truly became clear to companies between 2012 and 2015, during which time Agile adoption surpassed 50% amongst development teams.
Agile relies on several specifically defined concepts to organize the development process. These processes help set clear expectations for all stakeholders and minimize potential roadblocks that could delay time to market. One of the most crucial concepts is that every Agile development process revolves around specific roles.
- User – agile processes begin with the user or customer in mind by defining a persona to help identify their behavior, needs and how the product will assist them.
- Product owner – the main responsibility of the product owner is to be able to properly distill user insights, internal and external ideas and feedback received into a product vision. Product visions are concise, straightforward sentiments that allow the product’s desired benefit to become clear to all parties. Product owners work alongside the development teams to create user stories that provide more details on the target user, the problem at hand, the solution’s benefits, and criteria for meeting the goal.
- Software development team – in Agile, software development teams feature diverse, multidisciplinary groups of people working together to deliver end-to-end functioning applications. Teams are often composed of developers, quality assurance engineers, designers, analysts and additional engineers who begin by building the database, business logic and user interface for demos. Agile software development teams meet frequently to ensure progress is being made and every member has a clear vision of their roles in the process.
Agile Methods and Frameworks
Set frameworks is another Agile concept that allows the process to operate smoothly. While Agile methodology is designed to be adaptable to a business and its market’s needs, these frameworks help define the development process to ensure a timely launch.
- Agile and Scrum — Scrum is the most widely used Agile framework and is based upon five values: commitment. courage, focus, openness, and respect. Scrum maintains many of the same roles as the basic Agile framework but adds the Scrum Master, who ensures Scrum is understood and executed properly.
Scrum follows set “events” to carry out organized development. These events include:
- Sprints – Sprints are timeboxes for accomplishing a goal. These remain consistent throughout the development process and their length will not exceed a single month.
- Sprint planning – Sprint planning is the collaborative process of building the upcoming Sprint with the rest of the development team.
- Daily Scrum – 15-minute meetings that occur during every day of the Sprint are called daily scrums. Achievements from the previous day are noted during daily scrums and new expectations are set in place.
- Sprint review – These meetings occur at the end of every Sprint so the scrum team can present their Increment to stakeholders and receive feedback.
- Sprint retrospective – At the end of a Sprint, teams meet to discuss the previous Sprint’s achievements and fallbacks before setting expectations and improvements for the next Sprint.
- Kanban – Kanban is a more visual method of Agile project management that helps paint a clear picture of the workflow to identify early bottlenecks for a better result. Born out of the production lines of Toyota in the 1940s, Kanban follows six general practices: visualization, limits to work in progress, flow management, creating explicit policies, utilizing feedback loops and experimental collaboration.
Kanban’s visual methodology is built upon interactive cues that make the development process abundantly clear.
- Kanban board – A physical or software-based management tool that lays out tasks in progress, to-do lists and completed tasks.
- Kanban cards – Kanban cards occupy the Kanban board and represent the individual tasks that the team is responsible for. Information in Kanban cards will often include the task’s name, status, cycle time and deadlines.
- Kanban swimlanes – This element of the Kanban board allows team members to categorize tasks for clear indications of progress. Tasks can be shuffled upon receiving feedback to distinguish between work completed, ongoing or not yet started.
Scrum and Kanban have long been the most popular frameworks for Agile project management but other variations exist to meet specific employee, company and market needs.
- Extreme Programming (XP) is designed to provide the development team with a higher quality of life while simultaneously improving the quality of the product. It accomplishes this by following practices that include small releases, simple design, pair programming, collective ownership, continuous integration, a coding standard, an on-site customer and a 40-hour workweek.
- Crystal is a family of Agile methodologies built around the key components of teamwork, communication, simplicity and reflection. This framework is designed to be adaptable on a project-by-project basis and tailors itself based on pre-existing policies, practices, and processes to meet demands.
- Feature-Driven Development (FDD) prioritizes delivering working software swiftly more than any other framework. FDD is built upon shorter phases of work with a goal of actualizing a single feature at a time.
Agile Project Management Deliverables
While every framework varies in both process and timeliness of reporting, they all share many deliverables:
- Product vision statements – The long term vision and solutions the product will provide.
- Product roadmap – A product’s vision is only as valuable as its roadmap, which identifies how and when the project will be taken from the planning stages through its development to reach the market.
- Product backlog – Keeping track of new features, changes to existing features, bug fixes, infrastructure changes and all other adjustments is crucial to the continued success and development of the product.
- Release plan – Mapping out the specifics of how a product will reach the market and how users will interact with it is crucial knowledge for stakeholders.
- Increment – Before a product can be released, an increment must first be created. Increments compile all changes in a backlog to create a working version to present to stakeholders for feedback. Increments can then be released, revised, or presented again.
Agile is only truly effective if all team members are actively involved in the process and the framework is consistently followed. These tools and best practices can help teams stay on track throughout their development cycle and ensure products reach the market both swiftly and successfully:
- Customer collaboration – As a core value stated in the Agile Manifesto, customer collaboration is at the heart of every Agile project. Ensuring the development team has a clear understanding of the customer’s needs and feedback leads to products that are significantly more useful at launch.
- Continuous integration – Keeping code up to date can be accomplished by producing error-free builds throughout the day, enabling product delivery at any point in time.
- Pair programming – Pair programming is when two programmers work on a single project with the goal to reduce bugs, enhance designs and encourage knowledge-sharing. One programmer takes on the role of the "driver" while the other "navigates" by providing feedback, watching and learning.
- Burndown charts – A burndown chart displays the amount of work to be done versus the time left to complete. This representation leads to better project forecasting and ensures that all team members are aware of upcoming workloads.
- Code review – Allowing team members to review their peers' work can foster an environment of appreciation while reducing the number of mistakes brought to an Increment, leading to accelerated and streamlined project timelines.