I’ve been doing a lot of thinking recently about the interaction between software development and three key areas: operations, data, and design. After conversations this week with Dell’s James Urquhart (courtesy of the enStratius acquisition) and Rod Smith from IBM’s emerging-tech group, I decided that it’s worth writing up to hopefully drive some discussion around these ideas.
By starting at the center of the below diagram with developers and then blending them with any of operations, data, and design, a number of key trends emerge from not only software development, but more nascently from business as well. While RedMonk’s traditionally been a firm that looks at the bleeding edge of software, this perspective shows that the same ideas reflect upon the function of organizations as a whole.
And yes, I’m very much abusing the purpose of Venn diagrams because I’m going inside-out rather than outside-in, but it gets the idea across. Let’s start at the top and work our way around first the immediate intersections with development, then the more complex interactions.
Development + Operations = DevOps ➡ Agile, collaborative business
The idea of DevOps is most simply described to developers as the extension of agile software development to operations. It’s about bringing (1) software-development techniques like version control, testing, and collaborative development and (2) rapid iteration and minimum viable products (MVPs) to the world of systems administration and infrastructure.
On the side of software development, it’s about transitioning toward a philosophy of infrastructure as code — defining what your datacenter or cloud looks like in terms of tools such as Puppet and Chef. This enables much easier application of basic software tools such as storing system configurations in Git and using continuous integration on your infrastructure and not just the code that runs on it. By learning from the distributed, asynchronous collaboration found particularly in open-source communities and largely virtual companies (e.g. GitHub), teams can benefit greatly in terms of the quality of people they can hire as well as their ability to collaborate more effectively.
On the side of agility, as trends like the shift to cloud-based systems continue to accelerate, it’s increasingly critical to work in a more agile fashion that decreases cycle times and thus increases the frequency at which teams can iterate on an MVP. This rapid iteration also means that when things break, as they inevitably do, there’s already a process in place to not just fix them quickly but to get those fixes to users quickly without an epic series of manual hacks.
For DevOps, it’s about extending the cycles beyond just development teams all the way through operations, so you can iterate all the way from development to production using continuous delivery or continuous deployment. Companies like Etsy and Netflix deploy as much as 100 times per day, which blows the quarterly deployment model out of the water. When you change anything like this by an order of magnitude, you have the potential to not just save time but to transform how people work. Some of that transformation is a prerequisite, while some of it is a consequence of making organizational and tooling changes.
Carrying this into broader business, it means shifting the entire company to an agile model that’s highly collaborative. The collaborative aspect is most easily accomplished not by gathering 1000 people around a real-life water cooler but rather by making the whole company social, along the lines of Salesforce Chatter, IBM Social Business, Yammer, and Jive.
Open-source communities have pioneered the kinds of technologies needed to collaborate effectively in our increasingly connected world. Look at IRC, archived mailing lists, wikis, and more. All of them were pioneered by open-source developers. What’s happening in the world of “social business” today is the same thing that happened 25 years ago in the open-source world (IRC was created in 1988). Those developers have lived in the future ever since, while the rest of the world is slowly picking up the importance of improved collaboration and distributed workforces.
Below is a video of GitHub’s Ryan Tomayko from Monktoberfest 2012 talking about how GitHub (the company, not the product) works incredibly effectively as a distributed organization:
Another video worth watching is from this year’s Monktoberfest where GitHub’s Adam Roben talks about the importance of face time in distributed companies:
While I won’t embed it, there’s another classic video on distributed development by Zach Urlocker (former COO Zendesk and previously running product at MySQL) from Monki Gras 2012. Here’s the writeup.
This interaction between development and operations is a key trend in software, which was been foreshadowed by open-source development and will be followed by its enactment across the broader business.
Disclosure: Dell, IBM, and Salesforce.com are clients. Puppet Labs, Microsoft (Yammer), and GitHub have been clients. Jive, Opscode, Etsy, and Netflix are not not clients.