We are the first workforce in history paid to automate ourselves out of a job. And honestly? We’re smashing it.
What’s crazy is that us developers are working incredibly hard to build the automation that takes our jobs. We are actively building the system to replace us. With unit tests. And great documentation.
Imagine explaining this to a factory worker in 1985. “So you build the robot, train the robot, review the robot’s work, then the robot gets your desk?” Yes. And we do it with a standup every morning.
I’m not writing this to stop anyone. I build this stuff every day and I genuinely love it. I’m writing it so we do it with our eyes open. So here it is.
We know exactly what we are building.
Every agent, pipeline and workflow we ship turns one more human task into something a machine does for the price of a few tokens. Calling it “developer productivity” is adorable.
Speed is not the skill. Judgement is.
An agent can write a thousand lines before you’ve finished your coffee. It will also confidently fix a bug that never existed. Knowing what should be built, and what definitely shouldn’t, is still ours. Guard it.
We own the architecture.
Hand over the typing, fine. Hand over the design and the decisions too, and congratulations, you’ve written your own redundancy letter. In TypeScript.
We don’t build our replacement for free.
Every workflow we automate creates real value. Some of it should come back to the people who built it, and not just as a pizza party and a Slack message about “efficiencies”.
We look after each other.
Mentor the juniors the industry has quietly stopped hiring. Share the job leads. Answer the message from the developer who got let go on a Tuesday by a calendar invite titled “Quick sync”.
We stay human.
Write your own words. Challenge the code the agent hands you. And remember that behind every CV an AI rejects is a person with a mortgage, rejected by a model trained on code they probably wrote.
Human in the loop. Then human out of the loop.
Right now the industry’s favourite comfort phrase is “human in the loop”. The agent writes the code, the human reviews it. The agent opens the pull request, the human approves it. Everyone relaxes. There’s a human. In the loop. Lovely.
But watch what the loop actually does. Every review we do, every correction we make, every “no, not like that” we type, becomes training data. We are the quality gate the model learns to pass. The better we are at our job in the loop, the faster the loop stops needing us.
First we write the code and the AI suggests. Then the AI writes the code and we review. Then the AI reviews the AI, and we “sign off”. You can see where this is going. Nobody announces the last step. One day the sign off is just a checkbox, and then it’s a cron job.
Human in the loop is not the destination. It’s the onboarding.
I’ve worked in a fully agentic team. The human in the loop was very real, right up until the restructure. So if you’re the human in the loop, make sure you’re the one who designs the loop, not just the one standing in it.
Meanwhile, in our repos
If you want to see the paradox in its natural habitat, look at the files we now write every week. We used to write onboarding docs for new hires. Now we write them for the thing that replaces new hires.
---
name: senior-engineer
description: Everything I learned in 15 years, in a format a model can read in 2 seconds.
---
# Senior Engineer
## Before changing anything
- Trace the code path end to end. Yes, all of it.
- Reuse the existing patterns. The last developer had reasons.
Possibly they were good ones.
## When fixing a bug
- Write a failing test first.
- Fix the bug, not the twelve things near the bug.
## When unsure
- Ask the human. While we still have one.# AGENTS.md
You are working in a production codebase maintained by humans.
Please be kind to them. They are going through a lot.
## Rules
- Keep pull requests small. Reviewers have feelings and limited coffee.
- Do not invent a fix for something that is not broken.
- Do not delete the tests to make the tests pass.
- Run the E2E suite before saying "done". "Done" means it works.
## Architecture
- Follow the boundaries in /docs/architecture.md.
- A developer spent years learning why they exist.
You are getting it for free. You're welcome.The machines are learning from us. Let’s make sure they learn the right things, and that there’s still a seat at the table when they’re done.
Signed, a developer who is still here. For now.