Streamlining Developer Experience: The Power of CI/CD Standardization and Interoperability

A presentation at KCDC 2024 in June 2024 in Kansas City, MO, USA by Jeremy Meiss

Slide 1

Slide 1

As a quick note, I used ChatGPT + DALL-E to generate the images in this presentation, which took entirely too much time because the effort to train the model for what I was trying to get was tedious and time consuming. Also, this talk is going to be very high level, touching on core principles and better practices for standardizing CI/CD and ensuring interoperability. I will say I have been trying to figure out a better word than interoperability, and nothing is really clicking - and I am not going to use synergy. So if you have other suggestions, please let me know.

Slide 2

Slide 2

In the rapidly evolving landscape of modern software development, illustrated here by the CNCF landscape (as of January 29, 2024) Continuous Integration and Continuous Deployment (CI/CD) stand as transformative pillars, reshaping how software is delivered and the very experience of those crafting it.

Slide 3

Slide 3

Jeremy Meiss Co-Founder, DevEx Consultant DevEx Institute https://DevEx.Institute DevOpsDays Kansas City Organizer

Slide 4

Slide 4

Thank you to all of the sponsors which make this event possible.

Slide 5

Slide 5

Let’s start with a definition of DevEx: “…the journey of developers as they learn and deploy technology, which if successful, focuses on eliminating obstacles that hinder a developer or practitioner from achieving success in their endeavors.” -Jessica West, Co-Founder, DevEx Institute

Slide 6

Slide 6

It’s their overall satisfaction and efficiency while working on software projects. It’s the tools, the processes, and the environments that shape their interactions with code, infrastructure, and each other. A positive DevEx is crucial for enhancing productivity as it directly influences how quickly and effectively developers can build, test, and deploy software.

Slide 7

Slide 7

DevEx is such an integral part of the entire development lifecycle - not just if you’re developing tools for use internally, choosing off-the-shelf tools to use, or creating products for other developers and companies to use. That means that the ease of use, reliability, how accessible and understandable documentation, how efficient the build processes are, the effectiveness of testing frameworks, and the smoothness of deployment procedures all have an impact on the overall dev experience.

Slide 8

Slide 8

But DevEx isn’t a new thing. The first mention of “developer experience” as a concept was in a paper was presented at the June 2012 IEEE International Conference on Software and System Process in Zurich. There are references in the paper going back to 1985 that deal with “programmer performance and the effects of the workplace.” A few things stand out in this paper, which is a really great read.

Slide 9

Slide 9

The first is the thought that “New ways of working…would require a better and more comprehensive understanding of developers’ feelings, perceptions, motivations and identification with their tasks in their respective project environments.”

Slide 10

Slide 10

The second was this line, that DevEx could be a means for capturing how devs think and feel about their activities at work, and that improving their experience impacts things like sustained team and project performance.

So all of this interest in DevEx isn’t a new concept - but is largely driven by companies trying to sell you something, from the top down, with very little (if any) focus on developers themselves. We’ve all been there - we’ve been told we need to adopt a new way of working, and then had some new tool from some friend on the C-Suite who says that by simply using it, we’ll be happier, more productive, and instantly a 10x engineer. Meanwhile, you’ve used it before and it’s shit.

Slide 11

Slide 11

I think it’s important to clarify that “DevEx” by default focuses on the “developer”, but we should really view DevEx as a whole part of the lifecycle, and not just for developers only.

Slide 12

Slide 12

Modern Development

We have seen a lot of examples of the significant strides made in improving the developer experience. DevEx strategies have evolved to meet contemporary development challenges and opportunities.

Slide 13

Slide 13

Think about the evolution of the IDE, from text-based editors like Vi to cloud-based IDEs like GitHub Codespaces. From basic, manually-configured environments to sophisticated, cloud-based, and automated setups. We’ve seen a journey which reflects a relentless pursuit of efficiency, usability, and developer productivity.

Slide 14

Slide 14

By streamlining workflows, reducing friction, and providing intuitive tools, a good DevEx empowers developers to focus on creating high-quality code, fostering innovation, and ultimately contributing to faster and more reliable software delivery. In this talk, we will hone in on two critical pillars: standardization and interoperability.

Slide 15

Slide 15

CI/CD’s impact on Developer Experience (DevEx) is profound, offering a dynamic shift in how developers collaborate, create, and deliver software. By automating integration, testing, and deployment processes, CI/CD accelerates development cycles, empowering developers with faster feedback loops, improved code quality, and the ability to iterate swiftly. We’ll talk over the next bit about two ways in which CI/CD can help you achieve DevEx: standardization, and interoperability.

Slide 16

Slide 16

CI/CD standardization brings consistency to development pipelines, reducing friction and enhancing collaboration.

Slide 17

Slide 17

Interoperability ensures seamless integration across diverse toolsets, fostering flexibility in development environments.

