Technical Excellence & Innovation
With Technical Excellence and Innovation, quality, sustainability and the customer’s experience are everyone’s responsibility. Technical Excellence is advanced through a set of core Agile engineering practices, including emergent design, test driven development, test automation, collective code ownership, pair programming, continuous integration and shared coding standards. Innovation is achieved by applying Agile and Lean principles to self-organizing teams completing ideation and solution discovery, working closely with customers, and rapidly creating and testing prototypes.
Implementing DevOps requires buy-in and collective ownership from everyone on the team. It is important to help team members understand how it impacts them and what is expected from them.
The “Seven Habits of Effective DevOps” (based upon Microsoft experiences) demonstrate how Agile and Lean thinking can be applied to technical development processes, to foster innovation and technical excellence.
Flow of value
This means keeping our backlog ranked according to what matters to the customers and focusing on the delivery of value for them. This has always been an Agile value, but now with DevOps telemetry, we can measure how much we are succeeding and determine when we need to correct our course.
Evidence and data
We instrument everything, not just for health, availability, performance, and other qualities of service, but to understand usage and to collect evidence relative to the backlog hypotheses. For example, we will experiment with changes to user experience and measure the impact on conversion rates in the funnel. We will contrast usage data among cohorts, such as weekday and weekend users, to hypothesize ways of improving the experience for each.
Management of technical debt
Any technical debt you carry is a risk, which will generate unplanned work—such as Live Site Incidents—that will interfere with your intended delivery. We are very careful to be conscious of any debt items and to schedule paying them off before they can interfere with the quality of service we deliver.
Agile scheduling and teams
This is consistent with Agile, but more lightweight. Feature crews are multidisciplinary, pull from a common product-backlog, minimize work in process, and deliver work ready to deploy live at the end of each sprint.
Production first mindset
Data is reliable only if the quality of service is consistently excellent. We always track the live site status, remediate any live site incidents at root cause, and proactively identify any outliers in performance to see why they are experiencing slowdowns.
Before DevOps, the product owner groomed the backlog based on the best input from stakeholders. With DevOps, we treat the backlog as a set of hypotheses, which we need to turn into experiments, and for which we need to collect data that supports or diminishes the hypothesis. Based on that evidence, we can determine the next move in the backlog and persevere (do more) or pivot (do something different).
We can only deliver a 24x7x365 service by continually improving our architecture to refactor into more independent, discrete services and by using the flexible infrastructure of the public cloud. When we need more capacity, the cloud provides it. We develop every new capability cloud-first before moving into our on-premises product, with a few very intentional exceptions. This gives us confidence that it has been hardened at scale and that we have received continuous feedback from constant usage.