When Agile & DevOps Fail

When Agile & DevOps Fail

In this post I will discuss why many organizations report that Agile & DevOps do not deliver their promises and what might be done to address this issue.

I acknowledge that both Agile and DevOps are among the best available practices, but both should be considered with the right perspectives and expectations.?

More than 20 years ago, Bjarne Stroustrup (The “father”?of C++)?wrote:

“Remember that no amount of attention to detail, no application of proper management technique, no amount of advanced technology can help you if you don’t have a clear idea of what you are trying to achieve.
More projects fail for lack of well-defined and realistic goals than for any other reason.

Bjarne Stroustrup, The?C+ + Programming Language Third Edition.

Even nowadays, we did not (yet…) assimilate this idea, and we still believe that “advanced technology” (such as DevOps…) and “proper management technique” (such as Agile…) will avoid us from failure. We wrongly expect that applying Agile & DevOps practices are enough to solve our software development failures.?

How to limit projects failure

As quoted above, Stroustrup suggested that most of the projects’ failures are a result of: “lack of well-defined and realistic goals”

In order to have a more realistic expectation about Agile & DevOps you need to:

“… Keep in mind though that Agile, DevOps or any other future new “silver bullets” to come are only means for achieving your objectives.
You should always choose and adapt the relevant practices for your organization’s or project’s specifics.”

(from my previous article Continuous Improvement for DevOps and Agile with KPIs ).?

I would like to argue that the “lack of well-defined and realistic goals” usually occurs as a result of ignoring a key practice that is necessary in order to understand what our goals are and how we can achieve them. One optional way to address this issue is by applying (introduce and implement) a continuous improvement practice within your software development process.?

Continuous improvement

Continuous improvement is aimed at “getting better all the time”. In order to achieve the improvement, you should have first a good understanding of what your goals are. Once continuous improvement process is correctly implemented, the quality will be improved, delivery would be accelerated, and the waste would be reduced.

My recommendations as to how to apply a continuous improvement process, is to iterate on a regular basis (say once in two weeks ...) the following steps:

Step 1.????Model your current development process.

This step is required in order to clarify what is the current development process you use. Usually, this modeling contains several different modeling types (from the perspectives of Agile, DevOps, CI-CD …).???

Below are a few examples of different modeling types:

1.1???The following example presents a modeling that uses a global "Agile software development" point of view. ( For additional details about this technique see: Continuous Improvement for Agile software development )

No alt text provided for this image

1.2 The next example presents a modeling that is focused on Value Stream Mapping. Value Stream Mapping provides an easy and fast way to understanding and significantly improving the product development process. (For additional details about this technique see: Value Stream Mapping .


No alt text provided for this image

1.3 The next example presents a modeling that is focused on “CI-CD” related aspects. (For additional details about this technique see: CI CD avec GitLab CI et JGITFLOW

No alt text provided for this image

At the end of this step (Modeling your current development process), the relevant stakeholders should have a clear and full understanding of the current development process, including a complete documented modeling.

Step 2.????Based on your current project processes and the issues addressed, you need to clarify and document your improvements' objectives (yes – for each iteration, your objectives might be changing dynamically).?

Step 3.????Reflect and prioritize the issues that should be improved in each iteration. You can use the impact/effort matrix as presented below:?

No alt text provided for this image

For more information about Impact/Effort matrix please see here .

Step 4.????Based on step #3's results, identify the best practices that will yield a significant improvement for the iteration

The image below presents examples of potential candidates for process improvement (Kanban, KPIs, Story Mapping and Forecasting practices …) .??

No alt text provided for this image

Step 5.????Incrementally implement the selected practices and update the modeling of the new processes.

The following example presents a modeling of the current improvement cycle's expected results:??

No alt text provided for this image

(For additional details about this technique see: Continuous Improvement for Agile software development .

Constantly iterate Step 1 – 5.?

Takeaways

  • Agile and DevOps are good practices but should be considered in the right perspectives and expectations.?
  • Missing complementary practices to Agile and DevOps will result with a lack of understanding of the project's goals and opportunities for improvements.?
  • Continuous Improvement should be used as a complementary practice to Agile & DevOps. It will enable you clarify your project's goals. Based on those goals, you will be able to improve your software's life cycle.????

No alt text provided for this image
Kevin Didelot

DevSecOps & Web3 projects builder : keltio.fr | meta-safe.io

3 年

Hey Amir! Where do you think self-service is in this piramide?

回复

要查看或添加评论,请登录

Mendelson Amir的更多文章

  • Be a Learning Machine

    Be a Learning Machine

    I constantly see people rise in life who are not the smartest, sometimes not even the most diligent, but they are…

  • Scrum Master – Test Your Scrum

    Scrum Master – Test Your Scrum

    Want a quick and effective way to assess how well your Scrum Team applies key principles during the Sprint? Try this…

  • How Effective Is Your Scrum – Really?

    How Effective Is Your Scrum – Really?

    Scrum Masters often ask themselves this crucial question as part of their continuous improvement process. Challenging…

  • Enhancing Your Software Development with Nudge

    Enhancing Your Software Development with Nudge

    About Nudge Nudge is a groundbreaking book written by Nobel laureate Richard H. Thaler and Harvard Law School professor…

  • Top Mistakes to Avoid in Software Development Management

    Top Mistakes to Avoid in Software Development Management

    This revised post presents my checklist of "pitfalls to avoid" during the software development process. I am aware that…

  • Eliminate SPOFs in Scrum

    Eliminate SPOFs in Scrum

    In software development, a Single Point of Failure (SPOF) is any element, process, tool, or dependency that, if…

  • The Essential Missing Practices in Scrum

    The Essential Missing Practices in Scrum

    In this post, I will outline my list of essential missing practices in the Scrum framework. I contend that each of…

  • Applying Evidence-Based Practices in Software Development

    Applying Evidence-Based Practices in Software Development

    Richard P. Feynman’s quote, “Science is the belief in the ignorance of experts,” serves as a powerful reminder that…

  • Pitfalls to avoid during the software development process.

    Pitfalls to avoid during the software development process.

    This revisited post presents my checklist of ? pitfalls to avoid ? during the software development process. I am aware…

  • Optimizing Software Development with Evidence-Based Approaches

    Optimizing Software Development with Evidence-Based Approaches

    This post discusses how the software development process can be optimized by using an Evidence-Based KPIs approach…

    2 条评论

社区洞察