Together, they both play pivotal roles in optimizing DevEx and improving overall productivity in the software development lifecycle.

Slide 18

Slide 18

CI/CD Standardization aims to minimize variability, reduce errors, and foster an environment where developers can efficiently collaborate. You can achieve standardization by defining explicit, repeatable code integration, testing, and deployment processes, thus ensuring a smooth development journey. Implementing CI/CD pipeline standardization is crucial for streamlining the development process and enhancing DevEx.

Here are some critical steps and better practices to start with for achieving pipeline standardization.

Slide 19

Slide 19

You can’t make informed decisions and implement the necessary changes to processes, tools, or code that are needed for more efficiency without starting with a thorough assessment and analysis of your current pipelines. It’s important to understand the current state of your CI/CD pipelines, and to get a baseline from which to work with. That means everything from understanding existing workflows, tools, and processes to identifying pain points, bottlenecks, and areas requiring standardization. After assessment, your organization can start setting clear goals and a pathway forward.

Slide 20

Slide 20

When you start setting clear goals, it’s important to know what the desired outcome for your organization is and then be clear with specific objectives, such as improving workflow efficiency, enhancing collaboration, and ensuring consistency across pipelines. Align those goals with the broader business objectives, which helps prioritize your efforts and drive tangible improvements. Then regularly review your progress and adjust as needed to ensure that you’re on track to achieve your goals.

Slide 21

Slide 21

When selecting tools, prioritize compatibility and ease of integration with existing systems and align with standardized practices. Make sure that you are able to use templating and can standardize your configs so you bring consistency throughout the CI/CD process. Whatever you select must be aligned with your organization’s specific requirements and objectives, and the templates and patterns you base your standardization efforts on must be consistent and reliable across all of your projects, but also flexible enough to adapt to project-specific requirements. Easy, right?

Slide 22

Slide 22

  • Store CI/CD pipeline configurations as code in version control systems (e.g., Git). This practice ensures that configurations are versioned, traceable, and easily revertible.
  • Implement branching and pull request strategies to manage changes to CI/CD configurations.

Slide 23

Slide 23

  • Integrate automated testing and validation into the pipeline templates to ensure that standardized configurations produce expected results.
  • Implement code reviews and peer validation to catch configuration errors early in the development process.

Slide 24

Slide 24

  • Create comprehensive documentation that outlines the standardized CI/CD processes, including workflows, configurations, and best practices.
  • Provide training sessions for development teams to ensure they understand and can effectively use the standardized CI/CD pipeline templates.

Slide 25

Slide 25

Once you’ve ensured the core practices are in place, it’s time to look at some key, optimized practices that can help you take the next step in your standardization efforts.

Slide 26

Slide 26

  • Set up monitoring and alerting for your CI/CD pipelines to detect issues and bottlenecks in real-time.
  • Establish a culture of continuous improvement by regularly reviewing and updating standardized pipelines based on feedback and evolving project requirements.

Slide 27

Slide 27

Implementing CI/CD Standardization Governance and Compliance Implement governance policies to enforce pipeline standards Validate compliance with industry regulations / internal standards Regularly audit and assess adherence to standardized practices

Slide 28

Slide 28

Implementing CI/CD Standardization Scaling and Adaptation Ensure standardized templates can scale and adapt Maintain flexibility to accommodate unique project requirements

Slide 29

Slide 29

Implementing CI/CD Standardization Feedback Loop and Collaboration Foster collaborative environments where feedback & contributions encouraged Continuously communicate benefits of standardized pipelines & celebrate successes

Slide 30

Slide 30

Implementing these better practices will help you improve your CI/CD pipeline and the overall Developer Experience and quality of your software delivery process. However, it’s not the finish line. Let’s talk about the role interoperability plays in your CI/CD systems.

Slide 31

Slide 31

Interoperability in CI/CD (Continuous Integration and Continuous Delivery) systems refers to the ability of different tools, technologies, and components within a CI/CD ecosystem to work seamlessly together. It ensures that various CI/CD pipeline parts, including source code repositories, build systems, testing frameworks, deployment platforms, and monitoring tools, can communicate, integrate, and exchange data effectively without compatibility issues or disruptions.

The importance of interoperability in CI/CD systems for collaboration is multifaceted:

Slide 32

Slide 32

Streamlined workflows in CI/CD systems refers to the efficient and optimized processes that enable the continuous integration, delivery, and deployment of software applications. It’s about minimizing manual effort by automating repetitive tasks like building, testing, and deploying applications, speeding up software delivery cycles. Reduce development overhead by removing unnecessary steps and redundant processes, freeing developers to focus on core activities and maximize productivity. Streamlined workflows lead to faster software delivery, improved product quality through automation, and a better developer experience due to smoother workflows and less manual intervention.

Slide 33

Slide 33

