One step ahead for lead engineering companies is to have a fast, reliable and straight-to-the-point CI pipeline. According with DORA Report 2024 (DevOps Four-Key Metrics) CI practices reduce the cost of ongoing software development and maintenance, in addition to increase the productivity of the teams.
The objective of a CI pipeline is to improve the Software Engineer Full-Potential, by the way we have some aspects that contribute with the DevEx (Developer Experience) to achieve this goal:
- Reduce the Cognitive Load Tasks: Using CI tools that support well-known or familiar programming languages, like YAML or SDKs in developers’ preferred languages, helps reduce the cognitive load caused by unfamiliar DSLs — less new things, more the same.
- Keep the Developer Flow State: Simplified CI tools and targeted training help developers maintain flow state by streamlining deployment workflows and reducing the cognitive burden of managing rarely-used tools — a music and a great headphone.
- Increase the Feedback Loops: Improving CI pipeline observability, building a knowledge base of common errors, and integrating an LLM-based bot can accelerate feedback loops and enable developers to troubleshoot issues independently — logs is the new old feedback.
For now, we split at five stages of a CI pipeline to put in practice a good DevEx for your teammates:
- Automate Builds: Automated builds ensure new changes integrate with the existing code and verify your dependencies. With a well-configured CI pipeline, the build step prevent a codification error from being merged into the main branch, protecting the work of other team members who depend on a stable codebase. When a build is successful, it qualifies the application for further testing.
Example tools: Gradle, Maven. - Shift-Left Testing: In a CI pipeline, anticipating defects is a paramount and there are tools that can do this even on the developer’s machine during coding time. However, having a second defense in the pipeline can be a winning strategy.
Example tools: SonarQube IDE. - Automate Tests: Tests it’s the midway of a CI pipeline. We have classic Test Pyramid for this stage, starting with Unit Tests (focused on faster and rapid feedback for developer), Integration Tests (focused on testing the another part of the code without changed) and End-to-End Tests (focused on Priority-Zero-Test strategy: balance with critical flows and great coverage).
Example tools: Pytest and Jest (for Unit), TestContainers and Mocha (for Integration), Cypress and Robot Framework (for E2E). - Quality Check: Test Observability Dashboards can produce a bird’s eye view of the release, comparing it to previous versions, showing flaky tests, presenting new areas in the code contain new defects.
Example tools: Datadog or Grafana. - Security Scan: Integrating security checks into your CI pipeline ensures your code stays maintainable and secure. Tools like SonarQube can automatically scan your codebase to identify issues such as bugs, code smells and technical debt, supporting a great feedback loop for the developer.
Example tools: SNYK or SonarQube.
All of these practices take a certain amount of effort to implement, but once done, it doesn’t take much effort to maintain — Martin Fowler.