How to Succeed in delivering Software Projects using “Agile”

Gary Seymour
18 min readJan 30, 2023

--

In this article we are going to relook at what steps and principles are key to make “Agile’’ delivery successful. We will explore the concepts behind the Agile approach, the risks/issues associated with using it, and how you can measure and improve your chances of success through KPIs and using maturity models to help prioritise change.

And, just to help remind us :

“Agile” is a set of practices that enable teams to rapidly build or deliver solutions that meet customer needs.

The History

The Agile Manifesto sets out the core values and principles that guide the development of software and other products. It was first formulated in 2001 by a group of 17 software developers who wanted to create an alternative approach to traditional project management. The Agile Manifesto has since been adopted by numerous organisations and teams around the world as an effective way to organise and manage software development projects.

Agile software development however goes way back before this. Over the previous three decades in software development practice, teams were being driven to deliver faster and faster deliver cycles, with it seems less and less success.

In the early 1990s, as PC computing became widespread, software development faced real problems. Experience was showing that there was a difference of up to three times between the time estimated and the actual delivery/operational time of a new solution or product. This was compounded by the fact that in that time between conception and delivery, organisations could have changed significantly — meaning that numerous systems would end up being cancelled part way through, or those that did complete would not meet all of the business needs. Complex environments ( like aerospace and defence) could see delays of up to 20 times the original estimate before the complex system was available for actual use.

With product development that included a software engineering component ( eg phone switches, vehicles, aircraft ), software would often be an afterthought,often as a result that it would not start until the product/service design was matured.

As a collaborative effort among 17 leading software developers, they proposed a response to the traditional project management practices that were often seen as rigid and inefficient.

It was formalised in 2001 with the release of the Agile Manifesto, which outlined the core values and principles at the heart of Agile development.

Their goal was to find a rapid way to get working software into the hands of end users as quickly as possible. The approach would deliver key benefits;-

  • Enabled users to get some of the business benefits of the new software quickly .
  • Enabled the software squad to get rapid feedback on the software’s direction

The Agile Manifesto

At its core, the Agile Manifesto consists of four key values:

  • individuals and interactions over processes and tools;
  • working software over comprehensive documentation;
  • customer collaboration over contract negotiation; and
  • responding to change over following a plan.

These core values are intended to promote a more iterative, adaptive approach to development that emphasises collaboration, communication, flexibility, and customer satisfaction.

“Individuals and Interactions Over Processes and Tools” : highlights the importance of people in software development projects. Rather than relying on rigid processes or tools to dictate how a project should proceed, agile encourages collaboration between individuals in order to drive progress. This also means that agile teams should be self-organising, as opposed to relying on top-down control from managers or stakeholders.

“Working Software Over Comprehensive Documentation”. This emphasises the importance of actually delivering working software rather than spending too much time writing detailed specifications or documenting every feature before it is implemented. Instead, agile teams should focus on delivering working software quickly so that it can be tested and refined with feedback from customers or users.

“Customer Collaboration Over Contract Negotiation”. Highlights the importance of building strong relationships with customers or users throughout the development process. Agile teams should take an iterative approach to developing features so that they can get feedback from customers early and often throughout the process. This helps ensure that the final product meets the customer’s needs without having to go through lengthy contract negotiations after it is completed.

“Responding To Change Over Following A Plan”. Acknowledge that plans may have to change during a project due to changing customer requirements or unforeseen events. Agile teams should be flexible enough to adapt their plans quickly so they can continue making progress towards their goals despite unexpected changes in direction.

The Principles

In addition to these four core values, there are 12 principles behind The Agile Manifesto which further explain why these values are important for successful software development projects:

  1. The highest priority is to satisfy the customer through early and continuous delivery of valuable software.
  2. Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
  3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
  4. Business people and developers must work together daily throughout the project.
  5. Build projects around motivated individuals. Give them the environment and support they need and trust them to get the job done.
  6. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
  7. Working software is the primary measure of progress.
  8. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
  9. Continuous attention to technical excellence and good design enhances agility.
  10. Simplicity–the art of maximising the amount of work not done–is essential
  11. The best architectures, requirements, and designs emerge from self-organising teams
  12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behaviour accordingly

This approach provides guidance for agile teams on how they can successfully manage their projects while still providing high quality results in a timely manner. These values and principles can help delivery teams improve their efficiency while also ensuring better customer satisfaction with their products and services.

The Different Flavours of Agile

