- Views: 11
- Report Article
- Articles
- Computers
- Programming
Choosing the Right Agile Approach for Your Team
Posted: Nov 18, 2018
So, you’ve finally decided that the Waterfall model is too rigid and hermetic with its fixed development stages which leave little room for changes and tweaking later in the project.
Good for you!
As it consists of 4 monolithic, linearly sequenced phases – analysis, design, code, and test, this approach can hurt the final product in a number of ways, one of the worst is skipping the testing phase if the project runs out of money, while the fact that there’s no working software until the final stages of the project prevents you from establishing where you stand and how long it will take you to complete it.
Enter the Agile approach.
Its structure turns all the above-mentioned development phases into a continuous flow of activities, meaning that you can start testing from the first day. In other words, this method allows early delivery of working software through iterative and incremental development.
According to the Agile Manifesto, individuals and interactions among them are more important than tools and processes, producing working software as early as possible is a higher priority than extensive product documentation, customer collaboration is valued over contract negotiation, and responding to change plays a more important role than following a plan.
But as the Agile approach is just an umbrella term for a couple different methodologies which share a similar philosophy and terminology, knowing which one to pick can be tricky.
1. Scrum
Due to its simplicity and productivity, this approach has become very popular (the majority of agile tools are, in fact, Scrum tools) in the software development industry. There are three prominent roles in a Scrum management team – the Product Owner, the Development Team, and the Scrum Master.
The Product Owner is the representative of stakeholders, that is, the customer, and they’re responsible for managing the product backlog, that is, the product to-do list. The Development Team is a self-organized group of experts such as designers, developers, and programmers, responsible for creating the increment, or a working product functionality over a period of 30 days and less called the Sprint. The Scrum Master is a facilitator of this process who helps the Dev Team by making sure that the team is on the same page about what the goal is, providing all the necessary resources, and preventing any distractions.
The whole point of this approach is to deliver a potentially shippable product increment by the end of each sprint. The Dev Team has 15-minute daily meetings to overview what has been done and to plan the activities for that day. As for the customer involvement, it’s usually on a monthly basis, or at the end of each sprint. The key metric is velocity. This approach is great for large projects with a number of to-do lists.
2. Kanban
This approach was introduced by Toyota back in the 1950s in order to optimize the flow of parts on their production lines and eliminate bottlenecks. As with Scrum, the idea is to help teams communicate better and work more effectively.
This method heavily relies on the use of Kanban boards, highly practical tools which allow teams to visualize the workflow and see the progress and spot potential issues. A typical Kanban board has a three-step organization – to do, in progress, and done. There are no distinguished team roles, as well as time-boxes or iterations.
The point is to prioritize and work on the items placed at the top of the backlog. Kanban tries to release new functionalities to customers on a weekly or even daily basis. The key metric is cycle time. Projects without big backlogs of features can highly benefit from this approach as it allows focusing on small bits of work as they come along.
3. Extreme Programming
Also known as XP, this approach focuses on an active collaboration between the customer and the development team. The key idea is to create high-quality, working software continuously and within short time intervals, usually every 1 to 3 weeks. XP includes constant planning, estimating, and testing.
The customer is supposed to provide the development team with a list of very detailed and prioritized requirements known as the “user story”, while the development team’s job is to translate these requirements into granular functionalities.
XP can be successful only if the whole team and all people who are involved in software creation have advanced extreme programming skills. This approach can be successfully implemented when priorities are frequently changed and when a high degree of flexibility is necessary.
4. Feature Driven Development
FDD is a five-step approach which revolves around creating an overall model, a stage followed by building a feature list, planning by feature, designing by feature, and building by feature.
Each step is carried out through two-week iterations, while the development of each feature consists of 6 short phases – domain walkthrough, design, design inspection, code, code inspection, and promote to build. FDD allows several teams to work simultaneously, which means that it’s excellent for larger projects.
As a result of such a meticulous approach, the final product is of superb quality. Unlike other methodologies, Feature Driven Development offers a detailed insight into quality metrics right from the start. FDD allows precise and accurate progress tracking, and it’s great for organizing work into stages that can be managed more easily.
5. Lean Development
As its name suggests, this agile approach has the purpose of delivering value to the customer, improving the product throughout the process, and eliminating waste as much as possible. In other words, Lean Development tries to make sure that the final decision can be made as late as possible in the process without affecting the efficiency.
This means that only valuable features can make it to the final cut so that the development team can focus on fine-tuning them and delivering them in small batches. Subsequently, a great deal of waste, including features rarely used by customers, excessive paperwork, and switching people between tasks, is minimized.
Lean Development is a holistic approach, focused on the bigger picture, and one of its highest priorities is project ROI. It can be best used for smaller projects which are completed within shorter timeframes.
In order to unleash the full potential of Agile software development, make sure to choose the right approach which is suitable for your team and the size of your project.
Jug is an experienced blogger and marketer. He currently works at VivifyScrum.