What Is Agile Methodology?
Agile 101
Overview of Agile Methodology
Agile methodologies are approaches to product development that are aligned with the values and principles described in the Agile Manifesto for software development. Agile methodologies aim to deliver the right product, with incremental and frequent delivery of small chunks of functionality, through small cross-functional self-organizing teams, enabling frequent customer feedback and course correction as needed.
In doing so, Agile aims to right the challenges faced by the traditional “waterfall” approaches of delivering large products in long periods of time, during which customer requirements frequently changed, resulting in the wrong products being delivered.
Learn Agile
Application of Agile Methodology
Through most of its brief history (since 1999-2000), “Agile” has been predominantly an approach to software development and IT application development projects. Since then, however, it now extends to other fields, too, especially in the knowledge and services industries.
Agile is about being responsive to the market and to the customer by responding quickly to their needs and demands and being able to change direction as the situation demands. Be it IT or software development or any other field where there is a flow of work and delivery of work products, Agile methods are applicable. Agile methods attempt to maximize the delivery of value to the customer and minimize the risk of building products that do not – or no longer – meet market or customer needs.
They do this by breaking up the traditionally long delivery cycle (typical of the legacy “waterfall methods”) into shorter periods, called sprints or iterations. The iteration provides the cadence for delivering a working product to the customer, getting feedback and making changes based on the feedback.
Thus, Agile methods have sought to reduce delivery times (delivering early, delivering often) to ensure that smaller vertical chunks of the product get to the market, enabling customers to provide feedback early and ensure that the product they finally get meets their needs.
“Agility is principally about mindset, not practices.” – Jim Highsmith
Agile has become an umbrella term for a variety of planning, management and technical methods and processes for managing projects, developing software and other products and services in an iterative manner. These methods include Scrum, by far the most prevalent and popular method for software, XP (eXtreme Programming or Paired Programming), and more lately Kanban.
Agile methods also include technical practices – most of which fall under the umbrella term DevOps – that enable Test Automation, Continuous Integration/ Continuous Delivery/ Deployment (CI/ CD) and overall, an ever-shrinking delivery cycle for software and other products and services.
The use of Agile as an approach to project management has increased dramatically in recent years. Gartner predicts that agile development methods will soon be used in 80% of all software development projects
What is the Agile Manifesto?
The Agile Manifesto is a statement of core values and principles for software development. The Agile Manifesto for software development was set up in 2001 and it is a declaration of 4 vital rules and 12principles that serve as a guide for people in agile software development. It was created by 17 professionals who already practiced agile methods such as XP, DSDM, SCRUM, FDD, etc, gathered in the snowy mountains of the US state of Utah, convened by Kent Beck.
Source: LynneCazaly
“Intelligence is the ability to adapt to change.” – Stephen Hawking
12 Principles of the Agile Manifesto
Key Agile Methodologies
Scrum Methodology
Scrum methodology is a simple framework for working with complex projects, and it was created by Ken Schwaber and Jeff Sutherland.
Agile software development methodologies are iterative, meaning the work is divided into iterations, which are called Sprints in the case of Scrum. Scrum is executed by small teams of between 7-9 people, including a Scrum Master and a Product Owner.
In Scrum, projects are divided into cycles (typically 2 or 3 week cycles) called Sprints. The Sprint represents a timebox within which a set of features must be developed. Multiple sprints might be combined to form a Release – where formal software/ product delivery is made to the customer/ market.
The overall product functionality is broken down by the Product Owner into smaller features (typically described as Epics and User Stories – or just Stories). These Stories are prioritized and taken up in each Sprint or Iteration. The intent of the method is for the team to be able to demo at the end of each Sprint working pieces of the product to the Product Owner, to make sure that the product is working as intended.
Overall, the Scrum method breaks the long waterfall process delivery into smaller cycles, which enables product teams and the end-customer to frequently review working software and ensure that it meets their business requirements. This ensures that the end product also meets the final requirements of the customer.
The Scrum method is characterized by specific ceremonies such as the Daily Standup meeting, the Sprint Review Meeting, the Demo to the Product Owner and the Sprint Retrospective meeting. All of these meetings provide collaboration and review opportunities to the team to ensure that development is progressing as intended, and any issues are resolved quickly.
“As you navigate through the rest of your life, be open to collaboration. Other people and other people’s ideas are often better than your own.” – Amy Poehler
Extreme Programming (XP)
Extreme Programming (XP) – or Paired Programming is a methodology developed by Kent Beck in the early 90s. This agile methodology focuses on enhancing interpersonal relationships as a key to success in software development. XP also focuses on promoting teamwork, caring for the learning of developers, and fostering a good working environment. It is characterized by developers working in pairs where one developer programs while the other developer observes; and they switch these roles on a regular basis throughout the Sprint. This way, they enable continuous code review and feedback that enhances code quality and developer capability
Adaptive Software Development (ASD)
Unlike most Software development methodologies which use a static life cycle i.e., Plan-Design-Build, ASD offers a non-linear iterative life cycle, where each cycle can iterate and be modified while another cycle is being executed. It points towards Rapid Application Development (RAD), which emphasizes development speed to create a high quality, low maintenance product involving the user as much as possible. The main characteristics of ASD are:
“In an agile project the team takes care of the tasks and the project leader takes care of the team.” – Jim Highsmith
Dynamic Software Development Method (DSDM)
Feature Driven Development (FDD)
FDD is a 5-stage process, the first 3 of which are sequential and the final two stages are iterative (as shown in the diagram above). All agile methodologies follow a series of principles that make them resemble each other. FDD, however, offers solutions on how to organize the team and how to program the code, which makes it especially viable for large development teams building complex software.
One of the most popular books on the FDD method was published by Stephen Palmer in 2002, titled “A Practical Guide to Feature-Driven Development“.
Kanban Method
The Kanban Method was defined as the opposite of that – a non-disruptive evolutionary method for improvement, that ultimately enables teams to deliver continuously instead of in time-buckets of 2-3 weeks, get feedback faster and reduce the lead time to deliver value to the customer.
Kanban is a visual system for managing work as it moves through a process. Kanban visualizes both the process (the workflow) and the actual work passing through that process. The goal of Kanban is to identify potential bottlenecks in your process and fix them, so work can flow through it cost-effectively at an optimal speed or throughput.
Kanban is defined as a highly effective and efficient production system. The origin of the Kanban methodology lies in the “just-in-time” (JIT) production processes devised by Toyota, in which cards were used to identify material needs in the production chain. You can learn more about kanban here: https://www.nimblework.com/kanban/what-is-kanban/
Behavior Driven Development (BDD)
Behavior Driven Development (BDD) is a behavior-oriented agile development methodology. It was created by Dan North in 2003 as an evolution of the TDD methodology. Dan North aimed to bring non-technical people together in the process of creating the system’s technical functionality. It happens that when we develop software, we involuntarily fail to include business concepts present in the functionality, resulting in a possible flow for recurring and even serious bugs.
Source: Johnfergusonsmart.com
“In an agile project the team takes care of the tasks and the project leader takes care of the team.” – Jim Highsmith
Summary
Agile FAQs
Humanize Work. And be Nimble!