Agility and Scrum

Definition of Agility

“An agile method is an iterative and incremental

approach, which is carried out in a collaborative spirit with just the right amount of formalism

.

It generates a high-quality product while taking into account changing customer needs.”

“Project Management: Towards Agile Methods”, V. Rota, 2007

History of Agility

Origin:

In the 1950s, Toyota revolutionized automotive production by introducing the Toyota Production System (TPS). The core ideas of TPS included zero waste, total quality, and flexibility to respond quickly to changes.

1990s: Agile Manifesto:

In the 1990s, software development professionals learned from TPS and quality methods to apply them in the software field. This led to the drafting of the Agile Manifesto in 2001 by a group of visionary software developers, including Kent Beck and Martin Fowler.

Agile Principles:

The Agile Manifesto defines four core values and 12 principles that emphasize flexibility, collaboration, continuous delivery of functional products, and responsiveness to change.

Worldwide distribution:

Since the publication of the Agile Manifesto, agile principles have gained global recognition and have been applied beyond software development, touching various fields such as project management, marketing, and even business organization.

Today:

Today, Agility has become a philosophy adopted by many organizations looking to be more responsive, flexible, and customer-oriented. Agile methods like Scrum, Kanban, and Extreme Programming (XP) continue to evolve to meet the changing needs of modern businesses. Agility is no longer simply a development approach, but an organizational culture that fosters adaptability and continuous innovation.

The 4 values of agility

Agile methods are guided by four core values, as defined in the Agile Manifesto. Compared to traditional methods, these values emphasize some key principles:

  1. People and Interactions rather than Processes and Tools:
    • Agile: Agile methods place a high value on collaboration between team members and open communication. They recognize that the success of the project depends on the individuals involved.
    • Classic: Traditional methods can sometimes place more emphasis on formal processes and tools, risking neglecting human interaction.
  2. Operational software rather than Exhaustive documentation:
    • Agile: Agility fosters the continuous creation of functional operational software, considering that documentation must be concise and focused on the essentials.
    • Classic: Traditional methods may place more emphasis on comprehensive documentation, sometimes at the expense of operational development.
  3. Collaboration with the client rather than Contract Negotiation:
    • Agile: Agile methods encourage ongoing collaboration with the client throughout the project, prioritizing adjustments along the way rather than strict compliance with upfront contracts
    • Classic: Traditional methods may be more inclined to set up rigid contracts from the start, limiting flexibility in the face of change.
  4. Responding to Change Rather Than Tracking a Plan:
  • Agile: Agility recognizes the importance of adapting quickly to changing needs, prioritizing flexibility over strict adherence to initially established plans.
  • Classic: Conventional methods can sometimes focus more on strictly following a pre-established plan, which can make it difficult to adapt to changes.

These four values form the core of the agile philosophy and guide decision-making in software and project development.

The 12 Principles of Agility

The principles go into more detail about each value. They provide specific guidelines on how to implement the values.

The principles are more detailed and help to understand how to apply values in real-world contexts.

For example, the principle “Frequently deliver operational software with a preference for the shortest lead times” supports the value “Operational software rather than exhaustive documentation”.

The graphic representation above shows a pyramid where the 12 agile principles are grouped together, extending from the bottom with managerial support to the top, thus symbolizing the ultimate goal of any project: customer satisfaction.

Managerial Support

  • 5-Building projects around motivated people: Recognize and promote the motivation of individuals as a key driver of the success of an agile project.
  • 8-Maintaining a sustainable pace of development: Avoid work overload by maintaining a pace of development that can be maintained over the long term.
  • 11-Self-organization of teams: Encourage teams to self-organize, make decisions, and solve problems autonomously.
  • 12-Continuous reflection and adjustments at regular intervals: Demonstrate flexibility and continuous improvement by regularly reflecting on team performance and making adjustments as needed.

Technical Approach

  • 4-Close collaboration between users and developers throughout the project: Encourage ongoing communication and active collaboration between those who use the product and those who develop it. Sometimes the teams are distant and it will be necessary to set up the necessary means to ensure this proximity.
  • 6-Effective communication through face-to-face dialogue: Encourage direct exchanges for clearer communication and avoid misunderstandings.
  • 9-Promoting agility through technical excellence and good design : Emphasize strong technical practices to ensure a stable and scalable foundation for the software.

Product

  • 3-Frequent delivery of operational software with short cycles: Favor short development periods to provide regular functional versions of the software.
  • 7-Measurement of progress mainly by operational software: The status of a project should be assessed based on the operational functionality of the software rather than documentation or plans
  • 10-Simplicity as an essential element: Promote simplicity in design and execution, eliminating any non-essential elements.

