The agile software development model is one among various models used when developing software development. You can read more on other models on SDLC Models: How to Choose the Best.
Although initially founded in software development, today other organizations use the agile methodology to manage their projects.
Why Agile methodology?
The agile approach to managing software projects was introduced to make the software development process flexible and efficient.
Although the history of agile goes back to 1957, the modern-day agile approach was officially introduced in 2001 and the Agile Manifesto for software development was developed. The Agile manifesto has a vision of creating an approach to software development that is lightweight, flexible, and team-oriented.
Therefore, unlike traditional models such as the classic waterfall, the agile model does not involve following a specific methodology. Rather it encourages a team to work in a flexible, incremental, and collective manner. As a result, there is quick and often iteration to satisfy customers.
According to the manifesto value is given to:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan.
There are various agile frameworks and most organizations often modify parts of a chosen framework to fit their needs. Each framework has a unique set of strengths and weaknesses.
The most widely-used Agile methodologies include:
Scrum Agile Framework
In scrum, an entire scope of work is broken down into short development cycles known as sprints. The sprints are used to move a project forward.
This framework is not hierarchical and teams are self-organizing. With a scrum master as the team guide and product owner who represents the business and customers.
Scrum agile framework is easy to understand and requires rapid feedback as well as daily meetings. However, the short and frequent deadlines may lead to a high degree of pressure on the team and may also lead to scope creep.
The scrum framework is suitable for those who prefer a team-based and lightweight approach to software development.
Lean Software Development
Also referred to as the minimum viable product (MVP), this framework borrows its strategy from the manufacturing industry. The idea of this framework is to optimize development time and resources, eliminate waste, and deliver what the product needs.
Simply put the lean framework eliminates unnecessary activities hence reducing cost and allows more functionality to be delivered in less time. This makes it an excellent approach as it streamlines processes and forces a team to cut away needless activities. It also empowers the development team to make decisions that boost their morale.
On the flip side lean framework is not scalable as it heavily relies on the team involved. It also depends on strong documentation otherwise lack of it may result in development mistakes.
Only use lean when you have an outstanding development team.
In Kanban, framework development is built on workflow visualization. Work is represented visually on a Kanban board whereby the current work (work in progress or WIP) is prioritized. Since there are no timeboxed development cycles, the team can change the work plan at any time.
The success of this framework is dependent on communication and transparency among team members. This helps to know the exact stage of the development as well as the status of a project at any one time.
The ability to know the status of a project at any time makes it possible to limit the number of running tasks thus allowing for continuous delivery.
Unfortunately, members may misinterpret information shown on the Kanban board, and may also result in time-related problems as it has no timeframes.
Extreme Programming (XP)
XP emphasizes producing high-quality software as well as making life better for the developers/engineers. XP stresses five core values i.e communication, simplicity, feedback, courage, and respect.
The focus is on technical aspects of software development and that’s there is an emphasis on code over product design. Product development includes consistent stages: core writing, testing, analyzing, designing, and continuous integration of code. However, the code quality is not stressed.
Although this framework helps cut costs, it is not suitable for differently located developers.
XP requires a relatively small development team and is good for products whose needs are not well articulated, or that change frequently.
Crystal Agile framework
The crystal framework is based on the belief that a team can find ways on their own to improve and optimize their workflows. Here the emphasis is placed on individuals and their interactions rather than on processes and tools.
Since every project is considered to be unique and always changing, the team works the way they find effective. This makes it easy for a team to respond to changing requirements due to the framework adaptive approach.
Less importance is placed on documentation and reporting but requires direct team communication, transparency, and accountability.
Unfortunately, the crystal framework may lead to scope creep as it has no pre-defined plans and the lack of documentation may lead to confusion.
This flexible framework is suitable for an organization that wants to empower its team to work in whichever way they consider to be effective.
Dynamic Systems Development Method (DSDM)
DSDM takes an iterative approach and addresses the whole project lifecycle and its impact on the business. The framework is built on the following principles:
- Feasibility and business study
- Functional model and prototype iteration
- Design and build iteration
This ensures that basic product functionality is delivered rapidly and on time.
However, DSDM is costly, can disrupt a company culture, and is not good for small organizations.
Suitable when you prioritize quick development and timely delivery that is within budget.
Feature Driven Development (FDD)
Software development in this framework is set around making progress on features. This however is not precisely on product features but rather relates to user stories in a scrum.
Takes advantage of pre-defined development standards. Has less written documentation and this can confuse. With a top-down decision-making approach, it is highly dependent on the lead developers or programmers.
The FDD framework is popular in large organizations as large teams can move products forward successfully.
Scaled Agile Framework (SAFe)
SAFe is a flexible framework that intends to help manage some challenges faced in larger organizations that practice agile.
The framework is built on three pillars which are team, program, and portfolio. It works as a broad knowledge base since it uses proven best practices that have previously helped deliver software products successfully. This is because it leverages lean, Kanban, Scrum, and XP frameworks.
SAFe takes more of a top-down approach to decision making and requires a lot of upfront planning as well as a process definition. This enables cross-functional teams to collaborate effectively and transparently.
Good for enterprise organizations and also when you are transitioning into the agile methodology.
How to Choose the Best Agile Framework for Your Company
The various frameworks in the agile methodology of software development make it a bit confusing when it comes to choosing the best fit for your organization.
However, some factors influence the framework to choose from. These include company size, your team structure, resources available, the stakeholders’ needs, and the size or structure of your product portfolio.
Therefore, there is no “best” framework but you can only choose what best fits your team and project work.
It is also good to experiment with different frameworks before selecting one that works well for you. This is because what works for one team may not work for another.