What is DevOps and Why Do People Want to Adopt It?

What is DevOps?
DevOps, among other things, is a business cultural shift that affects how labor is divided at different companies that adopt it. At the enterprise level, a company that embraces DevOps culture may have teams of employees focused on builds and releases or automation. These teams may be integrated with software engineers, systems administrators, quality assurance analysts, database administrators and security experts. A reduction itself in departments within I.T. in an organization may be a movement toward DevOps practices. Departments and specializations may be seen as factors that isolate professionals rather than integrate (for collaboration and building security into technology products) from a DevOps consultant's perspective. Some people say DevOps is automating what you can program (having programs being designed by automatic processes such as those in operations) and programming what you can automate (creating automation that is sophisticated for operations tasks).

Why do people and businesses want to use DevOps?
DevOps is a force multiplier. Code can be generated dynamically that adheres to a number of quality guidelines in an efficient way. Code itself can be instrumented (e.g., with a metaclass in a DevOps-favorite language of Python) and have the ability to manipulate or leverage itself.* This can enable greater observability, measurability, and quality assurance.

One reason to use DevOps is to develop software or I.T. solutions that are designed securely and highly performant. A second reason is to use Agile, or to be efficient with software development in fulfilling frequently-changing business requirements; to bring software (as a service through a website) to the market as quickly as possible, DevOps can help. A third reason is to moralize the employees by giving them more interesting work.

Ultimately development involves security and performance concerns and timing is critical for the delivery a new product to the marketplace. By dividing labor into specific categories that are inches wide and miles deep, the costs associated with the constraints from other teams can go unappreciated. Technology professionals frequently do not have visibility into their teammates' productivity obstacles. There often is not enough time to learn of different work blockers. Processes can be dependent on one workers' knowledge if a company shuns integration in favor of isolation (as exemplified in the seminal book The Phoenix Project). If the employees can achieve an optimal amount of communication (neither excessive nor insufficient), sharing responsibilities has a multitude of advantages.

The traditional division of responsibilities of I.T. development and operations can make people not work together. Rather than have programmers programming and systems administrators administering servers, companies mature in their DevOps adoption have people doing some duties of both programming and systems administration.

There are several goals that an enterprise has. By sharing broad responsibilities, each person has a greater appreciation for product and platform security. By leveraging tools and methods across specialized I.T. disciplines, organizations can perform more effectively. Internal tools can be built as an investment to help the business maximize its productivity. Having individuals leverage (and repurpose) multiple, unisolated tools can lead to efficiencies and creative utilizations that a highly departmentalized businesses would be ignorant of.

An enterprise may want to adopt DevOps culture which would involve "full stack developers" to engineer platforms and leverage programming to automate infrastructure tasks. At the individual level a DevOps practitioner may fulfill duties as a professional I.T. generalist. DevOps professionals may engage in activities as diverse as coding, installing and configuring operating systems, optimizing containers, creating or fixing a CI/CD pipeline, extending configuration management tools to deploy code or infrastructure patches rapidly, testing code, automating processes related to quality assurance, managing databases, or adjusting networking devices to enhance security. Harley Shaiken said "[s]killed work can be satisfying because it is varied, challenging, and creative." (This quote was taken from on page 113 of Disabling Professions, a book by several authors.) In The Mythical Man-Month, or more specifically "No Silver Bullet", the author Fred Brooks indicates that job growth could be limited for functional specialists in a matrixed team (pages 222 and 305). Some DevOps advocates have pushed for adopting it because they personally dislike the overly-repetitive tasks of highly specialized positions. Automation and well-built internal tools can lead toward greater quality control of a company's product line.

To comply with confusing regulations, you may want to use DevOps. Sarbanes Oxley encourages utilization of DevOps as developers must live in a development environment (according to this external site).

Some sources are skeptical of generalists handling the work of specialists.** Arguably Sarbanes Oxley discourages DevOps as generalists cannot write code and have access to production if the application deals with financial reporting. Some companies error on the side of caution and design jobs based on the regulations from a risk-averse attitude.

"For software developers, the big problem comes in Separation of Duties. Basically, SarbOx says that a software developer should not have ANY kind of write access to production systems that can affect the financial reporting of the corporation." (This previous quote was taken from Toolbox.com.) Automation capabilities and scaling capabilities of DevOps help make compliance achievable (with regulations and laws beyond just Sarbanes Oxley).

DevOps engineers and consultants generally could not have learned their trade at school (as of 2019). Ivan Illich said (on page 66 of The Right to Useful Unemployment) "education turns into the major generator of a disabling division of labour." The DevOps movement enhances the productive potential of many professionals. DevOps engineers tend to earn more than software engineers or systems administrators.

Shareholders, governing boards, and executives of businesses usually determine the extent of DevOps adoption more than the employees do. The DevOps Handbook indicates that a business' profitability is directly proportional to the degree that it adopts DevOps.

*Many implementations of DevOps have nothing to do with Python's metaclasses. It is just an example.

The term metaprogramming refers to the potential for a program to have knowledge of or manipulate itself. Python supports a form of metaprogramming for classes called metaclasses.

Taken from https://realpython.com/python-metaclasses/

To learn more about metaclasses in Python, see page 173 of Expert Python Programming, Third Edition.
** This article says that generalists can make mistakes.

Leave a comment

Your email address will not be published. Required fields are marked *