Work With Me
You get someone who treats your business problem as their own. That's why I charge a lot. Not a vendor. Not a resource. A partner.
How it starts
Before anything gets built, we need to agree on what we're actually solving. I'll run a requirements call - not to gather tickets, but to find the real goal under the stated goal. What you describe and what you need are often not the same thing. I'll tell you when that's the case.
This phase can end in a written recommendation: the problem, the options, the tradeoffs, and the path I'd take.
While it's running
While we work, you'll know what I know.
Every week: what was done, what's being done, what comes next. If something's going sideways, I tell you before it's a fire.
I've managed through COVID-era engineering restructures and multi-team distributed system builds. You will not sit in the dark.
How it closes
Software doesn't end. Working together does.
We'll build acceptance criteria together. Automated tests will verify them on your real infrastructure. When the project closes, it closes cleanly: documentation, runbooks, and the keys. The next team will be able to continue without calling me.
(That said, I'm available if they do.)
I don't engineer dependence. If you want a retainer - ongoing technical leadership, team mentoring, or architecture review - we can discuss it. It won't be because you're stuck. It'll be because you want to keep moving.
On LLMs
I use modern tools - language models included. I'd be slower and more expensive if I didn't.
I write to you myself.
What LLMs don't do: decide what to build, understand your business constraints, know which shortcuts will cost you in a quarter, or take responsibility for shipping something wrong. That's judgment. Judgment is the job.
"Vibe coding" - committing unreviewed output to your production system because it looked plausible - is how you get a fast v1 and a maintenance crisis. I don't do that. Everything that ships, I've understood, reasoned about, and am prepared to defend.
If you've inherited a codebase built the other way, I've fixed those too.
Worth a call?