You can feel it the moment they open a terminal. The keystrokes are hesitant, deliberate—each flag typed out in full, no aliases, no shorthand. The shell history is empty. It’s not a workspace; it’s a stage set. And you know, right then, that you’re not watching someone who has ever been paged at 2 a.m. because of this tool. You’re watching a pitch.
That’s the rot at the center of developer advocacy that smells like sales. It’s rarely about malice. Most advocates want to be useful. But the problem lives in the texture of what they produce. When someone’s relationship with a codebase is purely theoretical, the cracks show the moment a real builder kicks the tires. The examples are clean—too clean. They compile, sure. But they don’t solve a problem you’ve actually had, the kind that wakes you up sweating because a cron job silently died three hours ago.
The Demo That Never Saw Production
You know the demo. It’s a to-do app, or maybe a note-taker. It imports the company’s SDK, grabs an API key from a single env variable, and deploys with a single click to some serverless platform. The audience smiles. Then you go home, try to wire it into a multi-tenant monstrosity with a legacy Oracle DB and a custom SAML provider, and the whole thing detonates. The demo wasn’t built to be adapted. It was built to be projected on a screen.
This is the gap between an advocate who writes code to show and one who writes code to find out. The first gives you a glossy brochure. The second hands you a hand-drawn map with “here be dragons” scrawled in the margins. A real technical voice doesn’t just walk you down the happy path. They point out where the guardrails buckle, because they’ve already gone over the edge themselves.
Take any API quickstart. The salesy version is a pristine curl command and a 200 OK. The real version includes the 429 you’ll hit on your fourth request because the rate-limit docs are wrong, the pagination cursor that breaks silently after 1,000 records, and the sandbox endpoint that returns a different date format than production. One builds trust. The other builds a backlog of angry support tickets.

When “Best Practices” Become a Shield
Sales-driven advocates love the phrase “best practice.” It’s a handy deflector shield. You point out that the SDK’s connection pool leaks file descriptors under load, and the response is a smooth pivot: “Our best practice is to use the managed service.” That’s not advocacy. That’s a support chatbot with a smile.
Real advocacy means admitting the managed service costs an arm and a leg at scale, and yes, the connection pool leaks. It means filing the internal bug report before the meetup, not after the tweetstorm. The advocates I trust treat their own company’s product with the same suspicion they’d aim at a competitor. They don’t just test the happy path—they fuzz the API with garbage JSON, hammer the rate limits until something breaks, and deploy on a Friday afternoon just to see what happens. Because that’s exactly what the community will do.
Here’s a concrete example. Say a new database driver drops. The sales-flavored advocate writes:
// Connect in one line!
const db = new SuperDB('connection-string');
await db.query('SELECT * FROM users');
An engineer-flavored advocate writes:
// The default pool size is 10. If you're behind a load balancer
// with connection pinning, you'll exhaust connections fast.
// Set maxConnections to at least (num_instances * 10) + 5.
// Also, idleTimeout defaults to 0—connections never close.
// That's a slow leak you won't notice until peak traffic.
const db = new SuperDB('connection-string', {
maxConnections: 50,
idleTimeout: 30000,
retryStrategy: (times) => Math.min(times * 100, 3000)
});
The second example doesn’t just show the feature. It shows the scar tissue. It tells you the advocate has been paged because of this driver. That’s the stuff that gets bookmarked, not just retweeted.

