DevOps
Once upon a time, there were software developers and IT operations teams. The boundary between them was often concrete and antagonistic. Ops people were incentivized to keep things stable while devs were incentivized to push new features. As software became systems (of software), this dualistic mindset was a blocker. Also, linear “code release” workflows didn’t meet the needs of emerging interrelated software and spin-up-spin-down infrastructures to support it.
Enter DevOps. “DevOps” is not a role someone plays or the tools they use. DevOps is a restructuring of the way an organization thinks, behaves and manages their resources.
Like all nonlinear (systems) approaches… DevOps is a practice. Or, more accurately, a group of practices. Counterintuitively, these practices showed us that frequent small releases from developers improve stability and enable Ops to respond more quickly to issues. Over time, the practices have matured beyond the relationship between Dev and Ops, towards facilitating cross functional collaboration.
The practices have positive outcomes, like increased reliability and faster time to market. But those outcomes are not the goal. The goal is optimizing for learning.
Learning teams are nonlinear thinking teams, who consistently improve their collaboration skills. They think about the system that supports their work and look for ways to improve it, make it more efficient, and fit their circumstances. They understand current metrics and ensure that changes improve the whole system.
DevOps is a cultural shift towards trust and psychological safety, ensuring that teams are able to experiment and learn. Practitioners design fast feedback, learn from outages and incidents, think holistically together about the problem spaces, communicate effectively to amplify their learnings. Together, they codify that new knowledge so others can come along on the journey.
Inevitably, this mindset seeps into all areas of work. If done well, the changes created, in the people and in the technology, are emergent … the whole becomes greater than the sum of its parts.
DevOps is a systemic view of the software development lifecycle that blends with other current practices. When done well, the software development process becomes more humane, sustainable and enjoyable. As long as the speed of shipping is harmonized with the speed of learning.
A universal, concrete definition of DevOps practices is impossible to find. This is both a strength and weakness. Ambiguity has blocked to wider adoption. There is no one solution that’s right for everyone. Including DevOps! This approach is not a fit for everyone, everywhere. People need to experiment, learn and consider what fits their circumstances. But if they do, they won’t be simply “Doing What Netflix Does”. They’ll be deliberative about designing change.
Accelerate
The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations
by Nicole Forsgren, Jez Humble, Gene Kim
Accelerate uses data collected from the State Of DevOps Reports over a number of years, to prove the correlation between DevOps practices and software delivery (and organizational) performance. The book doesn’t necessarily introduce new ideas, but it does provides the science to back up investment in DevOps practices like CI/CD or smaller, more frequent deployments.
IT Revolutions' DevOps Enterprise Summits
Sessions at the DevOps Enterprise Summit feature organizations that have been around for decades (sometimes centuries). There are no unicorns here. Instead, there are sessions going back to 2014 describing the DevOps journey of Target, Capital One, and Walt Disney. Includes authors like Matthew Skelton, Jon Smart, Dominica Degrandis as well as renowned DevOps practitioners like John Allspaw and John Willis.
Software Delivery in Small Batches
hosted by Adam Hawkins
Small Batches has an interesting format -- bitesized (5 min) overviews of a specific topic, interspersed with occasional longer (weekend) episodes. Check the website for further episodes.
DevOps Learning Path
created by A Cloud Guru
The skills and practices needed vary and there are a lot of great trainings available in things like K8s, containers and python. Here's a good overview of a comprehensive curriculum.
DevOps is not a goal, but a never-ending process of continual improvement. -- Jez Humble