“Empathy should be woven into the fabric of DevOps”
Empathy is more important than you’d think for DevOps. As Jackie Balzer explains, building a CI/CD interface and system is a chance to make something beautiful and easy to use. Paying attention to these details to create a frictionless experience is a kindness to your eventual users.
JAXenter: Why is empathy necessary when developing a CI/CD platform?
Jackie Balzer: Deploying code to production servers is scary. As a DevOps engineer, you assume a lot of responsibility for other engineers’ work (and often, in turn, their errors!). As a developer, you fear that your code will have bugs and delay the deployment (and thus your teammates) while you fix mistakes, or worse — that the website breaks entirely because of your changes, leaving your users to see your high-visibility mistake.
Considering how everyone on both sides of this stressful process feel is critical to identifying and solving pain points. What’s it like for the DevOps engineer to stay at work late repeatedly running deploy commands while engineers fix their bugs, constantly checking error logs for engineers who don’t have access? What’s it like for the engineer who started last week, whose code has no automated tests, broke the website once it faced production data? What’s it like for your favorite delivery pizza place to become permanently associated with stressful late build nights in the office?
By empathizing with your team and understanding how each part of the process affects everyone, you can work to build a system that solves for the problems, providing a CI/CD platform that relieves the stress and responsibility on the DevOps team by giving engineers the opportunity to deploy their own code, safely and effectively.
JAXenter: What kind of values does Adobe adhere to when developing platforms? Can you explain why these things are necessary?
Jackie Balzer: We have a strong culture of everyone being responsible for their code, what they deploy, and the health and well-being of the website as a whole. “Big-bang” releases where DevOps engineers build out other engineers’ changes make it much harder to adhere to these values: this model fosters too much of a “throw responsibility over the wall” mentality.
The goal for our CI/CD platform and process were to create a low barrier of entry to safe and effective deployments. By creating a common interface, opinionated workflow for developer accountability and programming safeguards where deployment flows have or may break down, we’ve built a system that takes what was once a high-stakes, high-risk monolithic task and makes it routine and low-risk, empowering engineers to feel confident having ownership over their deployments.
JAXenter: How do we bring empathy into DevOps deployments? At what stage would you suggest it be brought in?
Jackie Balzer: I think empathy should be woven into the fabric of DevOps and deploying. There are a lot of questions you can ask yourself and your team to think about: what are the repetitive tasks or pain points for the DevOps team that can be automated or handled by the creation of a tool? Which parts of the deployment process are most likely to cause problems, break down or create stress amongst the team? Are there repeat offenses that can be prevented with the creation of a more thoughtful process? What parts of deploying are important to the engineers, and which parts do they struggle with, fear or like the most?
A great CI/CD platform should be something that anyone can use – from your most skilled DevOps engineers to designers who are only familiar enough with code and systems to make the most rudimentary changes. When you think about and talk to the different types of people that will be using your platform, on both sides of the process and of different skills and backgrounds, you get a better picture of which parts of deploying are hard, unclear, or scary, and can make the platform better to relieve that friction for everyone involved.
JAXenter: What are the key challenges in adopting this kind of build structure? Where do developers most often fall short?
Jackie Balzer: A large part of the success of a good CI/CD platform is in the creation of a common interface and set of principles to adhere to across projects. Since CI/CD is typically a very code-oriented project, it can be easy to overlook the need for quality UI/UX on your platform, even though a clear, well-designed and easy-to-use interface help foster well-executed deployments.
Changing course on long-held beliefs or processes, or fear that an opinionated workflow might hinder speed or output are common challenges to overcome when adopting or creating a new CI/CD platform. However, finding the right flow, agreeing on key inarguable rules and requirements, and including designers and design-minded feedback are critical to defining best practices for your team and product.
JAXenter: What will attendees be able to take away from your session?
Jackie Balzer: In the session, I’m going to talk about how we built our own CI/CD platform at Adobe, the lessons we learned along the way and the values we embody as we think about deployments, which can be valuable and useful to all engineering and DevOps teams.
Takeaways will include ways to design a process that empowers engineers to manage their own deploys from start to finish safely, effectively and quickly, including how UI/UX benefits the deployment process; how our team structure and culture allow us to quickly identify and iterate on improvements to the CI/CD platform, taking design-thinking and DevOps/developer feedback into consideration; and how the operational details of our CI/CD platform tie all these together with deploy queuing, branch/merge management, rollback tools and more.