The Metrics That Eat Authenticity
Part of this is structural. When advocacy rolls up under marketing, their KPIs become indistinguishable from content marketing: page views, conversion rates, MQLs. A tutorial titled “Build a Chatbot in 5 Minutes” will always crush “Debugging Connection Pool Exhaustion in Production.” The first is aspirational, frictionless. The second is what your actual users need at 3 a.m.
This creates a nasty incentive. Advocates who produce technically dense, narrowly useful work get punished by the numbers. Their stuff doesn’t trend. It doesn’t top HN. But it stops your most valuable users—the ones already committed to your platform—from churning in frustration. The ROI of preventing churn is enormous, but it’s almost impossible to measure directly. So it gets ignored.
The fix isn’t to ditch metrics. It’s to pick the right ones. Track how often a tutorial gets linked in a support ticket. Measure the drop in “how do I…?” questions on Discord after a deep-dive post goes live. These are lagging indicators, but they correlate with developer trust far more than page views ever will.
Trust Is Built in the Issues Tab
Developer trust isn’t won on a conference stage. It’s won in the GitHub issues tab, in the Stack Overflow comments, in the pull request that fixes a misleading error message. When an advocate replies to a bug report with “I can reproduce this—let me dig into the source and get back to you,” that’s worth more than a dozen polished keynotes.
I’ve seen advocates who don’t even have commit access to the repos they’re supposed to champion. They can’t merge a docs fix without a product team sign-off. This creates a weird dynamic where the advocate is just a messenger, relaying feedback they can’t act on. The community sniffs this out fast. They stop filing detailed bug reports because they know nothing will happen. The relationship becomes transactional: the advocate broadcasts, the community consumes, and the feedback loop is dead.
Compare that to an advocate with a history of merged PRs—not just typo fixes, but real feature improvements driven by community feedback. When that person says “we’re working on it,” the community believes them. Not because of their title, but because of their commit history.

The Code Review Litmus Test
Here’s a quick sniff test: look at the code examples in a company’s docs. Are they complete, runnable, and realistic? Or are they snippets that assume a perfect, sterile environment? A sales-driven advocate writes examples that work in isolation. An engineering-driven advocate writes examples that work when you drop them into a messy, existing codebase.
Take error handling. The salesy example skips it entirely—errors are ugly, they break the narrative. A real-world example shows you exactly what exceptions the library throws, which ones are recoverable, and how to implement a retry strategy with exponential backoff. It mentions that the timeout parameter is actually a connect timeout, not a request timeout, and you’ll need to set both if you don’t want your workers hanging forever.
That level of detail doesn’t come from reading the source. It comes from running the library in production, under load, at scale. It comes from being on call when it falls over. If your developer advocates aren’t in the on-call rotation—even informally—they’re missing the richest source of content and empathy available to them.
Rebuilding the Advocate Role
What would a developer advocacy team look like if you built it from scratch, without marketing’s gravity? It would look a lot like an internal tools team, but with its output pointed outward. Advocates would be embedded with product engineering, not demand generation. Their success metrics would tie to community health: issue resolution time, docs accuracy scores, API design feedback that actually gets implemented.
They’d spend at least 20% of their time building real applications on the company’s platform—not demos, but internal tools or side projects with actual users. They’d be required to file at least one actionable bug report per sprint. They’d have a standing invite to architecture reviews, not to present, but to listen and represent the developer who will eventually have to integrate with whatever is being designed.
This is expensive. It means hiring senior engineers and paying them engineer salaries, not content marketing salaries. It means accepting that your advocates will sometimes publicly criticize the product. But the alternative—a team of polished presenters who can’t write a line of code without a safety net—is far more costly in the long run. Developers can smell inauthenticity from a mile away, and once that trust is gone, no amount of swag or free credits will bring it back.
FAQ
What’s the difference between a developer advocate and a sales engineer?
A sales engineer supports a specific deal, working with a prospect to prove the product fits their needs. A developer advocate supports the broader community, building trust through education and feedback. The line blurs when advocates are measured on lead generation rather than community health. If an advocate’s primary output is demos designed to convert, they’re doing sales engineering under a different title.
How can I tell if a company’s advocacy is genuine?
Look at their public repositories. Are there real, non-trivial example applications that handle edge cases? Check their issue trackers—do advocates respond with workarounds and bug confirmations, or do they redirect to support? Read their blog posts: do they acknowledge limitations and trade-offs, or is every article a celebration of features? The presence of critical, technically deep content is a strong signal of genuine advocacy.
Why do companies let advocacy become sales-driven?
Because it’s easier to measure. A demo that generates 500 sign-ups looks great on a quarterly report. A bug report that prevents 50 churned customers is invisible. Organizations optimize for what they can measure, and developer trust is notoriously hard to quantify. The companies that get advocacy right are usually those where engineering leadership has the political capital to protect the advocacy team from marketing’s metrics.






