DEV Community

Cover image for The Software Developer's Guide to AEO
Karl L. Hughes
Karl L. Hughes

Posted on

The Software Developer's Guide to AEO

When I was writing code full-time five years ago, I Googled error messages, opened five tabs, and scanned Stack Overflow, docs, GitHub issues, and blog posts to get to the root cause.

My how the times have changed.

Now, you paste the error message into ChatGPT, Claude, Cursor, or Perplexity and simply ask for a direct answer...or even better, you just ask your coding agent to solve the problem for you!

Clearly, this behavior shift matters if you're building, documenting, or marketing developer tools, and that's why interest in AEO is on the rise.

I spent about 10 years as a CTO and software engineer before moving into content and starting Draft.dev. Since then, our team has worked with hundreds of technical companies, including Docker, Cloudflare, Okta, JetBrains, and vCluster.

Over the past 18 months, we have been working with clients like these on AEO, and we are starting to see patterns in what gets cited by answer engines and what gets ignored.

This guide is my attempt to make AEO practical for software developers. Let's dive in!

What AEO means for software developers

AEO stands for Answer Engine Optimization. GEO stands for Generative Engine Optimization.

The terms are still a little fuzzy, but the practical question is simple:

Can a Large Language Model understand what your website does, how to use it, and when it's a good fit.

This matters for any tool that has:

  • API docs
  • Tutorials
  • Architecture guides
  • Product comparisons
  • Migration guides
  • Error handling docs
  • Integration examples
  • README files

You want LLMs to understand all of these.

As a brief aside, AEO does not really replace traditional SEO. Google still sends a lot of traffic, and plenty of developers still search for things directly. Ranking and being indexed still matters.

The difference is that the search result is less likely to be ten blue links. It might be an AI-generated summary, a Perplexity answer, a ChatGPT recommendation, or a code assistant suggesting an implementation path. The implementation and tactics you need to show up consistently in LLMs are slightly different, so that's why I'm writing this today.

Why developer content is different

Now, I'll assume if you're reading this, you're writing developer-facing content. That's what Dev.to is for, right?

This matters because developer searches are different. They're full of context that might be incredibly nuanced.

A generic searcher might ask:

What is the best analytics tool?

But a developer is more likely to ask:

What is the best open source product analytics tool for a self-hosted Next.js app with event batching and warehouse export?

That second query has constraints: a specific framework, hosting model, performance needs, data flow, and probably a few hidden concerns about pricing and compliance.

This is why shallow content fails to reach a technical audience. A generic post like "What is feature flagging?" may still get indexed, but AI tools can answer that directly without sending anyone to your site.

A more useful article might be:

How to add percentage-based feature flags to a Node.js API using Redis

That topic is more specific. It gives you room to show implementation detail, tradeoffs, failure modes, and version-specific advice.

AI systems can summarize generic content. Developers rarely trust generic content when they are making implementation decisions.

The AEO checklist for technical content

1. Give every page a clear technical job

Each article or docs page should answer a specific developer question.

Examples:

  • How do I connect this SDK to a Next.js app?
  • How does this compare to PostHog for product analytics?
  • Does this work with SOC 2 requirements?
  • What happens if the API rate limit is exceeded?
  • How do I migrate from version 2 to version 3?

If a page has no clear job, answer engines have to infer its purpose. That makes the page less useful to machines and people.

A quick test: if you cannot describe the page as "This helps a developer do X," the page is probably too vague.

2. Use headings that match real questions

A lot of technical content still uses headings like this:

## Installation
## Authentication
## Error Handling
## Alternatives
Enter fullscreen mode Exit fullscreen mode

Those are fine, but question-based headings are often clearer:

## How do you install the SDK?
## How do you authenticate requests?
## What errors should you handle?
## How does this compare to PostHog?
Enter fullscreen mode Exit fullscreen mode

This helps readers scan the page, and it gives answer engines a cleaner map of the content.

3. Put the direct answer near the heading

Do not make readers hunt for the answer.

A good pattern looks like this:

## How do you authenticate requests?

Authenticate requests by sending a bearer token in the `Authorization` header. Store the token in an environment variable and avoid committing it to source control.
Enter fullscreen mode Exit fullscreen mode

Then follow with code, edge cases, and links to deeper docs.

The first sentence matters. If an answer engine is trying to extract a concise response, make the response easy to find.

4. Include working code snippets

This is where developer content has an advantage over generic marketing content.

A weak example:

Install our SDK and call the API.
Enter fullscreen mode Exit fullscreen mode

A better example:

