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.
DevOps is not a goal, but a never-ending process of continual improvement.― Jez Humble
You Might Enjoy …
November 29 – 30, 2022
YOW! London 2022
Internationally-recognized speakers, including some mentioned in this edition, explore emerging technologies and technology-agnostic best practices in the software industry.
You can attend in person or online.