Purpose

  • 1-Customer satisfaction through continuous delivery of useful software: Prioritize customer satisfaction by delivering operational features on a regular basis, emphasizing continuous value creation
  • 2-Positive reception of changes in needs, even late in the project: Flexibility in the face of change is key. Teams must be able to adapt quickly to changing customer requirements.

The Most Popular Agile Methods

There are several popular agile methods used in software development and beyond. Here are some of the most common agile methods:

  1. Scrum:
    • Scrum is one of the most popular agile methods. It is based on iterations of work called “sprints” and includes key roles such as the Scrum Master, the Product Owner, and the development team.
  2. Kanban:
    • Kanban focuses on visual workflow management. It uses tables to represent tasks to be done, in progress, and completed. Kanban emphasizes flexibility and continuous workflow management.
  3. Extreme Programming (XP):
    • XP is focused on continuous improvement in quality and productivity. It includes practices such as pair programming, automated testing, and short development cycles.
  4. Lean Software Development:
    • Inspired by Toyota’s production system, Lean Software Development focuses on eliminating waste, continuous delivery of value, and continuous improvement.
  5. Crystal:
    • Crystal is a family of agile methods, each tailored to specific team sizes and project types. Each variant of Crystal emphasizes particular aspects of flexibility and adaptability.
  6. Feature-Driven Development (FDD):
    • FDD focuses on feature-based design and iterative feature building. It is particularly suitable for large-scale projects.
  7. Dynamic Systems Development Method (DSDM):
    • DSDM is focused on delivering features quickly while maintaining quality. It emphasizes collaboration between team members and stakeholders.
  8. Adaptive Software Development (ASD):
    • ASD aims to be flexible and adapt quickly to changes. It emphasizes continuous communication, collaboration, and experimentation.

These agile methods can be adapted to the specific needs of a team or project. It’s also common to see organizations combining different practices to create their own agile approach, often referred to as the “hybrid method”

The Fundamentals of Scrum

The Scrum Life Cycle

Scrum is the most popular agile method.

It is an agile project management framework that emphasizes flexibility, collaboration , and continuous delivery of functional products. It is widely used in software development, but can also be applied to other fields. Here’s a more detailed explanation:

  1. Iterative and Incremental
    • Scrum organizes work into iterative cycles called “sprints,” typically lasting two to four weeks. At the end of each sprint, a potentially deliverable version of the product is presented.
  2. Main Roles:
    • Scrum Master:
      • Responsible for ensuring that Scrum is understood and implemented.
      • Ensures that the Scrum Team adheres to Scrum theory, practices, and rules.
      • Serving Leader serving the Scrum team.
    • Product Owner:
      • Responsible for maximizing the value of the product and the work of the Development Team.
      • Manages the Product Backlog and ensures that it is understood.
      • Its decisions are visible in the content and
        Product Backlog scheduling and must be
        respected by all stakeholders.
    • Development Team:
      • Made up of 3 to 9 professionals who deliver at each Sprint
        A “completed” and potentially deliverable increment of the product
      • Self-organized
        • No one (not even the Scrum Master) tells the Development Team how to turn Product Backlog items into potentially deliverable feature increments.
      • Multidisciplinary
        • with all the skills needed to create a product increment
      • Composed of Developers who contribute to the production of the product
        • Scrum does not recognize teams within the Development Team regardless of the specific areas that need to be covered, such as test execution or functional analysis
      • Responsible as a whole
        • Even though individual members of the Development Team may have specific skills and interests
  3. Scrum Artifacts:
    • Product Backlog: A prioritized list of features, tasks, and enhancements to the product.
    • Sprint Backlog: Product backlog items selected to be addressed in the current sprint.
    • Increment: The version of the product resulting from the work done during a sprint.
  4. Scrum Ceremonies:
    • Sprint Planning Meeting: The development team plans the work to be done during the sprint.
    • Daily Scrum : Short daily meeting to synchronize team members on work in progress.
    • Sprint Reviews : Presentation of what was accomplished during the sprint.
    • Retrospective Meetings : Evaluation of what worked well and opportunities for improvement.
  5. Adaptability:
    • Scrum incorporates principles that promote adaptability to change. Adjustments can be made at the end of each sprint based on user feedback and project developments.

In summary, Scrum is an agile framework that offers a structured and iterative approach to project management, with a focus on collaboration, transparency, and adaptability.

The Scrum Team

The agile contract: between the fixed price and the Time&Material