As discussed above, Agile Delivery is based on four core values: customer focus, collaboration, flexibility and continuous improvement. This structure has spun out a number of different approaches, that offer several different processes, each with their own merits: Scrum, Kanban, Extreme Programming (XP), Lean Software Development, Feature Driven Development (FDD) and Test Driven Development (TDD).

  1. Scrum is a popular Agile process that focuses on delivering working software quickly. It uses short sprints of two to four weeks in length to deliver small chunks of functionality at a time. Teams collaborate closely with customers throughout the sprints to ensure they are meeting their requirements.
  2. Kanban is also a popular Agile process that takes a more visual approach to project management. Teams use cards and boards to track progress on tasks as they move through each stage of the development process. Kanban emphasises continuous improvement by focusing on reducing bottlenecks and optimising workflow.
  3. Extreme Programming (XP) is an Agile method that focuses on improving quality through practices such as pair programming and test-driven development. Teams use pair programming to write code collaboratively, while test-driven development requires them to write tests for their code before writing the actual code itself.
  4. Lean Software Development is an Agile methodology that emphasises eliminating waste from the development process by removing unnecessary features or activities that do not add value for customers. Teams use this approach to create minimal viable products (MVPs) that can be quickly validated with customers before investing further resources into them.
  5. Feature Driven Development (FDD) is an Agile process that emphasises breaking down projects into smaller features that can be delivered incrementally over time. Teams use this approach to ensure they are only working on features that are essential for delivering value for customers.
  6. Test Driven Development (TDD) is an Agile process in which teams write tests before writing code so they can be sure it works properly before releasing it into production. This helps ensure high quality software while minimising bugs and other issues that may arise later in production environments.

Each of these approaches has its own strengths and weaknesses and should be evaluated on a case-by-case basis to determine which one best suits the project and organisation’s needs.

KPIs for Agile Delivery.

As organisations adopt agile development, they need to track the maturity of their agile process and delivery. Through key metrics, and how they change over time, we can evaluate the maturity of the delivery process. Some of these metrics are better aligned to some of the differing Agile Methodologies outlined above, but typically this is more as a result of the using automated tooling, making collection and reporting easier to implement.

When evaluating the maturity of an agile development process and delivery, it is important to consider key metrics that measure progress over time: Our list below provides a good overview of the efficiency and effectiveness of the delivery process, and to delivery leadership to understand the maturity of the implementation. The relevancy and focus (priority) of these metrics should always be considered in the context of the project, organisation and delivery model being supported.

  • Cycle Time: Cycle time measures how long it takes for a team to complete a task or feature from start to finish. This metric can be used to identify areas where teams can improve their speed of delivery and identify bottlenecks in the process.
  • Defect Rate: Defect rate measures the number of defects found in a product or service during production or testing. This metric can be used to identify areas where teams need more testing or quality assurance resources and processes for a better quality product.
  • Customer Satisfaction Score (CSAT) and Net Promoter Score (NPS): CSAT measures customer satisfaction with a product or service while NPS measures how likely customers are to recommend the product or service. These metrics are important for determining how satisfied customers are with the product or service being delivered.
  • Lead Time: Lead time measures how long it takes from when a customer requests a feature until it is delivered into production. This metric can be used to identify areas where teams need more resources or processes to improve speed of delivery.
  • Throughput Rate: Throughput rate measures how many features are completed per unit of time such as per quarter or per month. This metric can be used to measure how much work is being done over a given period of time which helps identify areas where teams can improve their efficiency in order to deliver more value faster.
  • Velocity: Velocity measures how much work is completed over a given period of time such as sprints or iterations which helps identify areas where teams need more resources or processes for improved speed of delivery.
  • Cumulative Flow Diagram (CFD): CFD provides a visual representation of workflows over time which helps identify bottlenecks in the process so that teams can focus on improving them for better speed of delivery.
  • Burn-Up/Burn-Down Charts: Burn up/burn down charts provide an overview of progress towards completing tasks over time which helps identify areas where teams need more resources or processes for improved speed of delivery.

While there are many benefits associated with measuring these key metrics for evaluating maturity in agile development process and delivery, there are some challenges associated with implementing these metrics within organisations:

Implementation Challenges

  • Lack Of Standardisation: Every team has different needs when it comes to measuring agility maturity so there may not be one size fits all when it comes to standardising these metrics across a programme.
  • Difficulty In Gathering Data: It may be difficult for teams to gather data needed in order to measure these key metrics if they don’t have automated tools in place that can capture this data automatically. Sources include version control systems, issue tracking systems, Agile tooling etc..
  • Cost Of Implementing Tools And Processes: Organisations may have difficulty implementing and maintaining tools and processes necessary for measuring these key metrics due to cost constraints associated with provisioning these tools or training the teams required to run the processes and tooling, to gather the necessary data for measuring these metrics correctly. Benefits Of Evaluating Maturity In Agile Development Process and Delivery

