What is Agile Methodology? How It Works, Best Practices, Tools
Agile Methodology is a people-focused, results-focused approach to software
development that respects our rapidly changing world. It’s centered around adaptive planning,
self-organization, and short delivery times. It’s flexible, fast, and aims for continuous improvements
in quality, using tools like Scrum and eXtreme Programming.
How It Works
It works by first admitting that the old “waterfall” method of software development leaves a lot to be
desired. The process of “plan, design, build, test, deliver,” works okay for making cars or buildings
but not as well for creating software systems. In a business environment where hardware, demand, and
competition are all swiftly-changing variables, agile works by walking the fine line between too much
process and not enough.
Agile Methodology Overview
It abandons the risk of spending months or years on a process that ultimately fails because of some
small mistake in an early phase. It relies instead on trusting employees and teams to work directly with
customers to understand the goals and provide solutions in a fast and incremental way.
Faster, smaller. Traditional software development relied on phases like outlining the requirements,
planning, design, building, testing, and delivery. Agile methodology, by contrast, looks to deploy the
first increment in a couple weeks and the entire piece of software in a couple months.
Communication. Agile teams within the business work together daily at every stage of the project
through face-to-face meetings. This collaboration and communication ensure the process stays on track
even as conditions change.
Feedback. Rather than waiting until the delivery phase to gauge success, teams leveraging Agile
methodology track the success and speed of the development process regularly. Velocity is measured
after the delivery of each increment.
Trust. Agile teams and employees are self-organizing. Rather than following a manifesto of rules
from management intended to produce the desired result, they understand the goals and create their own
path to reach them.
Adjust. Participants tune and adjust the process continually, following the KIS or Keep It Simple
principle.
Examples of Agile Methodology
The most popular and common examples are Scrum, eXtreme Programming (XP), Feature Driven Development
(FDD), Dynamic Systems Development Method (DSDM), Adaptive Software Development (ASD), Crystal, and Lean
Software Development (LSD). Teams generally pick one or two methods. The most widely used methodologies
are Scrum and XP, which dovetail nicely.
Scrum is a hands-on system consisting of simple interlocking steps and components:
FA product owner makes a prioritized wish list known as a product backlog.
The scrum team takes one small piece of the top of the wish list called a sprint backlog and plans
to implement it.
The team completes their sprint backlog task in a sprint (a 2-4 week period). They assess progress
in a meeting called a daily scrum.
The ScrumMaster keeps the team focused on the goal.
At the sprint’s end, the work is ready to ship or show. The team closes the sprint with a review, then
starts a new sprint.
Here’s an example of how Scrum works: Bill meets with a customer to discuss her company’s needs.
Those needs are the product backlog. Bill chooses the most important tasks to work on in the next two
weeks. His team meets in a daily scrum to target work for the day ahead and address roadblocks. At the
end of the sprint, Bill delivers the work, reviews the backlog, and sets the goal for the next sprint.
The cycle repeats until the software is complete.
eXtreme Programming. Often used with scrum, XP is an example of how Agile can heighten customer
satisfaction. Rather than deliver everything the customer could ever want far in the future, it gives
them what they need now, fast. XP is centered on frequent releases and short development cycles. It uses
code review, pair programming, unit testing, and frequent communication with the customer.
Here’s an example of how XP works: Bill builds a list of customer requirements by having the customer
tell “user stories” that outline the features. From these, he builds a software release plan. The
software will be delivered in iterations, with one delivered every couple weeks. The team works in
programmer pairs, using daily meetings to smooth roadblocks. The customer delivers feedback in the form
of more user stories. The cycle repeats until the software is delivered.
Benefits of Agile Methodology
The benefits of Agile are tied directly to its faster, lighter, more engaged mindset. The process, in a
nutshell, delivers what the customer wants, when the customer wants it. There’s much less wasted time
spent developing in the wrong direction, and the entire system is quicker to respond to changes.
Faster. Speed is one of the biggest benefits of Agile Methodology. A faster software development
life cycle means less time between paying and getting paid. That, in turn, means a more profitable
business.
Increased customer satisfaction. With Agile, customers don’t wait for months or years, only to get
exactly what they didn’t want. Instead, they get iterations of something very close to what they want,
very fast. The system adjusts quickly to refine the successful customer solution, adapting as it goes
to changes in the overall environment.
Values employees. Employees whose ideas are valued are vastly more productive than those who are
ordered to follow a set of rules. The Agile Methodology respects employees by giving them the goal,
then trusting them to reach it. Since they’re the ones with their hands on the controls and the ones
who see the obstacles that crop up every day, employees are in the best position to respond to
challenges and meet the goals at hand.
Eliminates rework. By involving the customer at more than just the phases of requirements and
delivery, the project remains on-task and in-tune with customer needs at every step. This means less
backtracking and less “out on a limb” time between the time we do the work and the time the customer
suggests revisions.
Best Practices
The list of best practices is long and involved, with dozens of tools to pick and choose. We’ve
outlined a short list of the main benefits below.
Set priorities. A product backlog is a list of prioritized tasks maintained by a product owner.
Maintain small release cycles. The product should be released in increments every 2-4 weeks, with
stakeholders giving feedback before proceeding.
Use pair programming. Two programmers work side-by-side at a single computer. This technique
actually results in an identical degree of productivity to separate programming but delivers higher
quality.
Refactor. Rework code regularly to achieve the same result with greater efficiency and clarity.
Use test-driven development. Code the unit test first to keep the project on task throughout.
Test-driven development as an Agile best practice also produces greater employee engagement, since it
transforms testing from a boring grind to a coding challenge.
Agile is a popular development methodology widely used by development teams who need to ship apps
efficiently. But Agile development requires Agile support, so dev leaders must arm their teams with the
tools and resources they need to succeed.