Defining DevOps

Posted: 2019-06-04 10:00:00 -0400

Attending many meetups in the Toronto area, it is not too hard finding companies that have been adopting DevOps into their environment. Out of the various conversations from panelists, expert speakers and general audience, the term DevOps means different things depending on the person and organization. Just like the early days when Internet-of-Things (IoT) was maturing, a lot of people had different viewpoints and taxonomies they wanted to apply to IoT. Eventually, the technology and ideas of where IoT is going evolved and there is a better grasp on the term IoT. DevOps is going through the same evolution.

One of the best books I have come across on the topic of DevOps is The Phoenix Project. I highly recommend this book for anyone that works in IT or wants to understand the dilemmas of running an IT unit within an organization. In the book, the authors hit 3 major principles (or 'The Three Ways') DevOps:

  • Create fully inclusive teams that involve everyone that is involved in developing, deploying and operating the product. This helps put the emphasis on the performance of the system rather than the performance of specific teams.
  • Shorten and amplify the feedback loop so information from end-users, application operators can immediately be sent to developers. This will help the team to continuously integrate new features and fix any issues quicker responding to the demands of the end-user and markets.
  • Create an environment that supports failure and experimentation within the organization. Having safety nets in place allows teams to explore and learn outcomes of incorporating new features or applying fixes to systems. The benefits of learning are greatly increased because there is no punishment on bad decisions, just lessons learned. This also allows provides an environment where people can repetitively practice and gain confidence in their products/services.

As you can see, these 3 principles place the emphasis more on the cultural aspects of the organization rather than the tools. The tools are simply in place to help facilitate the 3 principles. Anyone that is familiar with Machine Learning (ML) knows there is no "magic bullet" algorithm and it takes time to understand the data and the context. The same applies to DevOps, there is no "magic bullet" solution because the human element is always changing. That is why trying to apply specific tooling to every environment will not always bring efficiency. The best approach is to look at the culture of the environment and start the DevOps transformation from there.