Agile – SCRUM methodology
Agile development or adaptive development methods are designed for people who are focused on achieving customer satisfaction through the development of an entirely functional software application throughout its production process.
Principle and different stages
The SCRUM methodology relies on the incremental development of a software application while maintaining a completely transparent list of upgrade or correction demands to be implemented (backlog). It involves frequent deliveries, usually every four weeks, and the client receives a perfectly operational application that includes more and more features every time. This is why, the method relies on iterative developments at a constant rhythm of 2-4 weeks. Upgrades can therefore be more easily integrated than when using a V-cycle.
This method requires four types of meetings :
- Daily meetings: the entire team meets for approximately 15 minutes every day in order to answer the following three questions, usually while standing: what did I do yesterday? What am I going to do today? Is there a cumbersome impediment today?
- Planning meetings: the entire team gathers to decide on the features that will make up the following sprint
- Work review meetings: during this meeting, every member presents what he has done during the sprint. They organize a demonstration of the new features or a presentation of the architecture. This is an informal meeting lasting for approximately 2 hours which is attended by the entire team.
- Retrospective meetings: at the end of each sprint, the team analyzes both successful and unsuccessful elements of their activity. During this meeting lasting between 15 and 30 minutes where everyone is invited and speaks on their own behalf, a vote of confidence is organized in order to decide on the improvements to be made.
The advantage of this method consists in reducing the documentation to the minimum in order to gain in productivity. The idea is to write only the minimum documentation which allows to save the history of the decisions taken on the project and to easily perform interventions on the software when it goes into the maintenance phase.
The SCRUM methodology involves the following three main players :
- Product owner: In most projects, the product owner is the leader of the client's project team. He is the one who will define and prioritize the product features and choose the date and content of each sprint based on values (workloads) that the team communicates to him.
- ScrumMaster: He is a genuine facilitator on the project as he makes sure that everyone works at their full potential by eliminating impediments and protecting the team from exterior interferences. Moreover, he pays particular attention to the respect of the different SCRUM phases.
- Team: a team is typically made up of 4-10 people and groups together all the IT specialists who are necessary on a project, i.e. an architect, a designer, a developer, a tester etc. The team is self-organizing and remains unchanged during an entire sprint.
Scrum differs from other development methods through its advantages which turn it into a pragmatic response to product owners' current needs :
- Iterative and incremental method: this allows to avoid the "tunnel effect", i.e. the fact of seeing the result only at the final delivery, and nothing or almost nothing during the entire development phase, which is so frequent with V-cycle developments.
- Maximum adaptability for product and application development: the sequential composition of the sprint content allows to add a modification or a feature which was not initially planned. This is precisely what renders this method "agile".
- Participatory method: every team member is asked to express his opinions and can contribute to all the decisions taken on the project. He is therefore more involved and motivated.
- Enhancing communication: by working in the same development room or being connected through different communication means, the team can easily communicate and exchange opinions on the impediments in order to eliminate them as early as possible.
- Maximizing cooperation: daily communication between the client and the Pentalog team enables them to collaborate more closely.
- Increasing productivity: as it removes certain "constraints" of the classical methods, such as documentation or exaggerated formalization, SCRUM allows to increase team productivity. By adding to this the qualification of each module which allows to determine an estimation, everyone can compare their performance to the average team productivity.
Risks and solutions
The SCRUM methodology does not offer a universal answer to all the problems that are inherent to software development. Teams need to pay attention to the risks below, which, nevertheless, offer a systematic answer based on extrapolating the method :
- Team size: team size is typically limited to 7 or 10 people and can become an impediment if it exceeds these recommendations. In the latter case, the organization of meetings becomes impossible and the very foundations of the method are affected. The solution is to set up a Scrum of Scrums. This consists in dividing the project into teams of appropriate sizes and adding an instance of a higher level which groups together the ScrumMasters of each Scrum.
- Multiple requests: Requests may be transmitted through several channels on a project and can sometimes be difficult to manage due to their contradictory aspect. These contradictions can slow down the delivery validation process. In order to solve this problem, it is vital to use a single request management tool, which is a standard option with Pentalog projects.
- Development quality: The more the number of teams increases, the more difficult it becomes to deal with quality. This rule is all the more true when the project is distributed among several centers. The main risks are related to code quality and the number of bugs identified during integration. This is why it is important to have a rigorous quality policy and a project quality plan which precisely defines the rules of the project. Frequent code audits and the implementation of indicators that measure the developers' performance allow to minimize this risk.
Who is this type of organization aimed at ?
This type of organization can be used with most projects. However, it is particularly well adapted to projects which do not have a strict scope and which the client requires to be visible and to have a follow-up. In other words, he expects the provider to be involved, which is very important in the development cycle.
The client's availability is a vital criterion when choosing this method of development. In fact, we estimate an FTE of almost 1 during the time that the product owner needs to meet the requirements of this method: transferring some of the project manager's actions to the product owner using a classical method (gap between the team and the need).