Tuesday, January 5, 2016

Is DevOps the Next Thing or the Real Thing

DevOp is software instrumentation.

DevOps is a deployment pipeline that stresses communication, collaboration, and integration between software developers and information Technology (IT) professionals. But most of the organizations just talk about it, very few are doing it. So is it just the buzzword, the trending idea, the "next big thing" or the real thing happening? Do you consider DevOps a tool, a technique, a collection of methods, a focus, an approach, or, like agile, a philosophy or mindset?

"DevOps" is a new buzzword for old ideas. They are good ideas; they fit in with Agile principles such as, "Our highest priority is to satisfy the customer through the early and continuous delivery of valuable software" - the first principle of the Agile manifesto, but the core ideas aren't new, DevOps is just the inclusion of ops folks on the team. That should have been happening from day one, given that continuous delivery is an important part of agility.  It's just part of being cross functional. DevOps is the real thing because it lowers the technical barrier to producing the full construct; it improves the chances for many to learn about what actually "happens" upon deployment, instead of wondering what "would/will" happen.

DevOps brings in a cultural shift to an organization to not only develop but also to maintain the application with continuous changes in place. Devops as a natural consequence of applying agile thinking not only to development but to the whole lifecycle of a service that has IT-components as central assets. A cultural shift is important and if achieved, it brings a whole lot of benefits to the business. DevOps in the context of any flavor of agile is just an extension of one of the basic philosophies of agile. True Agile demands cross-functional team, particularly in the era of cloud, where generally release happens more frequently, an external team supporting the application/product in such a fast moving environment becomes next to impossible. Hence, the DevOps concept is very much evident particularly in the context of cloud and the team which develops the product also supports the product once it goes live. And one of the major requirements for a smooth DevOps is automation of the features developed, which also is one of the basic philosophies of any flavor of Agile. And it improves the team and the business agile maturity:
Level 1 - agile with visibility, processes etc
Level 2- increase cadence, Continuous Integration and Delivery, better engineering practices etc. this level looks like DevOps
Level 3 - the team incorporates the business knowledge.
Level 4 - the teams more integrated, where the organization has more synergy. Looks like SAFe to scale up Agile.

DevOp is software instrumentation. DevOps is a great method to suffice the modern customer need to continuously deliver assets to the operational battlegrounds quickly and securely. Operations needs are often neglected due to a focus on end users. As a result, information often needs to be manually gathered post deployment. Areas to instrument include fault detection and reporting, performance metrics, usage statistics, and user error information. Production monitoring, instrumentation, and end user analytics allow you to empirically measure what is valuable and whether it's working as needed. Infrastructure as code, automated deployment, and continuous quality allow you to reduce the batch sizes and the latency between an idea and its realization.

Avoid pitfalls to using DevOps solving problems in a one-dimensional way: Hyper focusing on interactions between a single "exchange" in the value stream is bound to ignore a multitude of problems in your business. And the risk of focusing on DevOps is of losing focus on the rest of the value stream; of optimizing the part at the expense of the whole. Also, DevOps these days seems to only solve the problem in a one-dimensional way-- tooling. DevOps techniques and technologies allow to produce and consume full constructions of the software product at each unit of effort - so that it can be tried out more often and by more people, such that people may learn more, earlier and more often. Once it is understood that you need to focus on the whole value stream, then "DevOps" becomes part of what you do; eliminating handover and silos, etc. it is common to simply keep grinding the same processes week in and week out without disciplined processes to continuously improve how they deliver value internally or externally.

IT spends more than a decade applying the principles and practices of agile development to deliver value more effectively on software development teams. DevOps ideas expand the focus to delivering real value quickly, to the end of the value stream. Devops isn't "the next thing," it's just "a thing," happing now. There is no magical silver bullet, single solution for every problem. Devops is appropriate for problems suited to harness three "I"s in Agile - Interaction, Iteration, and Improvement. Other problems require other solutions.