A few days ago, I saw the article “DevOps is dead, platform engineering is the future” reprinted by Infoq, and I felt emotional. Because this is reminiscent of a speech titled “Agile is Dead” given at a conference by “Dave Thomas”, one of the proponents of the Agile Manifesto, around 2014 or 2015, and the two have very similar connotations.
Both “agile development” and “DevOps” have had a huge impact on the software development field since their birth, and to borrow the phrase “Al Tenhundfeld”, no one wants to be called non-agile (or non-DevOps), which is Victory as a “label”. However, “agile” or “DevOps” often deviates from the original intention in the real practice process, and even goes to the opposite. Everyone says they’re doing agile, but almost no one is really agile, and the same goes for DevOps.
Agile is dead?
Let’s start by revisiting the content of the Agile Software Development Manifesto:
我们一直在实践中探寻更好的软件开发方法，身体力行的同时也帮助他人。由此我们建立了如下价值观： 个体和互动 高于 流程和工具 工作的软件 高于 详尽的文档 客户合作 高于 合同谈判 响应变化 高于 遵循计划 也就是说，尽管右项有其价值，我们更重视左项的价值。
Then, look at reality in terms of the values mentioned in the manifesto:
推销“流程与工具”比“个人和互动”容易的多 生产不切实际的的计划和大量文档比生产可“工作的软件”容易的多 “合同谈判”带来的安全感比“客户合作”需要建立的信任更容易得到 管理层对“遵循计划”的需求往往高于对变化作出反应
And the reality is so brutal that when inexperienced teams implement agile, the process tends to be chaotic. When various “certifications,” processes, and tools claim to lead to agile, teams naturally move toward agile “anti-patterns.”
When “agile” has become a label for vendors touting services and products, when “agile” has been subverted to the point of being meaningless, yes, agile is dead.
You can also read Al Tenhundfeld’s article on this topic or look at the Chinese translation of InfoQ, which will not be repeated in this article.
DevOps is dead?
“DevOps” was proposed later than “Agile”, and it was a combination of words (ie Development and Operations) coined around 2009 to highlight the importance of communication and cooperation between software developers and operation and maintenance personnel. Originally “DevOps” was an idea to deliver and improve products faster by breaking down the barriers between developers and operators.
Ideally, the implementation of “DevOps” will form a full-featured team including development, operation and maintenance personnel, and undertake the work and responsibilities of product online operation, change management and maintenance. Yes, it sounds like an “agile” self-organizing team working together to deliver value to customers. So to properly execute DevOps, all involved must embrace agile thinking.
The reality is that with the right understanding and support from management, it’s nearly impossible for teams to implement true DevOp from the bottom up.
Some organizations will establish independent DevOps teams to be responsible for application deployment and operation. In this case, this so-called “DevOps” team is just another name for an operations team, even if the relevant tools are used.
Other organizations will simply add so-called “DevOps engineers” to the development team and take responsibility for related responsibilities, which not only increases the skill requirements for “DevOps engineers” (need to understand both development and operations knowledge) , and a new “constraint point” is formed.
Similar to “agile”, “DevOps” is gradually being labeled, gradually losing its original semantics and becoming a label for process and tool manufacturers to promote products. The barriers between developers and operators have not been broken, but have become more prominent due to higher delivery pressures.
The reason behind the rise of movements or cultures such as “Agile” and “DevOps” is the “software crisis”. The core problems described in “The Software Crisis” are:
From the 1960s to the 1990s, “software engineering”, structured programming technology, object-oriented programming, etc. formed by introducing engineering into the software field were all aimed at solving the “software crisis” problem. After entering the new century, with the development of Internet and other technologies, the market demand for software has experienced explosive growth. As a result, new methods such as “agile development” and “DevOps” were born to try to solve the “software crisis”.
It is foreseeable that before the above problems are solved, various new solutions will continue to be born in the software field. For example, “low-code” tools want to enable “citizen developers” (i.e. non-technical people) in a specific area to be directly involved in the development of the solution. Or the aforementioned “platform engineering”, “NoOps” and so on.
But we should still see that the core of software development is the developer. The core of “Agile” and “DevOps” embodies the focus on people rather than processes, tools and the like. Even in 2022, the principles of “Agile” and “DevOps” are not outdated.
keep in mind
Software development itself is a relatively young branch of engineering. Although it develops rapidly and incorporates many interdisciplinary theories, it still cannot be separated from the basic principles of engineering, that is, “applying the principles of science and technology to solve problems”. Whether it is “Agile” or “DevOps”, all theories need to be verified and revised in practice.
Finally, as “engineers”, we should have a deeper understanding of the nature of the problem, in order to better understand emerging trends and maintain a stable state of mind. Always remember, “there is no silver bullet”!
#Talk #DevOps #dead