Skip to content

Claude Code, but for backend people

Not a demo reel. How I actually use Claude Code for queue workers, schema migrations, and payment code where wrong answers cost RM.

· 4 min read

Claude Code sold itself to me on one Saturday at a mamak in Bangsar when I shipped a BullMQ retry policy with error-class-specific backoffs in about 90 minutes. It was not the speed. It was that I got to think at the policy layer — "5xx should back off longer than 429, 401 should not retry at all" — while the agent wrote the TypeScript.

That is the whole bet for backend people. The model is fine at frontend. It is genuinely useful on backend work where you have tests, types, and a runtime that screams when you break the contract.

What I actually ship with it

I keep a few rules on any project Claude Code touches:

  1. Schema first. Drizzle schema lives in one file. Anything touching persistence starts there. The agent is very good at generating CRUD + types from a schema. It is bad at inferring one from fragmented code.

  2. One domain, one session. Payments session does payments. Don't mix in "while you're there, also clean up the admin UI." Cross-cutting context blows up its judgement.

  3. Tests before the clever bit. Write the Vitest case that fails for the exact behaviour I want. Let the agent make it green. This is the fastest way to stop it inventing.

  4. Diff review by human. Always. Do not skip. The 5% of the time it silently drops an idempotency guard is the reason your phone rings at 03:00.

What it is bad at

Anything with a dirty secret in the codebase. Anything where the root cause is three directories away from the symptom. Anything involving an undocumented platform quirk — Shopee webhooks, for example, or the way FPX reconciliation files come in two different shapes depending on whether it is a public holiday.

For those, it is a rubber duck that codes. You still do the thinking.

The unglamorous part

Most of the ROI is not in generation. It is in context management. Good Claude Code usage looks like obsessive directory hygiene, specific commit messages, tight PR scopes. The agent does its best work when the codebase does not lie to it.

Which is just — you know — how to write code anyway.

Written by

Faiz Kasman

Software engineer in Kuala Lumpur. Payments, multi-tenant SaaS, and inventory infrastructure. Currently building the Shell Malaysia ParkEasy app.

Keep reading