In early 2018, 86% of software developers stated they were practicing DevOps to some degree or were planning to implement DevOps. DevOps is undeniably entering the mainstream of the marketplace; however, it is still not well understood. To some people it means innovating quickly like a startup, to others it means standardizing operations through automation. It is a fairly abstract concept and people often struggle to explain it, especially if your audience is not versed in the differences between waterfall and agile development processes and the evolution of the software development lifecycle.
Up until the early 2000’s, many organizations used waterfall-based methodologies to develop software. The approach was called “waterfall” because teams completed one step, fully, before moving on to the next; resulting in finalizing all requirements for the project before any development began. This approach was used initially in other types of engineering, such as architecture, or civil engineering, where requirements and market demand rarely changed even years down the line. While this approach initially seemed suitable for software engineering, building a software application is not like building a bridge; and many organizations found themselves struggling to keep up with changing priorities and shifts in market demand. The Agile Manifesto, published in 2001, was created as an alternative to using waterfall methodologies for software development that focused on these four values:
- Individuals and interactions over processes and tools
- Customer collaboration
- Functional software over comprehensive documentation
- Responding to change over following a plan
Since its publication, many organizations have adopted this approach to software development.
Building upon the agile methodology, there are newer practices available to further improve the development lifecycle by implementing an effective pipeline to automate build, integration and testing processes, essentially achieving continuous operations. Combined, these new practices take the Agile Manifesto a step further to allow organizations to deploy new functionality to customers at a faster rate, with code releases occurring as frequently as weekly or even daily. This essentially characterizes what is now called DevOps.
So how do you describe the complex technical concepts behind DevOps to a less technical audience? Having a go-to analogy is key.
Waterfall is a Sit-Down Restaurant
When training interns and new hires out of college, I like to compare development processes to interactions at a restaurant. If software development were like a restaurant, customers or consumers would play their usual role; developers would be the cooks in the kitchen, business analysts would be the waitstaff, and the meal would be the end product. In our model, waterfall is like any sit-down restaurant. At a sit-down restaurant, customers submit their entire order at once (requirements) to the waitstaff, the waitstaff then hands off the order to the cooks in the kitchen. At this point, the customer sits and waits. After some unknown period of time, the meal is delivered, and everyone hopes it’s what customer was expecting.
Agile is like Chipotle
Agile takes this traditional model and shortens the feedback loop, making it more like eating at Chipotle. Each character plays the same role as in the model above; only this time, the waitstaff is asking just enough to get to the next step in delivery instead of obtaining all the information up front. The customer begins by specifying the type of meal (bowl, tacos, burrito); then they continue down the line, giving the business analyst just enough information for the next step: “black beans or pinto beans?”, “type of meat”, etc. If the customer walks into the restaurant wanting a steak burrito, but they change their mind before this step and choose chicken it’s not difficult for the waitstaff to pivot. In this model, there is less opportunity for surprise when the meal is delivered because the customer has been more involved throughout the build process. Now that a fundamental understanding in the differences between waterfall and agile has been established, we can build upon this analogy to explain how to further improve upon the “Chipotle” model.
Increasing the amount of interactions with the customer during the development process is a great first step, but it is still missing an important opportunity for feedback. There is also an opportunity to check the quality of the product before the customer ever gets their hands on it, and really, before the product ever leaves the kitchen.
Automated Testing for Feedback
There was one time I went to Chipotle and ordered a pork burrito bowl, and it looked great. I paid and sat down, but after the first bite it was obvious something was wrong. The pork had been soaked in lime to the point where it tasted sour, I couldn’t even finish the meal. This illustrates why there should be a check before the “food” leaves the kitchen, and before the customer interfaces with it at all. It’s essentially why celebrity chef Gordon Ramsay is like automated testing. Anyone who has watched Chef Ramsay discover an issue with the food in the kitchen knows he demands every cook’s full attention and respect until the issue is resolved. When Ramsay starts screaming about a food dish, everyone stops, listens, and works together to solve the problem with the product.
Just like Gordon Ramsay, if automated tests are broken and screaming the problem code demands attention and respect until the issue is resolved. This small analogy illustrates how automated testing will let developers know if the code is “funky” or “fresh” before the customer ever has the opportunity to interact with it, which helps to ensure your customer doesn’t end up with a bad taste in their mouth.
Moving Toward DevOps
Automated testing is just one small piece of DevOps. A change towards DevOps is more than just automation, it includes a major shift in how the organization develops code and thinks about IT. The importance of agile acting as a stepping stone toward DevOps and continuous delivery is sometimes difficult to understand without a technical background; but imagining the tangible benefits to a restaurant leveraging fast feedback and automated testing (aka Gordon Ramsay) can help them quickly understand how these practices can positively impact development processes and ultimately the customer experience.
Whether you are already implementing DevOps or need some help exploring ideas of how DevOps could be of benefit to your company, Credera would love the opportunity to be a part of your DevOps journey. Contact us at email@example.com.