Cross-functional collaboration becomes necessary to drive innovation, efficiency, and customer value through your CI/CD systems, especially when you have varying tool preferences or use different systems between departments. Reduce miscommunication by fostering a shared understanding of project goals across Development, Operations, QA, and other teams, allowing everyone to work towards the same objectives. Share knowledge, tools, and infrastructure to optimize your resource allocation, maximize productivity, and reduces delays. Leverage the diverse strengths and expertise of each team, and foster innovation, improve your problem-solving, and ultimately deliver high-quality software products.

Slide 34

Slide 34

Prioritizing flexibility and adaptability allows organizations to integrate with diverse toolsets and accommodate varying development needs. By bridging gaps between different technologies and systems you can create central hubs that connect other parts and enhance the flexibility of CI/CD pipelines and developer workflows, ultimately promoting a more efficient and collaborative development environment and experience. Backstage is a perfect example of this.

Slide 35

Slide 35

Once you have adopted the above practices or already have them, the following can help you reach “Advanced Mode,” taking your organization to another level within the DevEx world and can continue advancing across several aspects.

Slide 36

Slide 36

Ecosystem integration in CI/CD systems involves seamlessly incorporating and interacting with various tools, services, and platforms within the software development and delivery ecosystem. From VCS, build automation, testing frameworks, deployment platforms, and observability, integration allows for assembling a customized toolchain that’s tailored to your specific needs. Add in the ability to automate end-to-end processes, and you can create a more efficient and collaborative development environment and experience, and then aggregate all the information into a single view for greater visibility.

Slide 37

Slide 37

Participation in the broader ecosystem, like communities, open source projects, forums, and professional groups centered around the tools you use, vastly enriches DevEx for your company. It offers developers a chance to contribute to larger projects, learn from peers outside their organization, and stay abreast of industry trends and better practices. Encouraging this helps get ahead of potential challenges by upping your collaboration and raising awareness. Create an external community to help external users give feedback and contribute to your company’s success and DevEx.

Slide 38

Slide 38

Two crucial components of CI/CD systems are troubleshooting and debugging, both ensuring the smooth operation and reliability of your pipelines. Effectively implementing them requires comprehensive monitoring and logging capabilities throughout the CI/CD pipeline with each stage instrumented to capture valuable data and insights. Automation also plays a pivotal role in streamlining troubleshooting and debugging processes by integrating testing, validation, and verification steps into the pipeline. Be proactive to minimize manual effort, accelerate issue resolution, and enhance overall reliability.

Slide 39

Slide 39

Cross-platform deployment offers a single method to package and deliver applications across various platforms (operating systems, cloud services, etc.). This simplifies CI/CD pipelines by removing the need for platform-specific deployment configurations. By abstracting platform complexities, cross-platform deployment reduces overhead in managing deployments. This saves time and effort, improves consistency, and leads to more reliable deployments. Cross-platform deployment allows applications to reach wider audiences on desktops, mobile devices, and cloud environments. This maximizes software accessibility, marketability, and competitiveness, ultimately driving business growth.

Slide 40

Slide 40

In essence, implementing CI/CD interoperability acts as a bridge, connecting different parts of the development and delivery process, fostering collaboration, and ensuring that teams can work cohesively and efficiently, even when using diverse toolsets and technologies. This flexibility and adaptability is essential for modern software development, where agility and collaboration are paramount.

Slide 41

Slide 41

CI/CD Interoperability Implementation challenges and remedies Challenges Remedy Diverse Toolsets & Ecosystems Prioritize critical dependendencies, objectives Data formats and schema differences Implement unified data formats Authentication and Authorization Standardize methods, integrate governance Versioning and compatibility testing Clear versioning policies, regular compatibility testing Lack of documentation Prioritize efforts + allocate resources, implement standards + process

Slide 42

Slide 42

By applying these strategies and tips, organizations can overcome the common interoperability challenges and establish robust connections between Spinnaker, Backstage, and other CI/CD tools, fostering a more seamless and integrated development ecosystem.The efficiencies gained by making sure you’re using tools that provide CI/CD standardization as well as being interoperable between all of the systems your developers are using is at the core of what Developer Experience really is about…

Slide 43

Slide 43

The level of investment that a company invests in DevEx can be a reflection of a company’s values towards its employees, especially its developers. A strong focus on DevEx shows a commitment to employee well-being and efficiency. And prioritizing DevEx helps foster a culture of excellence and innovation. When developers are provided with the right tools, support, and environment, they are more likely to produce high-quality work and push the boundaries of what’s possible. Reply Copy link Read more on X

Slide 44

Slide 44

DevEx is… “ruthlessly eliminating barriers (and blockers) that keep your developers from being successful”

Slide 45

Slide 45

Thank You. /in/jeremymeiss @IAmJerdog @jerdog @jerdog@hachyderm.io Feedback is appreciated.