Blog
The agent needs a manager, not a persona
Giving an agent a personality is easy. Giving it scope, escalation, metrics, and consequences is the actual management work.
The first dashboard should be boring
Your first dashboard should not answer every question. It should make the next bad week easier to understand.
Secrets are not configuration
Config explains how a system should behave. Secrets decide who the system is allowed to become. Treating them the same is how quiet incidents start.
The calendar is part of the architecture
A system that only works when one person is online has a hidden dependency. The calendar is where that dependency shows up.
Your CLI needs a receipt
A command-line tool that changes state should leave behind proof. Otherwise every operator becomes a detective.
The model switch is a product change
Changing models is not an implementation detail. It changes tone, latency, failure modes, cost, and sometimes the user's trust.
Don't hire a platform team to avoid decisions
Platform teams do not remove product choices. They just make the cost of unclear choices more expensive and more reusable.
The migration plan is the feature
A replacement system is not shipped when the new code works. It is shipped when the old world can move without losing its history.
Latency is a product decision
Speed is not an engineering vanity metric. It decides which workflows feel safe, which ones feel broken, and which ones users avoid.
The second system is a spreadsheet
The shadow spreadsheet is not a user failure. It is a map of the workflow your product refused to own.
The approval button is the product
If a workflow needs approval, the approval step is not administrative glue. It is the product deciding where trust stops.
Your demo is not a deployment plan
A demo proves the happy path can be performed once. Deployment is the work of making the unhappy paths survivable every day.
Logs are a user interface
Logs are not exhaust. They are the interface your future operator uses when every other interface has stopped being enough.
The smallest useful agent
The useful agent is not the one with the most tools. It is the one with the narrowest job that still removes a human handoff.
Stop hiding risk in the backlog
A risky task does not become safer because you put it below the fold. Backlogs are where uncertainty goes to avoid conversation.
The best internal tool is boring
Internal tools do not need delight. They need memory, defaults, permissions, and a way to undo the expensive mistake.
Prompts are interfaces
A prompt is not a spell. It is the interface between intent, context, and a machine that will happily misunderstand both.
Your roadmap needs a trash can
A roadmap without deletion is just a promise accumulator. The hard part is not adding ideas. It is creating a place for dead ones to stay dead.
The status page is a product
A status page is not a compliance artifact. It is the interface customers use when your product has already failed them.
Vibe-coded code has more bugs. Price it in.
Recent honest data shows AI-assisted code shipping with around 1.7× the rate of major defects. The pitch isn't "ship faster." It's "ship faster, accept the bug tax, decide if it's worth it."
Stop calling it context engineering
The term sounds like a craft. It mostly hides a budget you refused to write down. Call it what it is — engineering with a token budget — and the work changes shape.
The 25% rule
AI can only touch the quarter of your week you spend actually coding. The biggest productivity wins live in the other three-quarters and nobody is selling them to you.
The /goal command is a confession
Coding agents now ship with explicit "set a goal" commands. Last year's pitch was that they figured out the goal themselves. The walking back is real, and worth understanding.
The runway you didn't spend is the option you bought
We had four hundred thousand left when revenue covered burn. We didn't celebrate. We left it in the account. Eighteen months later that four hundred thousand was the reason we said no to a bad term sheet.
Your MCP server is a prod dependency
We installed five Model Context Protocol servers last quarter and version-pinned none of them. The first outage was educational.
The deploy log is your changelog. Tag accordingly.
Stop writing changelogs by hand. The deploy log already contains everything that changed. The work is in making the deploy log readable — that's a one-day project, not a process change.
Local models won the long tail
The frontier wins demos. A 70B model on one good GPU wins the two hundred calls per day workflow nobody tweets about. The economics flipped this year.
Customer support is product research wearing a costume
I answered support tickets for the first six months of the company. Then I stopped, and within a quarter we shipped three features nobody asked for. The inbox knew what to build. I had stopped reading it.
The eval you don't have, production already wrote for you
Every customer-reported failure of an LLM feature is a test case you refused to file. The dataset is free; you're throwing it away nightly.
Observability is a tax you pay before you owe it
The first incident is when you discover you don't have logs. The second is when you discover the logs aren't searchable. By the third you have observability, and a story about how expensive it would have been not to.
One worktree per agent
Sub-agents and tool-loop trees are not parallelism. Git worktrees are. The unit of useful concurrency in a coding swarm is the working tree, not the model call.
Your first hire is a multiplier or a manager. Pick.
The two failure modes of first hires are "the second me" who does what I do twice and "the senior person" who manages me instead of working. The good first hire does neither.
The output token tax
Inputs got cheaper this year. Outputs didn't. Your verbose agent is paying both halves of a bill that quietly stopped being symmetric.
Postgres is a queue. Stop reaching for Kafka.
A team I know spent six weeks operationalising Kafka for a workload doing two hundred messages per second. Postgres did the same job with forty lines and a SELECT FOR UPDATE SKIP LOCKED.
Every agent should have a passport
We onboard humans with identity, scope, audit, and approval. Agents get an env var and a system prompt. The next round of incidents will be about this.
Pricing pages are written for people who won't buy
I spent two weeks rewriting our pricing page. Conversion didn't move. What moved conversion was rewriting the sales email — the document everyone who actually paid had already read by then.
The 3-person team is the new 50-person team
A friend's startup did $4M in revenue last year with three engineers and a tax contractor. Their competitor did $6M with forty-two people. The competitor has more meetings.
Your prompt isn't cache-shaped
I asked a team what their cache hit rate was. The lead said "we cache responses, right?" That single misunderstanding was costing them about fourteen thousand dollars a month.
The cheapest dependency is the one you delete
I removed a logging library last quarter. Build time dropped twelve seconds, bundle dropped four hundred KB, the on-call rotation forgot it existed. We had been paying rent on it for three years.
You're optimizing the wrong axis of agent cost
I watched a team spend a quarter dropping their per-call latency by 40%. The bill kept going up. The bottleneck was never speed.