🟢 Available for work

How better CI/CD pipelines reduce client risk

Most deployment problems aren’t caused by code. They’re caused by the pipeline.

Most deployment problems are caused by the pipeline, not code.

For instance, before we started implementing development pipelines, we’d consistently have to deal with unweildy git merge conflicts.

In particular, compiled .css and .js caused a multitude of problems.

On many occasions, we ended up manually stitching together the files as dealing with the conflicts born out of merge conflicts were just too complex to handle natively.

In addition you might have experience problems like;

  • Builds that work locally but fail on production
  • Missing assets or files on production
  • Inconsistent environments (productions, staging, development, local)
  • Having to manually deploy through a series of repeating steps each time you launch a feature

Pipelines are about risk, not speed

A good pipeline doesn’t just automate work, it;

  • Reduces risk
  • Prevents human error
  • Creates stable, predictable releases
  • Protects production

Starting simple != Staying simple

Things usually start simple with a project pipeline;

  • You build locally
  • Upload files to server
  • Push to production
  • Check site manually, to make sure it hasn’t broken

This can work OK when you’re starting out, and traffic to the site is relatively low. But inevitably one or more of these is going to happen

  • Traffic will increase / more eyes on the project
  • The build will become more complex

Whether it’s one or both, this will be true: Risk will increase

Small changes can make a big difference

Improvement #1 — compile and build assets in pipeline, not locally

Problem

  • Local builds can vary between machines
  • Files get forgotten or misplaced
  • Environments drift

Solution

Pipeline builds production-ready assets automatically

Benefits

  • Consistent builds
  • Predictable deployments
  • Fewer/no surprises

Improvement #2 — Standardise Your Environment

Problem

  • Node versions
  • PHP Versions
  • Dependancies

Solution

Lock versions to project

Benefits

  • Easily to reproduce issues
  • Fewer/no pipeline failures

Improvement #3 — Add Deployment Checks

Problem

Errors reach production

Solution

Automated checks

Benefits

  • Build succeeds
  • Required files are present
  • Deployment completes without errors
  • Confidence in deployment release

Improvement #4 — Automate Repetitive Tasks

One that all the developers will be familiar with — we’re just applying it to the deployment pipeline.

Problem

Manual steps are open to user error

Solution

Automate where you’re able

Benefits

  • Fewer human errors
  • Faster deployments
  • More consistent results

What a good pipeline feels like

A good pipeline is like delegating a bunch of tasks to someone who is not prone the human mistakes. It gives you less stress, fewer emergencies, more confidence in predictable releases and (if working in a team) a happier team.

In the end, the best pipeline is the one you don’t have to think about.

Just start with 1 small change, then build from there.

April 14th

2026
✍️ Blog AI

AI and Human Creativity: My Conflicted Thoughts on Artificial Intelligence

A personal reflection on artificial intelligence, creativity, and work—exploring fear, ethics, and why the human journey behind art still matters in the age of A.I.

Read more ->
AI and Human Creativity: My Conflicted Thoughts on Artificial Intelligence

March 31st

2026
✍️ Blog Development Pipeline

Why You Should Never Commit Compiled CSS and JS to Git

Learn why committing compiled CSS and JavaScript to Git creates merge conflicts, deployment risk, and unreliable builds — and how to manage build artifacts safely with CI/CD.

Read more ->
Why You Should Never Commit Compiled CSS and JS to Git

March 17th

2026
✍️ Blog

Why most WordPress load 1mb of unused CSS

Why a WordPress site loading unused CSS is an architecture problem, not a CSS one.

Read more ->
Why most WordPress load 1mb of unused CSS
See more moments ->
© 1985-2026 Carl Lister