Ah, agile. The buzzword of the decade.
From agile organizations and agile managers to agile workspaces, the term is thrown around so much that it almost seems to lose concrete meaning.
In the tech world, however, “agile” is anything but vague corporate lingo. It refers to something very specific: a particular approach to building software.
And just like the word itself, agile software development has seen its popularity go through the roof in the past few years.
With most development teams using agile these days, it’s essential to know the different agile methodologies and how they differ from the traditional waterfall model.
Here is the least you need to know.
Agile vs. Waterfall Software Development
What Is Waterfall Development?
Waterfall is the old-school way to create software.
This method breaks down the software development life cycle (SDLC) into distinct linear steps — gradually progressing from requirements gathering, analysis, and design to coding, testing, and deployment. Each development phase must be completed, reviewed, and verified before starting the next. The steps flow or “waterfall” one after the other.
What Is Agile Development?
There are many different agile methodologies, but they have one thing in common: They are circular rather than linear.
Agile projects are divided into shorter development cycles known as sprints or iterations. Each sprint incorporates all or most SDLC phases to deliver a functional application at the end. The development team and the customer then review the product and create requirements for the next sprint, which produces an updated version.
Image courtesy of ResearchGate
Which Is Better: Waterfall or Agile?
As you can probably tell, the waterfall model usually takes longer to build a functional product. It’s also more rigid and doesn’t allow for significant departures from the original requirements.
In contrast, with the agile approach you already have a minimum viable product (MVP) at the end of the first sprint. This rudimentary product is then fine-tuned with each iteration based on user and customer feedback.
What Are the Different Types of Agile Methodologies?
“Agile software development” is somewhat of a misnomer. The phrase can create an impression that agile development is a monolith, but, in reality, there are numerous agile methods.
So, how many different agile methodologies are there? They are too many to list in one article, but the most popular include:
- Scrum
- Kanban
- Extreme Programming (XP)
- Lean Development
- Crystal
- Dynamic Systems Development Method (DSDM)
- Feature-Driven Development (FDD)
Let’s take a closer look at these.
1. Scrum
Scrum has been around at least since 1986. By then, an early version of the methodology was already used by companies such as Honda and Canon. Early adopters named it Scrum after the eponymous rugby term, which refers to restarting the game after an infringement.
Scrum development is done in sprints usually ranging between two and four weeks. Each sprint produces an iteration of the product based on the client’s latest requirements. Every day starts with a 15-minute meeting, also known as a daily Scrum, during which team members check on product progress, coordinate their work, and plan daily tasks.
A Scrum team is a small cohesive unit with a common goal and no subteams or hierarchies. The team members typically include a Scrum master, a product owner, and developers.
Scrum Pros and Cons
Pros
- Relatively low cost
- Easily adapts to evolving needs
- Constant monitoring for quality
- Horizontal hierarchy and daily follow-up facilitate transparency
Cons
- Project segmentation may cause teams to lose track of the bigger picture
- Individual team member roles may not be well defined, resulting in confusion
2. Kanban
Kanban is by far the oldest of the different agile methodologies on our list. It was first developed in the late 1940s by Japanese engineer Taiichi Ohno. “Kanban” means “just in time” in Japanese.
Kanban focuses on creating an easy-to-understand, real-time visualization of the entire project to keep track of progress, increase transparency, and improve collaboration.
To that end, a board or a table (called a Kanban board) is divided into columns, one for each flow within the software development project. This includes pending, completed, and upcoming tasks. As work progresses, the information in the columns changes. Whenever a new task is created, a new column is added to the table.
Image courtesy of ResearchGate
Kanban Pros and Cons
Pros
- Easy-to-understand visuals
- Smooth workflows
- Great inventory management
- Easy to incorporate into existing organizational structures
Cons
- Best for processes that undergo small changes or with fewer flows but not ideal for very complex or dynamic projects
3. Crystal
Crystal is one of the most flexible agile methodologies. Originally developed in 1991 by Alistair Cockburn, it focuses on team members and how they interact rather than on processes or tools. This allows you to quickly build custom workflows based on your needs and incorporate them into your existing infrastructure with minimal overhead.
The Crystal method sees the product development process as a game that should inspire team members to interact, get creative, and come up with brilliant ideas. Frequent and direct communication, high team morale, and open access to users and information are critical.
Crystal team variants include:
- Crystal Clear: Up to eight people
- Crystal Yellow: 10–20 people
- Crystal Orange: 20–50 people
- Crystal Red: 50–1000 people
Crystal Pros and Cons
Pros
- Facilitates creativity, knowledge-sharing, and innovation
- Continuous collaboration between team members
- Compatible with various organizational structures and team sizes
Cons
- Not ideal for geographically scattered teams due to the need for constant communication
- Requires an experienced team with a high level of autonomy
- Brainstorming can go too far, causing teams to lose track of customer requirements
4. Lean Development
Lean Development traces its roots back to Lean Manufacturing, an industrial production model pioneered by Toyota. The main idea is to strip processes down to the bare minimum by eliminating everything that doesn’t bring value to the product.
The goal is to build a simple solution — the minimum viable product we discussed above — deliver it to the customer quickly, and use their continuous feedback to enhance the product incrementally.
In addition to removing non-essential tasks and processes, there is a heightened focus on quality, frequent delivery, communication, conflict management, and documenting workflows to reuse in the future.
Lean Development Pros and Cons
Pros
- Rapid delivery cycles
- Lack of superfluous activity shortens development time and saves money
- Scalable methodology suitable for different-sized projects
- No overengineered, needlessly complex solutions
Cons
- Requires a team that is well-versed in Lean agile principles
- Task segmentation can cause teams to lose focus
- Requires in-depth knowledge of the client’s industry, business, and product requirements for the essentials to be correctly identified
5. Extreme Programming (XP)
XP was created by Kent Beck and Ward Cunningham in 1996. It prioritizes simplicity or identifying the simplest code that works, test-driven development, and customer satisfaction.
The product is tested continuously from day one to collect feedback. Developers adapt to changes in client requirements even if they come late in the development cycle, without putting too much weight on the original long-term view.
Extreme Programming Pros and Cons
Pros
- Rapid results
- Continuous feedback and testing facilitate quality
- Simplicity of the code allows for improvements at any time
- Focus on customer satisfaction helps build strong business relationships
Cons
- Hyperfocus on code can cause teams to neglect design
- May not be suitable for geographically scattered teams
- A registry of errors isn’t always maintained, which could lead to repeated bugs in the future
6. Dynamic Systems Development Method (DSDM)
First developed by James Rumbaugh and Michael Tuckman in 1994, DSDM sought to bring more discipline and governance to the earlier Rapid Application Development (RAD) method.
Like other agile frameworks, DSDM emphasizes rapid prototyping, frequent releases, continuous testing, and improvement through user feedback. What makes DSDM stand out, however, is its insistence on having well-defined strategic goals based on the client’s business requirements. All stages of product development must support these goals and create demonstrable value for the business.
DSDM Pros and Cons
Pros
- Rapid deliverables
- Flexible workflow
- Business-driven approach
- Great for long-term or complex software projects
Cons
- Possible large overheads
- Impractical for small companies
- May stifle innovation and developer creativity
- Rigid goals may not reflect changes in the market
7. Feature-Driven Development (FDD)
As its name suggests, and unlike most agile methodologies, FDD focuses on delivering features rather than complete products.
The FDD process consists of five phases. During the first phase, the development team creates a high-level product model. In the second phase, they compile a list of the different functions and related features and functionalities. Other tasks such as programming and testing take place during the more advanced phases four and five.
Another distinctive aspect of FDD is feature teams. These are small subteams that focus on developing a specific product feature.
Image courtesy of ResearchGate
FDD Pros and Cons
Pros
- Breaking work down into distinct phases makes it easier for team members to grasp the project scope
- Focus on features ensures customer requirements are met and facilitates a good user experience
- Compatible with both short and long-term projects
Cons
- May not be suitable for very small projects and projects with a single developer
- Small feature teams can promote individualism instead of teamwork
Not Sure Which of the Different Agile Methodologies Is Best for You?
It’s okay. That’s our job.
At Zartis, all of our software development teams work in agile. Our operating model of choice is usually Scrum, but we are proficient in different agile methodologies and always tailor our approach to your company size, in-house processes, and project requirements.
Whether you need our consulting services to understand how to apply agile better or you want to start building dedicated agile teams with us, we got your back.
Getting started with Zartis is easy. Simply drop us a line to tell us about your company and the project you have in mind. We’ll take it from there.