const response = await fetch("https://api.example.com/v1/events", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${process.env.EXAMPLE_API_KEY}`,
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    event: "signup_completed",
    userId: "user_123"
  })
});

if (!response.ok) {
  throw new Error(`API request failed: ${response.status}`);
}
Enter fullscreen mode Exit fullscreen mode

This example is more useful because it includes:

  • The endpoint shape
  • The HTTP method
  • The auth pattern
  • The content type
  • The request body
  • Basic error handling

A developer can adapt it. An answer engine can understand it. Both outcomes are better than a vague paragraph.

5. Add structured data where it fits

Schema will not save weak content, but it can help machines understand the type of page they are reading.

Google's structured data documentation is the best source to start with, but a simple TechArticle example might look like this:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "TechArticle",
  "headline": "How to Add Webhooks to a Node.js App",
  "description": "A practical guide to receiving, verifying, and testing webhooks in Node.js.",
  "author": {
    "@type": "Person",
    "name": "Your Name"
  },
  "programmingLanguage": "JavaScript"
}
</script>
Enter fullscreen mode Exit fullscreen mode

Use this where it fits your site. Do not treat it as a ranking hack.

6. Keep examples current

Outdated developer content is worse than vague content because it can waste someone's time.

If your tutorial uses a deprecated API, old package name, or outdated setup command, developers will notice quickly. AI systems may also repeat those stale instructions.

Add a short tested block to technical tutorials:

Tested with:
- Node.js 22
- Next.js 15
- Example SDK 3.4.1
Enter fullscreen mode Exit fullscreen mode

Then revisit important posts on a schedule. For fast-moving topics, once a year may not be enough.

7. Create comparison pages that are honest

Developers ask AI tools which product to use.

If your site does not explain where your tool fits, other sources will do it for you.

Good comparison content includes:

  • Who each tool is best for
  • Tradeoffs
  • Pricing model differences
  • Integration limits
  • Migration notes
  • Code or architecture examples
  • Cases where your tool is the wrong choice

That last point matters. A comparison page that claims your product wins every category is not credible.

Make your content easier to crawl and quote

A lot of AEO work is basic technical hygiene.

If the main content is hard to crawl, hidden behind JavaScript, locked in a PDF, or trapped behind a form, answer engines may have little to work with.

A few practical checks:

  • Render core article and docs content in HTML.
  • Avoid putting important explanations only in images.
  • Add transcripts for videos and webinars.
  • Publish crawlable summaries for gated reports.
  • Use stable canonical URLs.
  • Keep docs URLs descriptive and predictable.

You can do a quick raw HTML check with curl:

curl -L https://example.com/docs/webhooks | head -n 40
Enter fullscreen mode Exit fullscreen mode

If the response only contains a JavaScript shell and no meaningful content, crawlers may need extra rendering work to understand the page. Google can render JavaScript in many cases, but you should not assume every AI retrieval system will process your site the same way.

You can also inspect whether specific text is present in the initial HTML:

curl -L https://example.com/docs/webhooks | grep -i "verify webhook"
Enter fullscreen mode Exit fullscreen mode

This is a crude test, but crude tests catch a surprising number of problems.

Brand mentions matter more than most developers expect

One thing we are seeing in Draft.dev's AEO work:

LLM visibility is influenced by how a brand is described across the web, not only by what the company says on its own site.

That does not mean you should spam links all over the internet, but it does mean you need accurate third-party context to support your product in places developers would expect to read them.

For developer tools, this might include:

  • Dev.to tutorials
  • GitHub READMEs and examples
  • Reddit comments with real substance
  • Partner blogs
  • Comparison posts
  • Community docs
  • Newsletters

If you want your product associated with "open source feature flags for Node.js," it helps if multiple credible pages make that association in specific language.

The goal is not to trick the models; the goal is to make the correct associations easier to find.

What is not working

Based on what we have seen so far, these patterns are weak for AEO:

Generic "What is X?" articles

High-level definitions are easy for AI tools to answer directly. They may still have a place in a content library, but they are less likely to create meaningful developer engagement.

AI-written filler with no technical judgment

AI can help with outlines, summaries, and editing. It is much weaker when asked to replace practical experience.

This is especially true in developer content, where a small technical mistake can make the whole article feel unreliable.

Gated reports with no crawlable version

Gated assets can still work for lead generation, but if all the useful information is hidden behind a form, answer engines cannot easily cite it.

A better pattern is to publish a crawlable summary or ungated companion article.

Old tutorials with deprecated APIs

If your docs teach an outdated implementation, AI tools may repeat it. That creates a bad experience for developers and a bad association with your brand.

Thin landing pages with no examples

Claims like "built for developers" mean little without code, architecture diagrams, use cases, or clear technical constraints.

Comparison pages that pretend your tool always wins

Developers are skeptical. So are the systems trained on developer content. Honest tradeoffs are more useful than sales copy.

A practical AEO workflow for developers

If you want to start this week, I would keep it simple.

  1. Pick one technical topic your tool should be known for.
  2. List 10 real developer questions around that topic.
  3. Search those questions in ChatGPT, Perplexity, Claude, and Google AI Overviews.
  4. Record which brands and sources appear.
  5. Audit your docs and blog for missing answers.
  6. Publish or refresh content with direct answers, code, tradeoffs, and schema.
  7. Create one useful external mention on a developer-focused site.
  8. Re-check the same questions monthly.

A lightweight tracking sheet is enough at first:

Query ChatGPT Perplexity Google AI Overview Our page cited? Competitors cited
best webhook tool for node.js TBD TBD TBD No A, B, C
how to verify webhooks in express TBD TBD TBD Yes B, C
posthog alternative for self-hosting TBD TBD TBD No A, D

The point is to build a repeatable feedback loop. You need to know what answer engines currently say before you can improve your odds of appearing there.

Tools worth using

The tooling around AEO is still early, but a few tools are useful now.

  • Google Search Console: Useful for search performance, Discover data, and indexing checks.
  • Scrunch: We use this at Draft.dev for LLM visibility tracking across AI search surfaces.
  • Ahrefs: Still useful for keyword research, competitor research, and backlinks.
  • Screaming Frog: Useful for crawling technical content and finding metadata, canonical, and rendering issues.

I wrote about these and a few other good SEO/AEO tools recently in case you're interested.

A deeper guide for developer tools

If you work on marketing, docs, or DevRel for a developer tool, Draft.dev put together a deeper report here:

AEO and GEO for DevTools

The guide includes current findings from our client work and research, including:

AEO will keep changing, but the durable part is straightforward: publish technically accurate content that answers real developer questions with enough detail to be useful.

Top comments (0)