Despite some challenges associated with implementing the gathering of these metrics, there are several benefits associated with doing this:

Implementation Benefits

  • Improved Quality: By measuring key metrics such as defect rate, teams can identify areas where they need more testing or quality assurance resources so they can build higher quality products faster which leads to better customer satisfaction scores (CSAT) and net promoter scores (NPS).
  • Faster Delivery Times: By measuring cycle time, lead time, throughput rate, velocity etc., teams can identify areas where they need more resources or processes so they can deliver projects faster which leads to faster time-to-market which helps them stay competitive in their industry .
  • Increased Customer Satisfaction Scores (CSAT) And Net Promoter Scores (NPS): Measuring customer satisfaction scores (CSAT) and net promoter scores (NPS) helps teams to understand business satisfaction.
  • Increased Visibility Into Progress And Performance : By using cumulative flow diagram (CFD)and burn-up/burn-down charts, teams can gain visibility into their performance over time which helps them make decisions quickly based on accurate data rather than assumptions. This in due course leads to improved decision making capabilities across the whole delivery organisation.

Measuring key metrics such as cycle time , defect rate , customer satisfaction score(CSAT) and net promoter score(NPS), lead times , throughput rates , velocity , cumulative flow diagrams(CFD)and burn up/burn down charts will help delivery teams to evaluate their maturity and progress in Agile delivery. The benefits associated with doing this can far outweigh the costs, leading to improved quality, faster delivery times , increased customer satisfaction as well as increased visibility into progress and performance .

Some References that might be useful: a) Agile Metrics That Matter — Cycle Time, Defect Rate, Velocity & More. , b) What is Lead Time? Definition and Examples of Lead Time in Project , c) Management. Cumulative Flow Diagrams: The Basics & Beyond — Part 1 of 2 — Integrum Technologies Ltd., d) Burnup Charts | A Complete Guide To Tracking Progress And Forecasting Delivery

Agile Maturity Assessment

Agile maturity assessments help organisations to identify areas of improvement and create actionable plans for achieving greater agility. There is much debate, and opinion is divided, around whether these Agile Maturity Assessments help, or encourage the right behaviours. Senior management typically don’t have the time or understanding to be able to assimilate all the nuances of how their teams are performing (more interested in “Delivery”, “Cost” and “Benefit”). We find these assessments can be a useful tool to help communicate progress, to help focus attention, and where to prioritise efforts when performance or efficiency isn’t meeting the goals.

These steps below provide a simple outline on how to conduct a comprehensive assessment, that can be meaningful, and effective to all the stakeholders involved.

  1. Identify the key areas of focus for the assessment: Start by identifying the key areas you want to assess, such as agile processes, tools, culture, and organisational structure.
  2. Establish a baseline: Establish a baseline of the current state of your organisation’s agile maturity by collecting data from stakeholders, conducting interviews and surveys, and analysing existing documentation.
  3. Create an agile maturity model: Develop an agile maturity model that defines the levels of maturity from beginner to advanced and uses criteria to assess each level.
  4. Assess each area: Assess each area focusing on how well it meets the criteria for that level of maturity. Use a rating system (e.g., 1–5) to indicate how close it is to meeting that criteria.
  5. Analyse results: Analyse the results of the assessment across all areas and identify areas needing improvement or where there are gaps in implementation.
  6. Develop an action plan: Develop an action plan to address any issues identified in the assessment and define specific goals and objectives for improvement.
  7. Monitor progress: Monitor progress on a regular basis and adjust plans as needed to ensure continued progress towards your goal state of agility.

The Agile Maturity Assessment Model.

Agile Maturity Models (AMMs) are frameworks that provide organisations with a way to measure the maturity of their Agile development processes. The goal of these models is to help organisations identify areas where they can improve and optimise their Agile practices. By understanding and measuring the maturity of their Agile processes, organisations can better anticipate, plan, and execute projects.

There are a number of approaches to selecting and identifying the right Maturity Model to help reflect state and progress.

