What is Agile Methodology and How to Choose Its Right Type for Your Project?
Agile methodology is one of the most described and discussed concepts in articles, posts and scientific editions in software development world. Why should we talk about this again?
The understanding of the methodology and ability to apply it should be clear to every project manager as all the methods in the Agile family are in high demand wherever around the globe.
However, the main ideas and principles of the methodology are often confused. Especially by young talented minds. Someone can easily confuse the Scrum master’s responsibilities and the role of product owner, someone may misrecognize the daily Kanban meeting naming it as Scrum stand up, and so on and so forth.
What are the roots?
The first roots of the concepts of incremental and adaptive software development processes date back to the 1950s-1980s. In the 1990s Agile started to gain some traction but the really loud moment for the Agile concept was the posting of “The Manifesto for Agile Software Development” in 2001.
There were 17 software developers, who arranged the discussion of the collection of lightweight development methodologies. Now we know them as Agile methods.
Agile Family: so similar but different
Different Agile methodologies share much of the same philosophy, many of the same characteristics and practices. However, each methodology has its own tactics, recipes, practices and particular terminology.
To be brief, let’s define a few of the main software development methodologies from the Agile family.
Popular members of the Agile family
Among all Agile family members, the most popular and used by practitioners are: Scrum, Extreme Programming (XP), Feature-Driven Development (FDD), Dynamic Systems Development Method (DSDM), Adaptive Software Development (ASD), Lean Software Development (LSD), Crystal and of course, Kanban although it is usually not considered as Agile development method but used in conjunction as a means for increasing efficiency.
Lean and Kanban
Lean Software Development focuses the team on delivering Value to the customer, and on the efficiency of the Value Stream. The approach was developed and described by Mary and Tom Poppendieck. It includes the following principles:
- Eliminating waste
- Amplifying learning
- Deciding as late as possible
- Delivering as fast as possible
- Empowering the team
- Building integrity in
- Seeing the whole
Kanban is good for managing products with an emphasis on continual delivery without overburdening the developers. Kanban is used to help teams work together more effectively.
There are basic principles in the methodology:
- Visualize the workflow (what you do today).
- Optimize work by limiting the amount of work in progress (WIP).
- Enhance the flow. If something is finished, start working on the issue with the highest priority from the backlog.
Kanban promotes continuous collaboration. It encourages active, ongoing learning and improvement by defining the best possible team workflow. Nowadays you may find smart and effective product management tools that help to find the right ways on how to do Kanban projects. Just look at how convenient Kanban boards in Hygger are:
A couple of words about Scrum
Scrum is a framework within which people can address complex adaptive problems, while productively and creatively delivering products of the highest possible value. This is the definition by a Scrum guru Jeff Sutherland, the author of the bestselling book describing Scrum in a nutshell.
The key principle of Scrum points that by splitting product, time and organization; you optimize the process and guarantee great results.
Scrum methodology is based on three principles:
- Iterative structure of projects
- Visualization of workflow
- Particular team structure
To get into Scrum companies should establish small teams and give them small tasks for short periods, as Sprints usually last 2 weeks. Product managers track the progress on Scrum boards that consist of the following sections: a backlog, To Do, In progress, and Done.
Another distinctive feature of Scrum is the structure of its team. Scrum teams are very small and they have only three typical roles: the Product Owner, the Scrum Master, and the team. There is a big similarity between Lean and Scrum teams. Both of them are self-managing and have no formal leaders.
Extreme Programming (XP)
The methodology, described by Kent Beck, includes the disciplined approach to delivering high-quality software quickly and continuously.
XP is closely connected with high customer involvement, continuous testing, rapid feedback loops, planning and close teamwork to deliver working software at very frequent intervals. The typical interval is 1-3 weeks.
The XP concept includes 4 simple values: simplicity, communication, feedback, and courage.
According to Extreme programming principles, customers work very closely with the development team to define and prioritize relevant user stories.
Developers estimate, plan and deliver the highest priority user stories in the form of working software on an iteration-by-iteration basis.
These practices provide a supportive and lightweight framework to ensure high-quality software.
Dynamic Systems Development Method (DSDM)
DSDM is an Agile software development methodology that is based on the Rapid Application Development (RAD) approach. The method provides a four-phase framework that consists of:
- Feasibility and business study
- Functional model / prototype iteration
- Design and build iteration
DSDM relies on different activities and techniques based on these principles:
- Projects evolve best through direct and co-located collaboration between the developers and the users.
- Self-managed and empowered teams must have the authority to make time-sensitive and critical project-level decisions.
- Design and development are incremental and evolutionary in nature and is largely driven by regular, iterative user feedback.
- Working software deliverables are defined as systems that address the critical, current business needs versus systems that address less critical future needs.
- Frequent and incremental delivery of working software is valued over the infrequent delivery of perfectly working software.
- All changes introduced during development must be reversible.
- Continuous integration and quality assurance testing is conducted in-line, throughout the project lifecycle.
- Visibility and transparency are encouraged through regular communication and collaboration amongst all project stakeholders.
DSDM prioritizes schedule and quality over functionality and uses the MoSCoW technique for these aims.
The technique breaks a project down into four different types of requirements:
- Must have
- Should have
- Could have
- Won’t have
DSDM differentiates itself from other Agile family methods because of its formalized reporting and tracking requirement.
Feature-Driven Development (FDD)
Feature-Driven Development (FDD) in the Agile family is an iterative and incremental process that follows the principles of the Agile manifesto.
The main idea of FDD is to develop the high-level features, scope, and domain object model and then use that to plan, design, develop and test the specific requirements and tasks based on the overarching feature that they belong to.
FDD implicates the following eight practices:
- Domain Object Modeling
- Developing by Feature
- Component/Class Ownership
- Feature Teams
- Configuration Management
- Regular Builds
- Visibility of progress and results
The methodology defines a collection of supporting roles:
- Domain Manager
- Release Manager
- Build Engineer
- System Administrator
- Technical Writer
Crystal is one of the most adaptable and lightweight approaches to software development.
It actually includes several Agile methodologies: Crystal Clear, Crystal Yellow, Crystal Orange and others. All of them have the same points but differ in unique characteristics that are driven by several factors: team size, system criticality, project priorities, etc.
Crystal assists in the realization that each project may require a set of policies, processes and practices to meet the project’s unique characteristics.
The main Crystal principles include teamwork, communication, simplicity, reflection to frequently adjust and improve the process. The approach promotes early, frequent delivery of working software, high user involvement, adaptability, and the removal of distractions.
Some key advantages of Crystal
- Continuous integration
- Iterative-incremental process
- Flexible and configurable process
- Iterative development engine governed by planning and reviewing
- Active user involvement
- Lack of an unambiguous common process
- Only limited scalability
- It’s not suitable for developing highly critical systems
- Over-dependence on inter-human communication
Essential roles of Agile methodologies
Each methodology involves different roles with different names. If generalize, the common Agile roles include the following:
Team Lead, Project Lead and Scrum Master
The main responsibilities are facilitating and managing the team, obtaining resources and removing all impediments disturbing to work. To be successful in this role people should have soft project management skills more than planning and technical ones.
They are not “the rest”. Each team member is responsible for the creation and delivery of the project.
Teams usually consist of developers, testers, and documentation. They plan, design, develop, test, and deliver the project.
Product Owner for Scrum and On-site customer for XP)
These roles represent the voice of customers. They are responsible for the backlog prioritization and maximizing the ROI. They often participate in documenting user stories and project requirements.
This is a broad category that can include users, executive team, investors, managers of users, support, operations, portfolio managers, and many more participants.
These are the most common roles. Agile teams may also have extended members for technical or domain expertise.
You can independently determine whether one of the Agile methodologies is suitable for you or, for example, choose a Waterfall approach.
However, if you take the aggregate of Agile principles, implement them and leverage collaboration tools, you usually get the better-quality product results and better technical practices.