Improve your SDO Performance

DevOps infinity detailing the continuous feedback loop of: plan, experiment, build, test, package, release and monitor

How do you use the concepts of DevOps to improve SDO performance?

How do you reduce lead time? Increase deployment frequency? Reduced change failures? Reduce the time to restore systems?

Fostering a DevOps culture is built around the Three Ways, described in Gene Kim’s The Phoenix Project .1

Phase 1

The first way - treat Dev & Ops as the same system.

The flow of work from Dev, the business, to Ops as the customer
Principles of Phase 1 Practices of Phase 1

Visualise the flow of work to understand the system.

Never pass a known defect downstream.

Never allow local process optimisation to create a global degradation.

Review and optimise to increase flow.

Create rapid feedback loops through Automated Testing and Continuous Integration of code, driving it with practices like Trunk Based Development.2

Minimise your Work-In-Progress (WIP) by using Continuous Deployment to push small changes to production as frequently as possible.3 This makes the process highly repeatable and reliable. To do this you might need to adopt a lightweight change protocol.

Invest heavily in paying down Technical Debt and improving Code Maintainability to reduce the drag it places on all development and operations practices.4

Create environments on demand by using highly automated Infrastructure-as-Code (IaC) deployment everywhere.

Phase 2

The second way - focus on the flow of work.

The flow of work from Dev to Ops and the feedback loop back to development
Principles of Phase 2 Practices of Phase 2

Shorten and amplify all feedback loops.

Respond to all customers - internal and external.

Elevate the improvement of processes over daily work through the use of structured Problem Solving, and and "stop the line" or “andon” processes.

“Shift-left” testing using practices like Test First development (TDD & BDD ) to build comprehensive, fast Test Automation suites.5 6

Creating shared goals (and pain) for Dev and Ops teams by making all parts of the process highly visible – including operational performance and customer feedback.

Phase 3

The third way - focus on building the culture of continual experimentation and learning.

The DevOps feedback loop containing multiple inner feedback loops signifying continual improvement of the system
Principles of Phase 3 Practices of Phase 3

Promote experimentation.

Learn from success and from failure.

Respond quickly to change.

Exploit new opportunities.

Encourage innovation and risk taking via autonomous Product Teams by giving them Flexible Working arrangements and encouraging your engineers to become masters of their art through targeted Learning and Knowledge Sharing.7

Exploit opportunities such as incidents to constantly test and improve your Disaster Recovery which will drive reliability and reduce friction in operations.

Use hypotheses, backed by data, to experiment, fail-fast and uncover new high-value opportunities.

A number of other environmental factors support SDO performance.

Cloud Technology

The use of public Cloud Technology accelerates the adoption of DevOps and software development performance by allowing engineers to focus on the code that matters, by offloading the ‘undifferentiated heavy lifting’ of infrastructure and services to the cloud providers.

Loosely Coupled Architectures

Modern, Loosely Coupled Architectures allow teams to independently test, deploy and change their systems on demand without depending on other teams for additional support, services, resources, or approvals. Such architectures usually feature small, independent services communicating via some kind of loosely coupled communication layer - otherwise known as Microservices.8

Tools

The Tools used by your engineers contribute directly to the friction in your software development process. By allowing engineers to choose their own best-of-breed tools, which are easy to use and flexible, you free them from the constraints and workarounds imposed by bad tools. Note that this does not mean buying and deploying expensive “industry leading” tools - it means allowing the team to select the best tool for the specific job based on the needs of the engineers, whether that is proprietary, open source or home grown.

Psychological Safety

Finally it is important to build a culture of Psychological Safety within your organisation. A safe team environment allows members to take calculated and moderate risks, speak up, and be more creative - directly contributing to your ability to innovate and grasp new opportunities.9

References

[1] Gene Kim, Kevin Behr and George Spafford (2013, January 10).The Phoenix Project, A Novel About IT, DevOps, and Helping Your Business Win. IT Revolution Press.

[2] Paul Hammant and friends (2018), Trunk Based Development. Retrieved from https://trunkbaseddevelopment.com/

[3] Jez Humble & David Farley (2010, August 23). Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation. Addison Wesley.

[4] Matt Tyler (2020, July 01), Technical Debt: The first 50 years. Retrieved from https://mechanicalrock.github.io/2020/07/01/technical-debt.html

[5] Various (2005), Test Driven Development. Retrieved from Wikipedia: https://en.wikipedia.org/wiki/Test-driven_development

[6] Cucumber.io (2020), Behaviour Driven Development. Retrieved from: https://cucumber.io/docs/bdd/

[7] Sriram Narayan (2018, February 20), Products Over Projects. Retrieved from: https://martinfowler.com/articles/products-over-projects.html

[8] James Lewis & Martin Fowler (2019, August 21), Microservices Guide. Retrieved from: https://martinfowler.com/microservices/

[9] Laura Delizonna (2017, August 24), High-Performing Teams Need Psychological Safety. Here’s How to Create It. Retrieved from Harvard Business Review: https://hbr.org/2017/08/high-performing-teams-need-psychological-safety-heres-how-to-create-it

[3] Jez Humble & David Farley (2010, August 23). Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation. Addison Wesley.

[4] Matt Tyler (2020, July 01), Technical Debt: The first 50 years. Retrieved from

https://mechanicalrock.github.io/2020/07/01/technical-debt.html

[5] Various (2005), Test Driven Development. Retrieved from Wikipedia: https://en.wikipedia.org/wiki/Test-driven_development

[6] Cucumber.io (2020), Behaviour Driven Development. Retrieved from: https://cucumber.io/docs/bdd/

[7] Sriram Narayan (2018, February 20), Products Over Projects. Retrieved from: https://martinfowler.com/articles/products-over-projects.html

[8] James Lewis & Martin Fowler (2019, August 21), Microservices Guide. Retrieved from: https://martinfowler.com/microservices/

[9] Laura Delizonna (2017, August 24), High-Performing Teams Need Psychological Safety. Here’s How to Create It. Retrieved from Harvard Business Review: https://hbr.org/2017/08/high-performing-teams-need-psychological-safety-heres-how-to-create-it