Commitment of means or results?

  • Contractualization

    is one of the obstacles to the deployment of Agile methods. Particularly in France, where the culture of the classic package and the MOA/MOE divide is heavily anchored.

  • When the client wants a commitment to results, we offer a barter mechanism:
    • The sum of the Story Points in the initial Product Backlog is used to estimate the initial budget of the project.
    • The highest priority User Stories will be developed within the remaining budget in Story Points.
  • We propose an
    agile scoping
    step to define and commit to an MVP (Minimum Viable Product).
  • Another type of contractualization is possible between the commitment of resources and the commitment of results.

Agile Methods Performance Indicators

 

Agile KPIsare a crucial element in project monitoring. Among the most important are:

 

Predictability :

  • Number of features demonstrated at the end of the iteration compared to planned features.

Productivity:

  • Number of story points that have been implemented in a sprint relative to the size of the team.

Functional quality:

  • Number of anomalies discovered after the delivery of the product increment.

Technical Quality:

  • Code coverage by unit testing and cyclomatic complexity.

Team involvement:

  • At each retrospective, each member of the claimant’s team gives their opinion on their proposal (on a scale of 1 to 5) to recommend this team and project to one of their colleagues.

Customer Satisfaction:

  • At each sprint demonstration, each member of the client team gives their opinion on their proposal (on a scale of 1 to 5) to recommend this team and this project to one of their colleagues.

 

Concrete example of the application of the agile approach to a web project

Let’s imagine a web development project for the creation of an e-commerce platform. The agile approach would be applied in the following ways:

  • Iterative Planning: Instead of defining all the details of the project from the start, the team starts with an initial planning based on the outline of the product. Then, it divides the project into two-week iterations (Sprints), identifying the priority features for each iteration.
  • Customer Involvement: The client is involved from the beginning of the project and continues to play an active role throughout the process. Customer feedback is solicited at the end of each iteration, allowing for quick adjustments based on changing needs.
  • Iterative development: The team starts development with the most crucial features for the product, ensuring that a working version can be delivered quickly. Less critical features are added gradually over the course of iterations.
  • Adaptability to change: If the market changes or new needs emerge, the team can adjust the project roadmap. For example, if the customer wants to add mobile payment functionality, this can be incorporated into a future iteration.
  • Ongoing Communication: The team holds daily quick meetings (stand-up) to discuss progress and roadblocks. This promotes transparent communication, allowing each team member to stay informed of progress and any issues.
  • Continuous testing:
    Testing
    is integrated throughout the development process. Each feature is tested as it is built, ensuring the quality of the final product. Adjustments can be made immediately if problems are identified.
  • Regular Value Delivery: At the end of each iteration, a working version of the product is delivered. This allows the client to benefit from certain features quickly, rather than waiting for the project to be fully completed.

By applying these agile principles to this web project, the team can flexibly respond to the client’s changing needs, ensuring the creation of a more suitable and high-quality end product.

When to avoid agility?

While agility is an effective project management approach in many situations, there are
contexts where it may not be the best solution
. Here are some situations in which agility may not be recommended:

  1. Stability of Needs: When the needs of the project are well-defined, stable, and unlikely to change, the traditional waterfall methodology may be more appropriate. Agile excels at adapting to change, but if these changes are rare, it can make the agile process excessively flexible.
  2. Simple & Short Projects: For simple, short-term projects, agility can sometimes introduce administrative overhead. The agile methodology is often more beneficial for complex and long-term projects.
  3. Lack of Team Commitment: If the project team doesn’t understand or buy into agile principles, implementing agile can be difficult and less effective. A strong understanding and commitment from the team is essential for the success of the agile approach.
  4. Strict budget constraints: Agility emphasizes the continuous delivery of high-value features, which can make cost management more complex. While a strict and immutable budget is imperative, other methodologies might be more appropriate.
  5. Regulated Environment: In heavily regulated industries where rigid processes and comprehensive documentation are required for compliance reasons, agility may require significant adaptations. Methodologies like waterfall may be better suited in such environments.
  6. Large Project Size: For very large projects, agility can become difficult to manage. Coordinating multiple agile teams can be complex and require specific management skills.
  7. Customer with Fixed Expectations: If the customer has strict and unchanging expectations for the final product, and is reluctant to make frequent adjustments, the agile approach may not be the most appropriate.

It is important to note that these points do not mean that agility is inapplicable in these situations, but rather that it may require adjustments or that a different approach may be more suitable. The choice of methodology always depends on the specifics of the project, the company and the team.

Succeed in a project regardless of the methodology

laugh

You succeed in a project when you have made the right product, the one that users really expect, at the right time and at the best cost.

A successful project is one that puts a smile on everyone’s face.

To users, limited partners, sponsors and even shareholders.

As well as to the project team who have a smile on their face because they are fulfilled and proud of their work

0 Comments