The most commonly used Agile Maturity Models are the Scaled Agile Framework (SAFe), Scrum Maturity Model (SMM), Agile Maturity Model (AMM), and Team Agility Maturity Model (TAMM). Each model has its own set of criteria, metrics, and tools to help organisations measure their Agile maturity.

  • The Scaled Agile Framework (SAFe) is a set of principles and practices that enable organisations to scale Agile development across multiple teams. SAFe focuses on three core aspects of Agile development: teams, value streams, and Lean-Agile leadership. SAFe provides guidance on how to organise teams, prioritise work, and develop a culture of continuous improvement.
  • The Scrum Maturity Model (SMM) is a framework that helps organisations measure and improve the maturity of their Scrum practices. SMM focuses on four key areas: team effectiveness, organisational culture, process implementation, and product management. The model also provides guidance on how to create an effective Scrum environment and optimise the way teams work together.
  • The Agile Maturity Model (AMM) is a comprehensive framework for assessing and improving Agile development processes. The model provides guidance on how to measure the agility of processes and improve them over time. The model also helps organisations develop and implement a strategy for scaling Agile practices across the organisation.
  • The Team Agility Maturity Model (TAMM) is a model designed to help teams assess and improve their Agile practices. The model focuses on five core areas: team culture, communication, collaboration, process, and automation. TAMM helps teams identify areas where they can improve their practices and develop an effective Agile strategy.

These Agile Maturity Models provide a way to measure and improve the Agile development processes. The most commonly used AMMs include the Scaled Agile Framework (SAFe), Scrum Maturity Model (SMM), Agile Maturity Model (AMM), and Team Agility Maturity Model (TAMM).

Developing a tailored Agile Maturity Model

Using the CMMI approach, developing a model based on the standard five levels of maturity approach, with each containing several criteria that teams should aim to achieve.

  1. Ad-hoc: This is the entry level. At this level, the organisation has just begun to adopt agile practices and is still trying to figure out how to best use them. “We lack consistency and need training to get everyone aligned.”
  2. Repeatable: At this level, the organisation has established a basic set of agile practices and has started to measure the success of their efforts. “Processes not fully defined. Basic level of agile adoption. Development and testing are not fully in sync yet”
  3. Defined: At this level, the organisation has a well-defined set of agile practices and processes that are consistently being used. “Our whole team is using well-defined agile processes, and we’re consistently delivering sprint after sprint.”
  4. Managed: At this level, the organisation has a mature set of agile practices that are being actively managed and monitored.”We’re measuring code quality and other key measures. Our focus is on engineering maturity.”
  5. Optimised: At this level, the organisation has optimised their agile practices and processes to the point where they are achieving maximum efficiency and effectiveness.”We develop on schedule and release on demand. We’ve invested in automation for continuous integration and deployment. Consistent delivery across teams. Self-organised, sustainable, continuous improvement based on KPIs.”

Organisations need to assess their agility in order to effectively manage their agile transformation. These Agile Maturity Models can provide an effective tool, providing a framework for assessing the organisation’s current state of agility, and assist in identifying areas where improvement should be focused. Additionally, they can provide additional guidance on how to improve the organisation’s agility. By using these models, organisations can ensure that their agile transformation is evolving.

The Top Issues that Affect Quality and Success of Agile Projects

Software Delivery is hard. “Agile” is no different, but via the adoption of these Values and Principles, it can improve success and quality by overcoming blockers, reducing friction and getting a better integration between “Need” and “Delivery”. Each of the approaches/’flavours’ outlined above introduce different challenges, but the list below provides a good checklist to consider.

This list is by no means exhaustive, but it provides a useful aid in understanding what to look for, and hence where and then how to improve. Some issues are not unique to the Agile process, but they are common themes that have plagued poorly performing delivery over many years.

  1. Poorly Defined Requirements: Poorly defined requirements can be a major stumbling block for Agile projects, as teams are unable to adapt quickly and accurately to changing requirements.
  2. Limited Resources: Agile projects require a certain amount of flexibility from the team in order to be successful, and limited resources can sometimes prevent teams from taking advantage of new opportunities that arise.
  3. Poor Communication: Poor communication can lead to misunderstandings and delays in decision making, which can be detrimental to the success of an Agile project.
  4. Lack of Experience: Agile methodology is a relatively new approach to development, and many teams may lack the experience to properly implement it.
  5. Lack of Visibility: Without proper visibility into the progress of a project, it is difficult to make decisions and plan for the future.
  6. Risk Management: Agile projects are inherently risky, and the lack of a solid risk management plan can lead to issues down the line.
  7. Poor Estimation: Poor estimation can lead to incorrect planning and scheduling, which can lead to missed deadlines and poor quality.
  8. Insufficient or Inappropriate Documentation: Lack of the right information can lead to confusion and miscommunication, which can lead to costly mistakes.
  9. Poor Quality Assurance: Quality assurance is an essential part of any development project, and lack of proper testing and quality control can lead to major issues later on.
  10. Lack of User Involvement: User involvement is a key part of Agile methodology, and if teams don’t involve users in the process, then they may miss out on important feedback and insights.
  11. Poor User Interface Design: Poor user interface design can lead to usability issues, which can be a major hindrance to user adoption.
  12. Poor Change Management: Agile projects involve a lot of changes, and if teams don’t have control over change and change management, then it can lead to major issues.

