I’m preparing for a talk in January on the benefits of DevOps. In preparing for a talk, I always start with the prime directive for presentations: “Know your audience.” In this case, my target audience is a diverse group of IT professionals. So I was wondering whether DevOps practices would be relevant to all of them. I asked myself the question “Who is directly affected by DevOps practices?”
Who is affected by DevOps? It depends on what your role is. DevOps is about improving the delivery of software and streamlining subsequent operations. The DevOps Handbook provides a tremendous overview of DevOps ideas and real-world case studies of companies implementing DevOps practices.
One of the underlying principles of DevOps is the lean concept of favoring global optimization over local optimization. In other words, we want to choose solutions whose total cost of ownership and total benefit are optimum over the entire life-cycle of the solution rather than just favoring one part of the life-cycle. For example you could build a software solution cheaply, but it might be very expensive to maintain. Or you might favor a SaaS solution because you can get started quickly, but it may be dramatically more expensive than a custom-built solution over its lifetime. Those are just two examples that illustrate how you can make a bad decision if you focus on only one aspect of the solutions costs or benefits in making a decision. You have to look at the big picture. Those lean concepts of global optimization trace their roots to the theory of constraints, authoried by Dr. Eliyahu Goldratt, and other systems thinking approaches (see http://watersfoundation.org). You can research those topics if you want more depth. For a more tactical answer, here is my list of people who are directly affected by DevOps.
Those who most benefit from studying DevOps practices are those who are responsible for designing, building, and delivering custom software. These are people with titles like programmer, web developer, business analyst, QA tester, configuration management engineer, Scrum Master, project manager, and more.
For those who work with packaged solutions or SaaS solutions, if those packages or services routinely require customization and deployment of changes, then DevOps practices are also valuable. In fact, some SaaS solution providers like Salesforce.com have project management and deployment tooling built into their platform to support agile project management and automated delivery in the manner we aspire to with DevOps practices.
Even people who are responsible for delivering solutions like client workstations may find some benefit in a study of DevOps practices. Harkening back to our earlier philosophical remarks about global optimization, our ambition is more than simply finding solutions that are cheap to purchase. We want solutions that are cheap to purchase and install and operate over their entire life-cycle. For those who support client workstations like desktop or laptop computers, they are responsible for far more than simply buying the cheapest piece of equipment . The operational side of the workstation involves processes like patching the operating system, monitoring and protecting the system from malware, and deploying approved software. Again, one of the lessons of the DevOps movement is that we have done ourselves a disservice by working in silos and trying to optimize our individual areas. By failing to look at the big picture, and failing to consider the total cost and benefits of ownership over the lifecycle of the solution, we may not be providing the best solutions for our customers.
To reinforce this point, there has recently emerged an entire class of software development tools intended to help accelerate the development and delivery of software. These are called low-code platforms, and examples include Mendix and Outsystems among others. Their development platforms wrap a number of development and delivery capabilities into the solution and they aspire to the DevOps practices in order to streamline not just the creation of software but its ultimate delivery into subsequent environments and the testing and approval necessary to ensure that it gets into production safely and quickly.
So anyone who delivers software at any point in the life-cycle of a solution, where it is a software-only solution, or a solution with a software component, should understand at least the basics of modern DevOps theories.