Agile and DevOps Practices – Should you do one without the other?
I have always loved pizza, ever since I was a kid. I’m not sure how or when it started, but I could eat pizza for breakfast, lunch, dinner and snack, sometimes all in one day! I remember when I was a young kid, I went to a pizza parlor where you can watch the pizzas being made through a big glass window. It was always a thrill to see the pizza chef toss the dough in the air, twirling the dough into a perfectly round circular pie of deliciousness.
Over the past few years, as I work with more Agile teams, I began to use analogies to help educate those who may not have been exposed to Agile principles, concepts, and practices. For some reason, I often find myself using food analogies, perhaps because most of us enjoy eating, or at minimum, understands how food preparation works. I often use phrases like “the customer doesn’t necessarily care how the pizza is made inside the kitchen, as long as he gets what he ordered and the food tastes good”. I see a lot of parallels between food preparation and Agile development, which I gladly share with peers or anyone who cares to learn about these things.
To me, building software is very similar to creating a great meal for a finicky customer. Each order (request) is typically unique with its own specifications (Requirements) and customizations. The customer usually has high expectations for the quality of the outcome and timing of the delivery. The customer also usually doesn’t care to see how the product is made, assuming that the quality and timing is acceptable. If either of these do not meet expectation, then the customer may start to wonder what is going on, and the curiosity regarding the process or procedure will begin to surface. Interestingly, if the output exceeds expectations, the customer also may care to understand how this success was achieved.
Executing Agile development is not extremely difficult, especially if you have a committed team that is supported with dedicated leaders who are willing to allow the team to develop and hone the skills over time. For most teams I have worked with, even ones who did not achieve their maximum potential, attained some level of success relatively quickly, and doing so within just a few weeks of adopting Agile practices. One might say that anyone can learn to cook a decent meal if given the opportunity to practice frequently and consistently.
So where does this DevOps “thing” fit into Agile development? Most of us have heard of Scrum or Agile Manifesto, but the concept of “DevOps” is relatively new; most organizations are still trying to wrap their head around what this actually means and how to get benefit from it.
It is my opinion that practicing Agile development without implementing DevOps practices (such as Continuous Integration) reduces the overall effectiveness of the Agile team. Having a great Agile team without the ability to bring value to the end-user/ bncustomer in an efficient way is akin to making great-tasting pizzas and having them sit in the window, not delivered to the customer while they are still hot. If the pizzas get to the customers too late, the overall experience is diminished, as the perceived value and satisfaction will likely decline.
It is my opinion that practicing Agile development without implementing DevOps practices (such as Continuous Integration) reduces the overall effectiveness of the Agile team.
There is an interesting phenomena that occurs when your Agile team begins to excel. As the speed of development increases, if the team does not have an effective delivery process in place, the result may be an acceleration of the bottleneck, which actually slows down the value delivered by your team! In this situation, the end product, if not being put into the hands of the customers, is ultimately stuck midstream. So, the better your team is at Agile, the bigger the bottleneck becomes, which may seem counterintuitive, but is a likely scenario.
So how do you make sure your Agile team does not end up in this situation? There are key steps you can start taking to incrementally get your team to operate with a more value-centric mindset. The following are basic steps that you might consider:
- Define value – What does your customer see as “value”? Do they want to get their pizza in 30 minutes or less, or is 15 minutes the expectation? What makes your customers happy?
- Map value stream – Create a flow of events/activities that are key to delivering your product to the customer. This enables you to identify areas of inefficiency that can be optimized.
- Determine feedback mechanism and cadence – How often does it make sense to obtain feedback from the customers so that you can refine the process flow? How much time will they give you to make adjustments and improve?
- Incorporate feedback – Determine best way to integrate feedback into current process improvement flow. How quickly can your team adapt? By now, I’m sure you have heard of all the stories about how Amazon is able to release a new software build every 12 seconds (or something seemingly unattainable). Does your organization need to operate in a similar fashion to be successful? Maybe, maybe not!
- Close the loop – Determine how to measure changes and assess effectiveness of each change. How can you monitor the change without doing a lot of extra work?
In closing, can you operate a successful Agile team without implementing DevOps? The short answer is “Yes”. However, it is highly likely that you are not reaping all the benefits from your team. If your team is fairly mature in practicing Agile, you may want to take a closer look at DevOps practices as part of the iterative process improvement that your team should already be doing. You may be surprised how much value you will gain from relatively small amount of effort!