Top Activities to Improve Quality and Success in “Agile” Delivery

“Agile” is based on iterative and incremental development, which means that the project is broken down into smaller tasks and then completed in stages. Agile methodology focuses on collaboration, customer feedback, and frequent iterations to ensure a successful and high-quality outcome.

When using agile methodology for software development projects, there are a few best practices that can help ensure quality and success.

Planning and Prioritising: When using agile methodology, it is important to define the scope of the project, set goals, and create a timeline. This helps to ensure that everyone involved is on the same page and that no time is wasted. Additionally, it is important to prioritise tasks as they come up so that the team can focus on the most important tasks first.

Communication:Good communication is essential for any successful project, and this is especially true for agile methodology. The team should be open to communication and feedback from stakeholders, customers, managers, and developers. Additionally, regular meetings should be held to discuss progress, set goals, and discuss any issues that may arise.

Collaboration: Agile methodology encourages collaboration between team members, and this is important for a successful project. It is important that team members share their ideas, insights, and experiences so that the project can progress and move forward. Additionally, it is important to ensure that everyone is on the same page and that everyone is working together towards the same goal.

Testing: Testing is an important part of software development, and it is especially important when using agile methodology. Testing should be done throughout the development process so that any errors or bugs can be identified and fixed before they become an issue. Additionally, testing should be done on multiple devices and platforms to ensure that the project works as intended.

Documentation: The right information is essential for any software development project, and this is especially true when using agile methodology. (The right) Documentation should be done throughout the project to ensure that everyone involved is on the same page and that processes and procedures are clear. Documentation can be used to help identify any issues that may arise both during testing and later operations.

Continuous Improvement: Agile methodology encourages continuous improvement: teams should be open to feedback and willing to make changes as needed. This helps to ensure that the project is constantly improving and that it meets customer expectations. In addition, it is important to track progress and measure the success of the project to ensure that it is staying on track.

These best practices can help ensure that projects are completed on time and on budget, while also meeting customer expectations and delivering a high-quality product.

Conclusion

In order for teams to successfully implement the four principles of Agile Development they must follow certain steps:

  1. Define Goals: The first step is defining clear goals for the project so everyone understands what they are working towards (e.g., time frame, budget, features). This will help ensure everyone stays focused on achieving those goals throughout the project.
  2. Establish a Process: Teams should establish a process which outlines how tasks will be completed including who is responsible for each step (e.g., coding standards, testing protocols). This will help ensure that everyone follows the same process when completing tasks allowing them to work more efficiently together as a team.
  3. Create an Environment for Collaboration: Teams should create an environment which encourages collaboration between members (e.g., daily stand-ups, pair programming). This will help foster open communication between team members allowing them to effectively collaborate on tasks and share ideas which could lead to better solutions for the project overall.
  4. Plan Releases: Teams should plan out releases ahead of time so they know what needs to be done when (e.g., sprints). This will help ensure that teams stay on track with timelines while still allowing room for changes if needed due to unforeseen circumstances or customer feedback/requests which may come up during development time frames .
  5. Implement Quality Assurance: Quality Assurance measures must be taken at each stage of development (e.g., unit tests, functional tests). This will help ensure that any errors or bugs are caught early on before they become major issues preventing customers from having an enjoyable experience with your product .

Following these five steps, along with adhering to the four core principles, will help teams successfully implement Agile Development practices within their organisation, and lead towards creating successful products and services which meet or exceed customer expectations .

To sum up, Agile Development requires teams to focus on four core principles: customer satisfaction, development speed, focus on high quality, and constant improvement. Equally they should follow the key steps such as defining goals , establishing a process , creating an environment for collaboration , planning releases ,and implementing quality assurance measures in order to successfully implement these principles within their organisation . By following these steps along with adhering to its core principles , organisations will have greater success creating deliverables which meet or exceed customer expectations.

For more Blogs and Posts on ‘Best Practices’, ‘Security’ and Architecture : https://www.cloud-dog.com/blogs/

Twitter: https://twitter.com/garyseymour

Linkedin: https://www.linkedin.com/in/gary-robert-seymour/

--

--

Gary Seymour
Gary Seymour

Written by Gary Seymour

CTO, Technology and Change Lead across enterprise, cloud and secure solutions. Central Government, Global Organisations, Technology Start-ups.

No responses yet