Understanding DevOps principles
There are a lot of different definitions when it comes to DevOps. Most of them are good at explaining the different aspects of finding the right flow in delivering software and IT projects. In the upcoming sections, we will highlight six DevOps principles that we think are essential when adopting a DevOps way of working.
Principle 1 – Customer-centric action
Nowadays, it is important that software development projects have short cycles and feedback loops, with end users and real customers integrated into the team. To fully meet the customers' requirements, all activity around building software and products must involve these clients. DevOps teams and organizations must continuously invest in products and services that will allow clients to receive the maximum outcome, while also being as lean as possible to continuously innovate and change the chosen strategy when it is no longer working.
Principle 2 – Create with the end in mind
Organizations need to act more like product companies. They should focus more on building working products that are sold to real customers. This engineering mindset needs to be shared by all employees. This is required to realize those products. This means that they should let go of the approach where each unit focuses on a particular role with their own scoped responsibility.
Principle 3 – End-to-end responsibility
In most traditional software development projects, the software and services that are developed are handed over to operations, where they then deploy and maintain those solutions after the initial development process. By adopting a DevOps way of working, the DevOps teams become fully responsible and accountable for the project they deliver. This means that once the product has been delivered by the team and it needs to be maintained, it still remains under the responsibility of the team. The team will also provide support for the product until it reaches its end of life. This greatly increases the level of responsibility of the team and the quality of the products that are developed.
Principle 4 – Cross-functional autonomous teams
Organizations that work with vertical and fully responsible teams will need to let these teams work completely independently throughout the whole life cycle. To enable these teams to work completely independently, a broad and balanced set of skills are required. Team members need to have T-shaped profiles instead of old-school IT specialists who are only skilled in their own role. Examples of skills that every team member should have include development, requirement analysis, testing, and administration skills.
Principle 5 – Continuous improvement
Another part of end-to-end responsibility is that, for organizations, it is important to adapt changes continuously. There can be a number of changing circumstances, such as new technology that has been released, changing customer requirements, and so on. Continuous improvement is a strong focus in DevOps when it comes to optimizing for speed and costs, minimizing waste, easy of delivery, and to continuously improve the software and services that are being built and released. An important activity to embed inside these cycles is experimentation. This will allow teams to develop a way of learning from their failures, which is essential to continuous improvement.
Principle 6 – Automate everything
To fully adopt and embed a continuous improvement culture inside an organization, most organizations have a lot of waste and tech depth to eliminate. To work with high cycle rates and to process the instant feedback from customers and end users as soon as possible, it is imperative to automate everything. This means that not only the software development process should be automated using continuous delivery (which includes continuous development and integration), but also the whole infrastructure landscape needs to be automated. The infrastructure also needs to be ready for new ways of working. In this sense, automation is synonymous with the drive to renew the way in which the team delivers their services to their customers.
In this section, we have covered the six principles that are very important when adopting or migrating to a DevOps way of working. In the next few sections, we are going to look at what Azure DevOps has to offer as a tool that supports teams so that they can work in a DevOps oriented manner.