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 )
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 .
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
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:?
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 …) .??
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:??
(For additional details about this technique see: Continuous Improvement for Agile software development .
Constantly iterate Step 1 – 5.?
Takeaways
DevSecOps & Web3 projects builder : keltio.fr | meta-safe.io
3 年Hey Amir! Where do you think self-service is in this piramide?