Laziness Engineering

What is Laziness Engineering?

Lets face it - if you can avoid doing it, you would! Do what I hear you ask? well, anything really.

More specifically I’m talking about building and running large-scale software systems. There are a lot of things that we do in software development that are just plain hard work, and if we can avoid doing them, then we should!

The good news is that you dont have to work hard, but you do have to work hard to be lazy.

The Benefits of Laziness Engineering

There are lots of Laziness Engineering approaches, but we call them “productivity” tools and processes, because you dont get a pay rise for being lazy - but you should!

The less you have to do, the more you can do. It all comes down to being better value for money as an engineer - after all, we’re not cheap resources.

I love CI/CD pipelines. When I started out (before we even called it “engineering”), we passed zip files around on floppy disks. You had to remember to run tests, build, and upload everything by hand. Inevitably, someone forgot a step, and production broke. It was chaos.

Someone invented Make, which meant I only had to figure it out once, put it in a Makefile, and then just run make build. Suddenly, the build was one command—and I didn’t have to think about it.

Makefiles are awesome, and definitely still have a big place, but things got more complicated (as they always do).

Makefiles are awesome and still have their place, but things always get more complicated. Enter CI/CD pipelines: now you can hand off everything—linting, static analysis, SBOMs, docs, security scans, dependency updates, code formatting, coverage, test reporting, and more. All automated, all the time, on every commit or pull request.

Something broken? Let the pipeline tell you. Need to keep dependencies fresh? Let Dependabot handle it, and let your pipeline do the rest.

Of course, you still have to write good tests. If you don’t, the pipeline will happily deploy your broken code. But that’s still better than manually checking every build. And with the cloud, you can spin up ephemeral environments for every branch—test everything, auto-merge if it passes, and if not, the pipeline tells you exactly what failed.

If something slips through and gets deployed, that’s on you. But now you know what broke—so write a test for it! Over time, your test suite gets stronger, catches more edge cases, and you can trust what you ship.

CI/CD is great, but it can be a bit slow. That’s where Git hooks come in. Pre-commit hooks let you run tools before you even make a commit, catching dumb mistakes before they hit the pipeline.

Take it to the extreme: if your tests and pipeline are solid, why wait for someone to approve your code? Merge it yourself! If it breaks, fix it. If it works, ship it faster.

And now, with AI agents, you can automate even more. Let the tools do the work, so you can focus on what matters—like coffee, podcasts, or even going outside. The possibilities are endless!

It sounds too good to be true, but if you repeat the process enough thats exactly where you end up.

CI/CD is just one example, but the principle applies to everything. You can automate, delegate or avoid pretty much your whole job. Whats more, your team and your boss will love you for it!

Be lazy and let the tools do the work for you. Focus on the things that really matter. Things like Coffee, and the latest episode of whatever podcast you’re into. You can even go outside and get some fresh air!

The possibilities are endless!