At the end of the day, Agile Methodology is all about building better code.
Agile is playing a major role in shaping the digital transformation era we found ourselves in.
97% of organizations use the Agile methodology in one form or another, according to VersionOne’s 12th Annual State of Agile Report.
The full adoption of Agile development is happening rapidly. 25% of respondents to VersionOne’s report said that most or all of their teams are completely Agile, which is a large increase compared to 8% who said the same thing in 2016.
Despite this widespread use, only 12% of respondents said their organizations have a high level of competency with Agile practices. 59% said that they recognize they’re still maturing, indicating that they have much work to do in understanding how to properly implement the Agile methodology.
You may feel the same way, a bit lost and confused about what the Agile methodology really is, where it comes from, how it works, and how to implement it.
We’ll answer those questions and more in today’s post to give you an Agile methodology overview so you can understand for yourself the potential it holds for your organization.
What is Agile Methodology?
There are many Agile methodology definitions but the simplest one comes from Agile in a Nutshell:
“Agile is a time-boxed, iterative approach to software delivery that builds software incrementally from the start of the project, instead of trying to deliver it all at once near the end.”
As you can tell from this definition, Agile software development methodology is what people mean when they talk about Agile. It was created for and by software developers, but we’ll get into that a little later.
Suffice it to say, Agile is based on 4 major values that can be found on the Agile Manifesto website:
- Individuals and interactions over processes and tools.
- Working software over comprehensive documentation.
- Customer collaboration over contract negotiation.
- Responding to change over following a plan.
Agile proponents and practitioners will tell you that the items on the right are certainly important, but that the items on the left are even more valuable.
If you compare those 4 principles with the definition we provided, it should be clear that Agile is all about speed, flexibility, and breaking big projects into smaller, manageable ones.
To help you wrap your head around these concepts, let’s look at the 12 foundational principles behind the Agile methodology.
What are the Agile Methodology 12 Principles
The agile methodology 12 principles are plainly stated on the Agile Manifesto’s website as follows:
- Achieve customer satisfaction through quick and ongoing delivery of software.
- Embrace changing requirements at any stage of development to satisfy customers.
- Deliver operational software often and on a short timescale.
- Developers and businesspeople should collaborate daily for the duration of a project.
- Gather together motivated individuals in a supportive environment and build projects around them, trusting they’ll get the job done.
- Use face-to-face conversation to effectively and efficiently convey information to and within a development team.
- Progress is measured by working software primarily.
- Agile processes allow sponsors, developers, and users to work consistently and indefinitely. Also known as sustainable development.
- Agility is enhanced by technical excellence and good design.
- Maximizing the amount of work not done - the features not included in your software - is essential. This is known as simplicity.
- Self-organizing teams produce the best architectures, requirements, and designs.
- The team should reflect on how to become more effective at regular intervals and pivot accordingly.
Each of these principles was born out of a single meeting of the minds, which you can read about below.
Who Developed Agile Methodology?
The Agile project management framework was created and codified at The Lodge at Snowbird ski resort high up in the Wasatch mountains of Snowbird, Utah.
Between February 11-13, 2001, 17 representatives with various backgrounds met to vacation and discuss a common model for software development. They created the Agile Manifesto then and there.
- Mike Beedle, founder and CEO of e-Architects Inc.
- Arie van Bennekum.
- Alistair Cockburn, founder of Humans and Technology.
- Ward Cunningham, founder of Cunningham & Cunningham, Inc.
- Martin Fowler, the Chief Scientist for Thoughtworks.
- Jim Highsmith, the primary developer of the "Adaptive Software Development" Agile Method and author of a book by the same name.
- Andrew Hunt, a partner in The Pragmatic Programmers, and co-author of the best-selling book The Pragmatic Programmer: From Journeyman to Master, the new Programming Ruby, and various articles.
- Ron Jeffries, the proprietor of XProgramming.com, a consultant with Object Mentor, and the author (with Ann Anderson and Chet Hendrickson) of Extreme Programming Installed.
- Jon Kern.
- Brian Marick.
- Robert C. Martin, the president and founder of Object Mentor Inc.
- Ken Schwaber, president of Advanced Development Methods (ADM).
- Jeff Sutherland, Chief Technology Officer of PatientKeeper.
- Dave Thomas, co-author of The Pragmatic Programmer.
What is Waterfall Methodology?
Waterfall methodology long held it's place as the most powerful software development philosophy.
Before Agile there was Waterfall. This is the original model, the gold standard for software development that was used by almost everyone.
The waterfall methodology was long and tedious. It all started with heavy documentation upfront, gathering together all the requirements for the software and everything the business wanted to be included in the final product. These were long documents that detailed everything from functional specs to user interface designs.
After the documentation step, the team would move into the design phase, mapping out the application’s architecture, data structures, nonfunctional requirements, and more.
The team would finally move onto coding the software, integrating it into the larger system, and testing it. After that, developers would move on to fixing any issues found in testing the software and deliver a finished product.
Each of these stages was usually completed before the next stage would be started. Meaning this process took a long time, up to a few years just to roll out a single application following this model.
Agile methodology changed all of this...for better. And now, you can use Agile in a variety of ways to develop software.
What are the Types of Agile Methodology?
The Agile methodology and philosophy is not confined to a single way of doing things. It is a highly flexible model and developers have devised different approaches using its principles.
Below we list the most popular iterations of the Agile methodology.
Agile Scrum Methodology
Scrum is the most widely-used Agile methodology. VersionOne reported that Scrum is used 56% of the time by developers.
Scrum is often described as a lightweight process framework. Here’s what that means:
“Lightweight” refers to the amount of overhead required in Scrum, which is minimal. It maximizes productivity and allows developers more time to do their jobs rather than worry about menial tasks.
The “process framework” refers to a set of practices used by developers when applying this particular methodology. Scrum uses “Sprints,” a time duration of one month or less whereby a developer will release a “Done,” or product increment.
Because of its short time frames, focus on small goals, and flexible approach, scrum allows organizations to rapidly produce software that meets ever-changing business objectives.
In every Scrum undertaking there are at least 3 major roles:
- Scrum Master
- Product Owner
- The Development Team
The Scrum Master is the equivalent of a project manager. He helps remove any barriers impeding success, organizes meetings and discussion groups, tracks progress, solves problems, and helps each sprint get accomplished as efficiently and effectively as possible.
The Product Owner is responsible for ensuring the right product is built to the highest standards. His main priority is the “product backlog,” a list of all the tasks that must be completed in order to deliver a finished product.
The Development Team initiates and completes each sprint to fulfill the product requirements. The team works together with one another and the Product Owner and Scrum Master to finish tasks, hit targets, communicate issues, test products, give demos, and deliver the final piece of software.
The Agile Kanban methodology was adopted from the Toyota production system of the same name. Kanban translates from Japanese to English as “Signboard.” Unlike Scrum, Agile Kanban is not time-based, but rather, It’s a sign-based system that enables developers to “pull” tasks in from a “to-do” list into a “doing” list and out into a “done” list. Some development teams also include an “in test” list located before the done list.
Kanban helps Agile teams prioritize work and allows for a lot of work to be done simultaneously. Development teams choose which tasks to tackle based on priority and workload.
There are 3 major principles in Agile Kanban:
- Visualize the jobs to be done so they’re grouped together according to context.
- Minimize the amount of work in progress to avoid over-committing to too much work at once.
- Enhance the flow of work by finishing one task and starting on the next highest task in the product backlog.
Agile Extreme Programming (XP)
Agile Extreme Programming (XP) is a popular and demanding software development methodology. It was created by Kent Beck who combined a number of different Agile processes into his XP model.
The team in XP is extremely close-knit and actively works with the customer throughout all stages of development from planning to coding to testing to feedback.
There are 5 values representing the core of XP:
Communication means that software development is a collaborative effort and requires team members to continually transfer knowledge between one another, preferably face-to-face and through the use of tools such as whiteboards.
Simplicity means avoiding waste and concentrating on the most necessary tasks so that maintaining, supporting, and revising the product is as straightforward as possible.
Feedback means gathering reactions, criticisms, and observations from the team at each stage of the development process and adjust the product accordingly going forward.
Courage means a willingness to take action and make your voice heard even when you feel uncomfortable or unable. This could take the form of accepting tough feedback, voicing your concern over organizational issues, or simply refusing to do something that you believe doesn’t work and try something new. The purpose of courage is to ultimately help the team perform better and run into fewer problems.
Respect means honoring your fellow team members and appreciating their ideas and opinions. Honest and constructive communication requires team members to respect one another, even when they differ ideologically.
Want to Know How to Implement Agile Methodology in Your Business?
Putting Agile into practice in your business won’t happen overnight. You probably know that.
It takes the dedication of your team, organizational leaders, and top executives to make a new software development model work consistently for you and your clients.
Getting everyone on board isn’t easy when you’re doing it alone. That’s where we come in.
ATC specializes in Agile consulting. We can help you:
- Analyze your organization and its current processes and provide you with a roadmap and recommendations for adopting or improving Agile capabilities.
- Facilitate your organization’s transformation from legacy methods to a mix of Agile practices and principles to redesign processes, reinvent roles, and restructure incentives for optimal adaptability and performance.
- Scale the Agile system throughout your entire organization, codifying the framework and helping you implement and sustain Agile initiatives across multi-team projects and platforms.
Reach out today to discover how to make Agile finally work in your business.