📜 ⬆️ ⬇️

Sharing Scrum and DevOps - Translation of the article The Convergence of Scrum and DevOps

Translation of an article written by Scrum.org and the DevOps Institute. Link to the original file


From translator


The article seemed to me very useful, although difficult to translate, despite the fact that some of the terms that refer to Agile are known to me. I tried very hard not to distort the meaning of the original and I hope that I succeeded. In any case, anyone who speaks English, I strongly advise you to read the original. This is my first job in the field of public translation, so please do not judge strictly.


In essence, an article is practically a user guide (albeit at an extremely high level). The only thing is that the advice from it cannot simply be taken and implemented (which probably applies to any methodology), and, from my point of view, the main principle should be adhered to - the changes should be smooth and should not break what works. Any changes should flow out of pain (large or small), then the team is ready for them, no need to create this pain artificially.


I put the links in the main document right away into the text, they are separated by brackets and italics. If there were doubts about the correctness of the translation of the term, I duplicated it in brackets in English.


Sharing Scrum and DevOps


"Software absorbs the world"


(Andreessen, Marc. "Why the Software Is Eating the World." The Wall Street Journal. August 20, 2011.
https://www.wsj.com/articles/SB10001424053111903480904576512250915629460 ).


Software (software) is everywhere, it affects all aspects of modern life. It allows organizations to create more advanced products, as well as better understand customer needs.


Software is also a source of change. Those organizations that take full advantage of automation bypass their "non-digital" competitors ("2017 State of DevOps Report." Puppet. Https://puppet.com/resources/whitepaper/state-of-devops-report ) due to that hypotheses are tested faster, the results of experiments are obtained and analyzed, and this information is used to improve.


Accelerated by new technologies, markets and climate change, the world is changing faster and faster (FRIEDMAN, THOMAS L. THANK YOU FOR BEING LATE: an optimistic guide. Thirving in the age of accelerations. Sl: PICADOR, 2017) . The only way to survive is to take the path of change.


Two methodologies - one goal


Agile and DevOps are the main ways in which organizations achieve the same goals: faster development cycles, fewer functional blocks for a release, using feedback to improve processes, removing obstacles and untargeted effort. The aspects that are emphasized in these two methodologies are different, because sometimes people think that these are different approaches. Agile focuses on teamwork, culture and values, while DevOps puts the development pipeline (delivery pipeline) and its continuity (flow) at the head. But Agile also concerns the topic of automation, and DevOps - communication and culture.


DevOps and Agile should be used simultaneously. One of the most popular Agile development methods is Scrum, which is used daily by up to 18 million IT professionals ( https://www.infoq.com/news/2014/01/IDC-software-developers ) , which makes it (and Agile in general, a key component of the development, that is, at a minimum, provides the “Dev” part of the term “DevOps” (translator's note: Dev - from English developement - development, Ops - operations - operation).


Both methodologies seek to create value for the user in the most efficient way, but their initial focus is different. In Agile, it's a developer, and in DevOps, it's a process. These differences are reinforced by:



Continuing change requires strong leaders. They provide not only clarity of purpose and direction of development, but also authorize and stimulate change. Changes in organizations also attract strong personalities who earn their credibility as their driving force and are rewarded when changes produce results.
When the success of these people is associated with a program of change, it may be a problem that different programs of action will start competing among themselves. When the implementation and use of Agile and DevOps are promoted by different parts of the organization, competing policy goals lead to confusion:



The reality is that the value creation process, which is transmitted to customers through the provision of software, includes as one type of element, which requires a detailed, comprehensive process and another, which is flexible and requires the team to work in an energetic manner. Automation is a process that ultimately stabilizes everything, but for many situations automation is impossible, or its cost outweighs the possible benefits. The balance between automation, process and teams with a lot of authority is important. If you focus on one and ignore the others, this leads to:



Combining Scrum and DevOps.


Imagine a world where cross-functional, business-oriented teams constantly release working software and where workflow flows seamlessly between all relevant stakeholders in real time. Add to this that value is clearly recognized, measured and reported on. This vision is a reality for many small startups that have mixed business and technology and work with customers and the market to bring customers value. Scrum teams are responsible for developing software, and operating teams are responsible for maintaining an environment that allows you to do this safely and efficiently.


Cross-functional teams with a set of necessary skills deliver the software developed to the end faster.


Creating cross-functional teams is not new. Hirotaka Takeuchi and Ikujiro Nonaka described the importance of flexible, cross-functional teams in The New New Product Delivery Game in 1986 (Nonaka, Hirotaka TakeuchiIkujiro. "The New New Product Development Game." Harvard Business Review. August 01, 2014. https://hbr.org/1986/01/the-new-new-product-development-game ). But to make the right decision about who should be included or not included in the team is difficult. Modern products are a stunning array of different technologies that historically required special skills and infrastructure. And the development team must have all the skills necessary to create a work product. It is described in the Scrum Guide (The Scrumuide. Http://www.scrumguides.org ) as:


"Cross-functional teams have all the competencies necessary to perform the work and do not depend on those that are not part of the team."


Cross-functional teams must have the necessary skill set to complete the work. When a team transitions from a traditional role-based approach, its members should increase the number of skills they have. They also need to learn to feel sympathy (build empathy) for the customer in order to make better products. This does not mean that every single person can be only in one team. There are a large number of examples where someone with expertise in operation is a member of several teams at once (acting almost as a “service unit” for a team), bringing their experience and knowledge to the team (one or several), which allows to improve the product development process, along with training other team members so that they can expand their skills. But this should be in balance with how their availability affects the ability of the team to develop tasks from backlog. They also, as a rule, should:



DevOps and Scrum are used successfully when obstacles are removed.


Queues reduce the team's flexibility, as they deprive the team of the ability to control the situation. When support communicates with teams working on Agile through queues, it is very likely that the team as a whole will be less effective, as it will wait until its request reaches the beginning of the queue.


When building a future development system, you should eliminate the queues step by step and replace them with self-service capabilities. Such traditional functions that relate to IT, such as: maintaining the environment, databases, security, network infrastructure, as well as software deployment, should be supported as a set of self-service systems. These systems will be very similar to services that companies such as Amazon Web Services (AWS), Microsoft Azure and Google currently provide and will often use these external cloud services, adding organization-specific intellectual rights to them to make them compliant with clomplience- company policy (company compliant).


Legacy applications that have long existed in a company can also reduce flexibility, since over time they become so complex that no one understands how they work. The complexity of these applications makes it difficult to achieve all the necessary skills in one team so that it can do tasks independently. For example, the amount of work and skills required to create a test that fully covers the integration process makes it almost impossible to complete this task in a single sprint! Unfortunately, there is no silver bullet for a quick solution to this issue. To do this, the company must rewrite the architecture of this application to enable modular development, deployment and testing.


Helping teams increase their abilities includes:



Automation, automation and automation again


Continuous software delivery is one of the most important DevOps practice sets. In its best implementation, it looks like this: every time the developer commits the code, it is included in the build (gets build), tested, deployed (if it meets all the release criteria) with little or no human intervention. The lack of manual labor not only speeds up releases, but also improves its quality by removing the probability of error due to the human factor.


The first step of the team in the process automation process is its analysis for the presence of work that does not carry additional value. At the same time, the application architecture is being revised. As a result, a new backlog of tasks may appear, the purpose of which is to recycle the application and eliminate technical debt. Here are some good ideas for automating:



Software development professionals


At the heart of the modern organization that develops software are qualified professionals who can apply their experience (apply an empirical process) and who have the necessary engineering / operational skills to ensure that their work is at the right level of quality.


Scrum believes that professionalism is so important that Scrum-Guide includes five
values: concentration, openness, respect, commitment and courage.


These values ​​can help organizations take a holistic look at their own ability to develop software by adding a new metric to the development process. There are several real ways that professionalism can be encouraged in a modern development organization:



Integrate, concentrate and win


For many, the barriers that prevent becoming holistic, having a well-developed internal collaboration, cross-functional organization engaged in development and support are insurmountable: the status quo seems unbreakable, legacy applications and culture are immutable. Attempts by some organizations to change result only in the assignment of old processes, roles, organizational structures of new names.


But the pragmatic, step-by-step process of moving towards Agile and DevOps can help find a way forward, with some positive changes becoming noticeable in the process. Not all parts of the business require the increased flexibility that Scrum and DevOps give. Thus, gradually select those parts of the business that will be positively affected by the new methodologies, and change them.


Changing an organization sounds like a difficult task, and it would be if all changes needed to be made at once.


Changes begin with a customer who could be better served and with a developer organization that wants to make it more satisfied.


Step 1: Unification of the approach to software delivery


This may seem simple, but many organizations will find that they follow an approach that divides the process between groups of professionals who are focused on reducing costs and risk, rather than seeking to bring benefits to the consumer. Work flows from the planning function to the development, testing, output to production, and then operation. Development and operation teams are separate, and within projects, a situation may arise where different groups of people work on the same system and business area.


Thus, the first step encourages the organization to stop this insanity by adopting a holistic, product-centric approach to creating business value. Projects may continue to exist, but they are secondary to stable teams, including operation, which adds new value by meeting the need to keep the environment in working condition. Large products that are developed by teams can use the Nexus framework ("Scaling Scrum with Nexus." Scrum.org. Https://www.scrum.org/resources/scaling-scrum ) to scale Scrum to create Scrum- teams, while small products can be developed using Scrum.


Here are the conclusions for the Scrum team:



And such - for the service operation:



2. .


, , , , , , , , -, . lean/- . , , .


Scrum- :



:



3. .


Scrum- , Scrum- , .


(This might sound like semantics), , Scrum-, , — , , Scrum- . Scrum- , , . "" . Scrum- , , , . :



Conclusion


DevOps , Agile- "Agile-". Agile- . , , , IT. , DevOps . Scrum/Agile- . , , . DevOps Scrum-, , , , (by inspection and adaptation through transparency).



, Scrum-. . — , . , Nexus, , , Nexus (Nexus Integration Team (NIT)), Scrum-. , , /, . , , — , , Agile. , , :




. DevOps / . , . , . , , , . , :




, , , , . , , , , . , . , , , , . , , Agile- — , "Agile" , (the opposite of agility). , (empirical), . .


')

Source: https://habr.com/ru/post/339674/


All Articles