18 September 2019
A guide to Agile project management types
Agile strategy is often a fantastic method for managing projects, but it gives the most benefits when fully understood. It’s important to examine not only the advantages but also the potential problems that can arise when working in an agile way.
What to expect with Agile as your primary project management method?
The major advantage of the Agile approach is its flexibility. Changes due to the needs of the client or customer and unforeseen events are taken into account, and the project team can react quickly.
Another advantage is the frequent collaboration and communication with the client, as well as their strong involvement in the project.Thanks to this, a relationship of trust is built between the client and the project team.
The client also has better visibility of the progress of the project, so they can adjust it according to need. Quality control is a permanent part of the method. As for the project team, it can respond quickly to customer requests.
Finally, you better control the costs of the project because at the end of each step, you know the budget already spent and how much is remaining. You can decide to continue, or revise or stop the project if funds are insufficient.
What kind of issues can you face when choosing Agile?
Since the emphasis is on spoken communication, the Agile method doesn’t require very much documentation, which in some circumstances can be problematic, like if there is a change in the team.
The client must be available and interested in the project in order to ensure that it meets their needs perfectly. Not all clients have the time or the desire to be fully involved in the realization of a project.
The Agile approach might not be suitable for companies with a very strong hierarchical structure because of its collaborative spirit.
This methodology allows for good control of costs, but it makes it very difficult to determine a budget for the entire project. Flexibility has a cost that sometimes the client isn’t willing to pay.
Ok, your organization has decided to adopt an agile development for their project management! You still need to choose the most suitable methodology for the project at hand. There are many agile methods out there, and it can be very confusing to choose one. You may have heard of some (scrum, anyone?), but there are many more methods, each with their own benefits. Use this run-down of the most popular agile methods in practice today as a guide.
The most popular agile methods:
Scrum is one of the most well-known methods in agile frameworks. The Scrum agile method is specially designed for IT project management, and gets its name from the world of rugby, representing the closeness and singular focus of a group. The principle of Scrum is to be able to modify the direction taken by the project as it progresses.
The scrum is an essential phase in rugby just as it is in project management. If the conditions for success are not met, then the project must be reoriented and started on a better basis. The customer is closely involved, thanks to the regular delivery of operational prototypes which validate developments. This dynamic management makes it possible to ensure that the expressed need directly corresponds to the delivered product, and to adjust future developments as needed.
Kanban is one of the more well-known methods, and the name is a Japanese term that means "signboard". It’s an Agile Manifesto methodology that was formalized in 2010 by David Anderson, although it was developed by Taiichi Ohno, an engineer at Toyota, as scheduling system for just-in-time manufacturing. Kanban is based on the principle of limiting the number of concurrent tasks or work in progress (WIP). Kanban's goal is to avoid waste by ensuring continuous improvement of the process. The team defines the WIP limits for each step of the Kanban process. The workflow is visually controlled, and allows the team to suspend the process to handle obstacles.
There are 4 phases in the Kanban approach:
- Design phase
- Implementation phase: In this phase, the team applies the practices of the Kanban approach. They use its tools to identify the existing process, as well as the definition of the work elements and the implementation of the rules of the system.
- Study phase: Together, the team and the designer study the reaction of the system to the rules established during the first design phase.
Improvement phase: Depending on the conclusions of the study phase, the team adjusts the system, stabilizes the process, reorganises the elements and sets the rules.
Extreme Programming (XP)
Extreme Programming, or XP, is an agile project management method that is particularly well suited to IT development projects. It was designed by Kent Beck to accelerate developments while working for Chrysler. The idea came to him when he had to intervene on a payroll software written in Smalltalk language, having accumulated a considerable technical debt, making it particularly complex to maintain and to evolve.
The fundamental principle of the XP method is to have everyone implied in the project collaborate closely, and to opt for very short developmental iterations. The task planning remains very flexible, and the expense estimation is simplified by very short-term projections. This way, what the customer expects being in alignment with the achievements delivered is nearly guaranteed. The functionalities are delivered regularly in the short iterations, in order to be tested and validated through operational prototypes.
With Extreme Programming it’s recommended that developers work in pairs, which facilitates the production of a simple, easily readable and maintainable code.
Feature Driven Development (FDD)
Feature Driven Development, also called Functional Driven Development, FDD is a project management method based on risk management. Developments are organized into short iterations around user-testable features. This means the user is involved in the development, and can follow the progress of the project and the validation of the features. No programming method is recommended, it is really the feature that is put forward.
A project managed by FDD is divided into several major stages. The first is the constitution of a general model of the product, which will define the overall scope. Second is compiling a complete list of features to achieve. It’s crucial that during this stage, the client is involved as much as possible. The features are grouped according to their common characteristics and prioritized. The last two steps will come in the form of iterations, and deal with the technical design of the features, and then their development.
The FDD method gives greater importance to the design phase, even if that means beginning implementation more slowly, in order to have a more solid model.
Lean Software Development
Lean Software Development is based on seven key principles. These principles aim to:
- Eliminate waste: avoid partial finishing, useless processes, unnecessary functionalities, modifications to the team, and delays.
- Promote learning: grow the number of learning resources and synchronize of teams.
- Postpone decisions: hold off on any decisions until the last reasonable moment. This avoids lengthy discussions leading to loss of time and irrevocable decisions.
- Deliver quickly: produce fast and regular deliveries, enabling fast customer feedback.
- Empower the team: promote autonomy and team leadership, assume that the stakeholders know what to do and how, and facilitate the development of expertise.
- Build quality: quality is placed at the heart of the project, starting from conception through completion.
- Optimize the system as a whole: implementation of complete performance measures in order to have a constant global vision of the product, and manage the different interactions and dependencies.
With the Lean method, quality is really at the heart of project management, optimizing all the processes of learning, decision-making, delivery and performance measurement.
Agile Unified Process (AUP) and Rational Unified Process (RUP)
The Rational Unified Process (RUP) method is a mix of classic and agile project management practices. Developments are iterative and incremental. Each iteration follows a cycle comprising four phases. The developments are guided by use cases, starting with the more generic features and then narrowing down to the specific features.
Agile Unified Process is a simplified version of the RUP. It is a method of developing business applications using the agile techniques of TDD (Test Driven Development), MDD (Model Driven Development) and the management of the software.
The AUP method is divided into four phases:
- Launch: identify of the scope of the project and define the potential architecture(s) for the system, stakeholder involvement and budgeting.
- Design: Define the system architecture and demonstrate its relevance.
- Realization: development of the software or product during an incremental process based on the priority of the functionalities.
- Delivery: validation and deployment of the system in production.
The Crystal Clear method is particularly suitable for small development teams. Ideally, the team consists of an architect and two to six or seven developers, located close to each other, so as to facilitate communication in a quiet room. Whiteboards are generally used for support so that everyone has quick access to all information. The pace of development and delivery are fast (every two weeks or once a month) so that users testing can happen quickly.
Throughout the entire development process, the team constantly questions itself in order to continually improve the way it works.
Dynamic Systems Development Method (DSDM)
The Dynamic Systems Development method is based on nine main principles: active user participation, autonomy and power of the project team, transparency and frequency of developments, correlation to the business need, iterative and incremental development, all changes must be able to be reversed, high quality focus, automated and continuous testing and finally cooperation between all stakeholders.
This method involves routine analysis. The project starts with a feasibility study to decide whether it is realistic to do it or not. A report is written, and eventually a prototype is created to demonstrate the feasibility of the application. If you decide to continue, a functional analysis is performed and the specifications are written. From that moment, iterations of technical design and development are put in place, and finally, the application is delivered in production.
Adaptive Software Development (ASD)
Adaptive Software Development is a method of Rapid Application Development. The principle is to automate and industrialize as many processes as possible. Modeling tools are used, and a software factory is set up in order to automatically generate the maximum of computer code. A software engineering workshop then allows developers to modify the application generated. Finally, a delivery factory automates all deployment processes.
The ASD method is independent of any methodology or programming language.
Behavior Driven Development (BDD)
In the Behavior Driven Development method, natural language is the focus. Rather than describing the technical solutions to implement, the objectives of the features are described by the users. This also means that the users are particularly involved in the manufacturing process. The target behavior of the application is described through examples, allowing developers to better understand the objectives. The expressions "given", "when", "then" and "and" are used in the described scenarios, which are also used to create series of non-regression tests. The scenarios are written collectively with the customer, the developers, and all teams involved in the process.
Domain Driven Design (DDD)
Domain Driven Design is a technique for designing computer applications. The design is centered on the business domain and not on the technical aspects. It allows technical and functional teams to communicate together to obtain a common model of the application, which is understandable by all. Developers gain a better understanding of the functions and the specific vocabulary, and the business team has a better view of the technical constraints.
When using this method, there is better communication between the various stakeholders. They use a modular design that facilitates the long term maintainability of the application, and the reusability of its components.
Test Driven Development (TDD)
Test Driven Development is a development technique that combines writing unit testing, programming, and code rework. Unit tests are written before the code, and each test describes an element of the feature. The developer writes the minimum possible code for the test to pass, so that if it fails, the causes for failure are predictable. As the project progresses, the source code must be simplified as much as possible, and continue to pass the tests. Tests accumulate during development and run automatically on a very regular basis.
TDD is always associated with unit testing automation tools related to the programming language used.
Disciplined Agile Delivery (DAD)
Disciplined Agile Delivery is a method of decision support and industrialization that aims to simplify the integration of processes related to incremental and iterative, agile project management. It’s particularly effectively in combination with a development method such as Scrum or Lean. It is a hybrid method designed to facilitate the adoption of agility within a large organization. All aspects of integrating agility into software development are supported, taking into account the overall context of the project--and especially the business. When an agile method is going to be used in a project involving a large team, DAD can help in facilitating the adoption of different processes.
Enterprise Unified Process (EUP)
Enterprise Unified Process is an extension of industrialization methods like DAD, or as derivatives of Unified Process (UP) or agile development methods like Scrum. EUP brings two more phases at the end of the cycles of the other agile methods:
- Put into production: the phase of maintenance in operational conditions of deployed systems.
- Production withdrawal: the process of withdrawal of production from deployed systems.
The phase of withdrawal of production can be implemented for several reasons, such as during the complete replacement of the system, at the end of the support of the current version, in a redundancy of the system or with the obsolescence of the application.