Tech Insights

CI/CD for Developers

CI/CD is usually sold as a deployment story. For the people writing the code, it is really a feedback story - and getting the feedback loop right changes how every day feels.

Developer receiving fast feedback from a CI/CD pipeline

TL;DR

For developers, CI/CD is less a deployment story than a feedback loop: the time between making a mistake and finding out. Fast checks, small batches, gating on correctness while only warning on style, and keeping the pipeline trustworthy shrink that gap and make every day better.

On this page

The pipeline you actually live in

Ask most developers what CI/CD is and you will hear about deployments, environments, and YAML. That is the platform engineer’s view, and it is real, but it is not the one that shapes your Tuesday afternoon. From the developer’s seat, CI/CD is something smaller and far more personal: it is the feedback loop. It is the gap between making a mistake and finding out about it. Everything that matters about continuous integration - small branches, fast tests, green main - is in service of shrinking that gap.

I have watched teams pour money into deployment tooling while their developers waited eleven minutes for a PR check that failed on a missing semicolon. They had bought the outer-loop story and ignored the inner loop, which is where the day is actually spent. The lesson stuck with me: optimize the loop you live in first.

Why fast feedback is not a nice-to-have

There is a simple economic fact under all of this. A bug you catch ten seconds after writing it costs you almost nothing - the whole problem is still loaded in your head. The same bug found in code review costs a round-trip. Found by a teammate three days later, it costs an investigation, a context switch, and the slow erosion of trust in the codebase. The cost of a defect rises with the time-to-detection, and it rises steeply.

This is why Humble and Farley built Continuous Delivery around the deployment pipeline as a feedback machine, and why Fowler keeps insisting that continuous integration is a practice, not a product. You do not “have CI” because you installed a CI server. You have CI when every developer integrates small changes into a shared mainline many times a day and the system tells them, quickly, whether they broke anything. The tooling is just how you avoid nagging each other to do it.

Small batches are the whole game

If I could give one piece of advice to a team trying to get faster, it would not be about tooling at all. It would be: make your changes smaller. Short-lived branches, small pull requests, frequent merges. Accelerate found that trunk-based development - short branches, integrated to main daily - correlates with high-performing teams, and the mechanism is not mysterious. Small diffs review better. They conflict less. They are easy to revert when they go wrong. They keep your work close to everyone else’s so the eventual merge is a non-event.

The opposite - the heroic two-week branch - feels productive while you are in it and then detonates at merge time. You spend a day reconciling with a main branch that moved on without you, and you discover integration problems precisely when they are most expensive to fix. Large batches hide their cost until the end. That is what makes them dangerous.

Gate on correctness, warn on taste

A PR pipeline is a set of opinions about what is allowed to reach main. The most important design decision you will make is which of those opinions are required and which merely advisory. My rule: gate on correctness, warn on taste. Failing tests, type errors, a broken build, lint violations on rules you have agreed to - these block the merge, no exceptions. Bundle-size nudges, spelling suggestions, coverage on files you did not touch - these report and step aside.

Get this balance wrong in either direction and the pipeline loses its value. Over-gate, and people learn to route around it - the admin merge on a Friday, the --no-verify commit under deadline. Under-gate, and regressions stroll onto main and the suite stops being trusted. A required check that fails for reasons a sensible developer would override is not protecting quality; it is training people to ignore checks. Spend ten minutes a quarter re-sorting that list. It is some of the highest-leverage work you will do.

Protect the trust, not just the build

Underneath the mechanics is something softer and more important: trust. The value of a test suite is exactly equal to how much the team trusts it. One flaky test - red sometimes, green sometimes, code unchanged - is a crack in that trust, because it teaches everyone that red does not necessarily mean broken. A dozen flakes and you have a suite nobody reads, where a genuine regression hides in plain sight among the noise. Treat flakiness as a defect with its own response: quarantine it fast, find the root cause, then fix it or delete it. A test you cannot trust has negative value.

The same logic applies to a broken main. The instant main goes red, the right move is almost always to revert and restore green, then redo the work calmly on a fresh branch. Reverting is not an admission of failure; it is respect for everyone whose flow depends on a working trunk.

The point of all the machinery

Here is what the automation is really for. When the robots have already checked the formatting, the types, the lint, the tests, your human reviewers are freed from the mechanical drudgery and can spend their attention on the only questions that need a person: Is this the right design? Will the next engineer understand it? Does it solve the actual problem? Automated checks answer “is it correct?” so that people can answer “is it wise?”

That is the quiet promise of CI/CD for developers. Not a fancy deployment dashboard, but a tight, trustworthy feedback loop that catches your mistakes while they are still cheap and lets your colleagues review your thinking instead of your whitespace. Keep main green, keep batches small, keep feedback fast - and shipping stops being an event you brace for. It becomes, simply, how you work.

Key takeaways 5

  1. For developers, CI/CD is mainly a feedback loop.
  2. Slow pipelines cost focus and encourage bigger, riskier changes.
  3. Small batches and short-lived branches make integration easy.
  4. Gate merges on correctness; only warn on matters of taste.
  5. Flaky tests destroy trust in the pipeline, so fix them fast.

Watch & learn

CI/CD Tutorial using GitHub Actions - Automated Testing & Automated DeploymentsTom Shaw · YouTube

Frequently asked questions

What is the difference between continuous integration and continuous delivery?

Continuous integration means merging small changes into the main branch often, with automated builds and tests. Continuous delivery keeps that main branch always deployable, so releasing is a routine, low-risk step.

How fast should a CI pipeline be?

Ideally developers get feedback on a pull request within about ten minutes. Longer waits lead to context switching and larger, riskier batches of changes.

Why are flaky tests a problem?

When tests fail randomly, developers learn to ignore failures and re-run builds, which hides real bugs and erodes trust in the whole pipeline.

Tech InsightsProjects & Practice#ci-cd#continuous-integration#github-actions#trunk-based-development#developer-workflow

Comments

No comments yet. Start the conversation.

Comments are reviewed before they appear. Be kind; one link max.

Go deeper with the free masterclass

Workshop, PDF handbook and curated resources for “CI/CD for Developers”.

Open AL Academy ↗
Keep reading

Related articles