While some may disagree with this, I believe that SAFe® (Scaled Agile Framework) is a highly complex model that requires significant effort to learn and master. That said, SAFe also provides significant value if you are able to focus on specific areas and use the guidance to improve your business agility in an iterative fashion. While the concept of DevOps has been around much longer than SAFe, integrating DevOps and SAFe is often challenging because teams struggle to figure out where to begin. As with many practices that SAFe recommends, DevOps techniques require patience and perseverance.
Having coached many program teams in this domain, I would like to offer a few tips regarding implementation of DevOps within your agile transformation. Along these lines, I will share a few “do’s” and “don’ts” so that you can try to avoid making the same mistakes that I made with your DevOps efforts.
Tip #1 – DO start simple
One thing I have observed is that many teams are very ambitious when it comes to DevOps and want to “do it all” when it comes to automation. Who wouldn’t want to automate everything?! That is usually a utopian vision that we all aspire towards, but not always feasible given real-world constraints. My recommendation is to start small and focus on the basics. Before you can build an end-to-end workflow that encompasses Continuous Integration, Continuous Deployment, Continuous Testing/Validation, etc., you will benefit from mapping your current state, which can take the form of a Value Stream Map.
There are many benefits in going through this exercise, such as shared understanding of how work is done today, where the bottlenecks and inefficiencies are (who is waiting on whom, how much time is lost waiting, etc.). By doing this activity, you may be surprised to find out how many versions of the truth exist in your organization through open and honest discussions. If your team is truly committed to optimizing the flow of value to the customers, gaining insight into how work flows through your system today is a great place to start.
Tip #2 – DO think long-term
While we usually have the desire to fix problems today, we often miss out on the bigger picture. In order to improve your current processes, you have to also think about where you want to go and what success looks like. This may take the form of a “to-be” future-state vision (or Value Stream map) that will provide a target for you and your team to rally behind. Having a goal to shoot for is important and powerful, but keep in mind that this vision may need to morph and evolve as your understanding of business needs change.
Tip #3 – Define a few useful metrics
One of the tenets of SAFe’s DevOps philosophy (C-A-L-M-R; Culture, Automation, Lean, Measurement, Recovery) is “measurement”, which focuses on metrics. As we are all aware, metrics can be helpful but also harmful if mis-defined or misused. Hence, it is essential to define the “right” set of metrics that helps your team connect with what is most important to your customers.
Think about what your customers really care about. Do they care about how many Story Points your teams delivered in the previous sprint? Does that really make a difference to them? Or, perhaps they care more about the Mean Time To Repair which helps them understand your team’s ability to address unforeseen problems? If you are not able to clearly communicate what your customer wants you to measure, it is absolutely critical for you to have a conversation with them so that you are measuring the right things. Keep in mind that how you measure your team will influence how they behave as well as the decisions they make, so measuring the wrong things will likely cause unanticipated problems.
Tip #4 – Focus, focus focus
One of the most important concepts of DevOps is optimizing flow of work/value through your system, which is heavily dictated by attributes such as batch size and total work in-process. If your team regularly attempts to work on too many things at any given time, it is highly likely that you will struggle to achieve an efficient flow due to context-switching. Many studies have demonstrated the negative effects of such behaviors which usually includes loss in productivity and quality. However, most of us still feel obligated to juggle many things simultaneously.
This is one reason that focus is critical; limiting the number of items in-work can dramatically improve throughput. Just imagine trying to paint two different rooms in your house at the same time…you will lose a significant amount of time and productivity running between the two rooms as compared to focusing on just completing a single room first, then moving to the next room.
So how do we achieve this? Many DevOps teams leverage Kanban boards to make work visible, yet they do not implement WIP (Work In Progress) limits which significantly reduces the benefits of the Kanban method. Start by setting a maximum limit on the step in your workflow that you suspect may be a bottleneck; use the total number of team members as a start, and see how that impacts the flow of work. You will need to experiment by adjusting this limit up or down to see how it affects your team’s ability to deliver value.
Tip #5 – DO NOT be afraid to experiment
One of the key principles of DevOps is continuous experimentation and learning, which is built on the idea that we don’t always know the best solution until we try something and learn from the experience. While not all organizations are comfortable with this approach, this is at the heart of the empirical nature of DevOps – experimentation is necessary to prove or disprove a theory; without experimentation, we are just guessing without a methodical way of obtaining useful feedback. If your organization is risk-averse, try to find a small project (or process) that is relatively low risk so that a failure will not bring down the entire company. This would be a good place to start your first experiment to see how the process works and gain some valuable data for bigger projects.
To wrap up, there is no single way to apply DevOps practices. The key is to start with what you know, pick a direction, and try a few things. Think iteratively and learn from each experience, and you will likely discover surprising insights that you had never expected.