DevOps, for us, isn’t a title; it’s a mindset. You simply cannot deliver a modern enterprise cloud platform without considering how you’re delivering it. At a certain scale, DevOps can no longer be an option or a single engineer on the team; it is a cultural mindset that underpins our ability to succeed.
What’s The DevOps Mindset?
The mindset of DevOps is different than a traditional software engineering approach—great DevOps engineers stand at the edge of repos and look outward, instead of only focusing inward. They’re concerned with all of the automation and supporting infrastructure required to maximize efficiencies in delivering defect-free software to our customers. We get more than 4 billion requests daily, which means “once in a million” happens 4,000 times a day. You can’t even begin to approach solving problems at that scale without DevOps. You’re thinking about tooling, testing, automation, and deployment best practices that seek to prohibit defects from affect your customers.
How We Interview for DevOps Mindset
The prerequisite of having a DevOps mindset is included at all levels of our Software Engineering, Software Engineering:Quality, and Software Engineering:Reliability interview process. Some of the questions we ask in interviews to ensure we’re hiring great engineers with a DevOps mindset are centered around quality, automation, virtualization, scalability, and ephemeral resource utilization.
So once you submit a pull request, how does that code get into production?
Even an introductory question like this can quickly assess the DevOps experience of the software engineer. If they can speak intelligently about their continuous integration or deployment pipelines, explain what test automation gates are applied where and why, and discuss trade-offs they’ve encountered, we’re off to a great start!
For more senior candidates, we will typically dive into a non-trivial project around virtualization, how their build management software scales, or their long-term vision for maintainability of deployable artifacts and reusable parts.
How are you enabling engineers around you to move faster?
What steps are you taking to prohibit defects from affecting customers?
Do you have examples of optimizations in delivery which allow you to fail gracefully and learn?
Why would it be important to maximize the opportunities for software engineers to fail?
At the end of the day, a senior DevOps mindset is one that seeks to make it incredibly easy for software engineers to get code to production while minimizing the customer impact of defects. We learn when we experiment; we learn when we fail. The DevOps mindset creates an ecosystem in which we can fail gracefully and maximize our learning on a daily basis.
What Does it Look like in Practice?
In practice, we’ve invested heavily in making sure we’re building the tooling and systems that allow our engineering teams to move faster and easily embrace the mindset. We’ve even got teams specifically focused on our engineering systems at large, patterns, and infrastructure management — making them better for everyone, and most importantly evangelizing the DevOps mindset to our scrum teams to use them!
These teams own standardizing things like Jenkins, GitHub, JIRA integrations, Kubernetes, Gemfury, the public Helm chart repo & Docker registry, Yeoman generators, and our deployment processes. Sounds like a lot, right? It is! Factoring out common systems allows our engineering teams to re-use the good stuff and contribute back as they’re building new features and products. Everyone needs to embrace DevOps, but we’re still pragmatic about engineering efficiencies.
Perhaps most importantly, we encourage our engineers to share their learnings and lean into iteratively approaching the standards that we socialize. Any problem worth solving is worth teaching the solution to someone else, especially as we drive consistency in cloud architectures and software patterns across our organization; there is a huge chance someone else will benefit from you sharing acquired knowledge. As we continue to scale, containerize our workloads, and implement site reliability best practices for our infrastructure the importance of DevOps will increase across all layers of our stack. We’re excited to expand the DevOps mindset in all engineering activities as we strive for operational excellence in how we build & deliver a world-class platform for our customers.