New: End of Coding, Age of Building

< Is headless making a comeback? />

No_bell.png

Headless had its moment around 2018-2021. Contentful handled content, Shopify's Storefront API handled commerce, Stripe handled payments, and Auth0 handled identity. The pitch was the same everywhere: here's a powerful API, build whatever frontend you want on top of it.

The architecture made sense. The problem was that every headless tool required significant engineering investment to set up and maintain. Not just "hook up an API" investment, but "build a frontend, design a content model, configure preview environments, and own the deployment pipeline" investment. Most companies didn't have the engineering bandwidth to treat their CMS or commerce layer like a custom software project. And the ones that did often couldn't justify keeping a developer on it long-term once the initial build was done.

What headless actually cost you

The API-first model works well when you have engineers who treat these services like product infrastructure. When you don't, you get content teams staring at JSON editors and marketing waiting on engineering to change a checkout flow.

The headless CMS space is where this played out most visibly. Contentful started bolting on visual editing tools and composable page builders. Strapi added a content-type builder. Sanity shipped Sanity Studio with customizable desk structures. Every headless CMS slowly crept toward becoming a Digital Experience Platform, rebuilding the same workflows and interfaces they were supposed to eliminate.

The same pattern showed up in commerce. Shopify's headless Storefront API gave you full control, but building a custom storefront meant maintaining a React app, handling cart state, managing checkout flows, and syncing inventory. Most merchants went back to Shopify themes because the operational cost of maintaining a custom storefront wasn't worth it without dedicated engineering.

Headless vendors spent years telling you to decouple everything through APIs, then spent the next few years rebuilding the interfaces and workflows that monolithic tools already had. Non-technical users couldn't operate these systems independently, so the vendors built the interfaces back in. The result was headless architecture with monolithic complexity.

Visual development ate headless for lunch

Visual development tools showed up and solved a different problem: letting non-developers build and ship without waiting on engineering.

Tools like Webflow, Builder.io, and Framer gave marketing teams direct control over pages, layouts, and content without requiring a pull request. Builder.io went further by offering visual editing on top of existing codebases, a hybrid model where developers own the system and marketers own the pages.

Visual development grew while pure headless adoption slowed outside of enterprise. The hybrid approach (visual editing backed by APIs) turned out to be what most teams needed. You got the content API when you wanted it and a visual editor when you didn't want to bother engineering.

Headless started feeling like an architecture for teams with more developers than they knew what to do with. For everyone else, it was overhead.

Then LLMs learned to talk to APIs

Large language models can build working applications. But the more consequential thing they learned to do is talk to existing APIs and operate services through them.

This is what MCP (Model Context Protocol) made repeatable. You give an LLM access to a set of API tools, a CMS, a commerce platform, a payment processor, an analytics service, and it can read, create, update, and query through those APIs using natural language. No SDK wrappers to write. No frontend to build. You describe what you want, the model figures out the API calls, and the work gets done.

MCP isn't without its critics. Perplexity recently announced they're moving away from MCP internally in favor of their own Agent API, citing token overhead and authentication friction at scale. Those are real problems. But the pattern MCP established, LLMs operating through APIs via standardized tool definitions, is already showing up through function calling and agent APIs regardless of whether MCP itself becomes the long-term standard.

Sanity is a good example of this. Their content lake API is structured, their schemas are typed, and an LLM connected to Sanity can create documents, update fields, manage assets, and publish content through conversation. The same workflow that used to require a developer writing a custom integration now takes a .json tool definition and an API key.

This isn't limited to CMS. Any well-documented API with token-based auth works the same way. Stripe's API is so well-structured that models can create payment links, pull transaction data, and manage subscriptions through it. Shopify's Storefront and Admin APIs follow similar patterns. The developer who used to sit between the business team and the API? A model that already read the docs can do that job now.

You secure your API keys and set permissions like you always would. But the person using the system doesn't need to understand REST semantics or write fetch calls. They describe what they want, and the model handles the translation.

The developer dependency is dissolving

The core objection to headless was always operational, not architectural. Nobody argued that APIs were the wrong approach. The argument was always: "Sure, but who's going to build and maintain all of this?"

That was a fair objection when building meant writing React components, setting up preview environments, configuring webhooks, and debugging deployment pipelines. It's less of one when building means opening Claude Code and saying "set up a Next.js frontend that pulls content from our Sanity project and deploys to Vercel." Or "create a Shopify storefront with these products and connect Stripe checkout."

The developer's role shifts from implementation to architecture. You still need someone to design the data model, set up the deployment pipeline, and make security decisions. But the day-to-day work of building interfaces, managing data through APIs, and wiring services together? That's moving to the LLM, working through the API layers that headless tools already built.

Companies like Stripe, Shopify, and Sanity spent years building well-structured APIs, thorough documentation, and typed schemas. They did that work to support developer integrations. It turns out those same qualities (structured, documented, typed) are exactly what makes an API easy for an LLM to use. Every headless tool that invested in API quality accidentally built infrastructure that LLMs can now operate.

The stack I'm thinking about

Headless APIs (Sanity, Stripe, Shopify, Algolia, Clerk) as the service layer. An agentic coding tool (Claude Code, Cursor) as the builder. A frontend framework (Next.js, Astro) as the delivery layer. MCP or function calling as the bridge between the LLM and the APIs.

New_headless_stack.png

The team describes what they need, the LLM builds it through the APIs, and the developer reviews and maintains the architecture. Each service stays in its lane: Sanity handles content, Stripe handles payments, Algolia handles search.

I've used Claude Code connected to Webflow's CMS API through MCP to create and manage content programmatically. The experience is closer to pair programming with someone who already read the API docs than it is to traditional service administration. And every headless tool with a decent API is a candidate for this same workflow.

There's another layer to this. When a builder asks Claude Code or Cursor to build a newsletter, the model suggests specific APIs like Resend for email and gives a recommended option. Headless services aren't just competing for mindshare anymore, they're competing for LLM recommendations. How you show up in those suggestions matters, whether that's through llms.txt, AEO (Answer Engine Optimization), or having the cleanest docs and SDK in your category. Being one of the three options the model suggests is starting to matter the way ranking on the first page of Google used to.

What still needs to be true

This only works if the headless service has a well-designed API. Sanity's content lake API is structured and predictable, with typed schemas that an LLM can query and write to after seeing a few examples. Stripe is the gold standard here with consistent naming, thorough docs, and predictable error formats.

Where this breaks down:

  • Undocumented edge cases - LLMs can only work with what's documented. If publishing requires a specific sequence of API calls that isn't in the docs, the model will get it wrong.
  • Complex permissions models - Multi-tenant setups with role-based access and environment-specific publishing rules add friction that conversational interfaces don't handle gracefully.
  • Asset management - Image uploads, transformations, and CDN invalidation involve binary data handling that's harder to do through natural language than CRUD operations on text content.
  • Preview workflows - Showing unpublished content in context still requires frontend infrastructure. An LLM can create the content, but previewing it on a staging site is a deployment problem, not an API problem.

These explain why this isn't a "headless is fully back" story yet. It's closer to "headless lost for the wrong reasons, and those reasons are disappearing."

Headless lost a battle it might win retroactively

Visual development tools won because they removed the developer dependency for content operations. That was the right answer in 2022. But visual development still comes with tradeoffs. Proprietary rendering, platform lock-in, and a ceiling on what you can build before you need custom code. Most visual tools have APIs and integrations, but they're secondary to the canvas.

Headless architecture doesn't have those constraints. It's APIs and data structures that you can move between frameworks, host anywhere, and compose however you want. Non-developers could use it, but the moment they wanted something different from the initial build, the developer tickets started piling up.

LLMs and agentic building tools are filling that gap. The complexity of headless doesn't disappear, but it becomes something you can work through in conversation instead of code. The APIs and data models don't change. Who can operate them does.

I don't think the future is headless vs. visual. I think it's both, and the line between them is blurring. The platforms that treat their APIs as an afterthought are going to lose ground to the ones that invest in them. When an LLM can operate a CMS, a commerce API, and a payment processor through conversation, the visual editor becomes one interface among several, not the only way in.

And if that's right, a lot of companies that consolidated back to monolithic platforms in 2023 might be rethinking that decision.

Handbook
Developer Marketing Handbook

Goals

Developer marketing builds trust first, pipeline second.
The work connects your product to how developers actually build and helps that credibility translate into adoption and revenue.

A great developer experience is the foundation. It starts with discoverability, continues through docs, and carries into the product itself. Good documentation shortens time to value and builds confidence that your product can scale with real teams. Developers trust what they can inspect, so show how the product works and let the system speak for itself.

Success isn't clicks or vanity metrics. It's measurable engagement that creates product-qualified leads, builds influence across teams, and contributes to both product-led and sales-led growth.
When developers use your product by choice and advocate for it inside their company, you've done the job right.

Strategy

Start with reality, not aspiration.

Map where your product fits in the developer workflow, then help them do that job faster or with less friction.

Lead with clarity. Explain what it is, what it does, and why it matters.

Show the system behind the product. Architecture, examples, and tradeoffs explain more than positioning ever will.
If you can do it in a clever or playful way that still feels authentic, that's bonus points.

The best developer marketing respects time, delivers value, and makes something complex feel obvious.

Journey

Awareness → Evaluation → Adoption → Advocacy.
Each stage should connect clearly to the next.

Awareness happens in places developers already spend time: GitHub, Reddit, newsletters, blogs.
Evaluation happens in your docs, demos, and sandboxes.

For most developers, the docs are the real homepage, so accuracy and structure matter more than polish.

Adoption depends on how fast they reach first success.
Advocacy is when they start teaching others what they learned from you.

Personas

Create personas based on who buys the product and who actually uses it. For example:

Buyers: CTO or Engineering Leader, Senior Engineer, Implementation Architect.
Users: Frontend, Full-stack, App Developer.
Adjacent: Ops, Product, Design.

Each persona has different pain points and goals.
CTOs and Engineering Leaders care about governance and ROI.
Senior Engineers look for performance, flexibility, and code quality.
Implementation Architects focus on how well a tool integrates and scales.
Write for what each person owns, not what you wish they cared about.

These categories are shifting. PMs and designers who build with AI tools aren't adjacent anymore. They're users. Update your personas to reflect how people actually work, not how the org chart defines them.

Messaging

Be clear first. Be clever only if it helps.
Make every message easy to scan. Lead with the point before expanding on it.
Good developer messaging is specific, practical, and rooted in how people actually build.

Clarity earns trust, but a bit of personality makes it stick.
The goal isn't to sound like marketing. It's to communicate something real that developers recognize and care about.

Build around three pillars:

  • Speed: faster builds, fewer tickets
  • Efficiency: consolidated stack, lower maintenance
  • Control: safe scale, long-term confidence

If you can back it with code, data, or proof, keep it.
If it only sounds good, cut it.

Campaigns

Treat campaigns like product launches.
Plan, ship, measure, repeat.

Each campaign should answer three questions:

  • What developer problem are we solving?
  • What proof are we showing?
  • What happens next?

Treat developer feedback like bug reports and close the loop quickly when something needs to be corrected or clarified.

Make it easy for developers to try, test, or share.
Run retros on every launch and capture what worked, what didn't, and what to change next time. Always learn from what you launch.

Content

Write with clarity and intention. Every piece should help developers build faster, learn something new, or solve a real problem.

Strong content earns attention because it's useful.
Lead with the outcome or insight, then show how to get there. Make it easy to skim from top to bottom.
Show working examples, explain tradeoffs, and include visuals or code where it helps understanding. If it doesn't teach or demonstrate something real, it doesn't belong.

Core content types

  • Blog posts: tutorials, technical breakdowns, or opinionated takes grounded in experience.
  • Guides and tutorials: step-by-step instructions that lead to a working result.
  • Integration or workflow content: explain how tools connect and where they fit in a developer's process.
  • Technical guides and code examples: deeper material for experienced readers who want implementation detail.
  • Explainer or glossary content: clear, factual definitions written to answer specific questions directly.
  • Video or live sessions: demos, interviews, or walkthroughs that show real workflows.
  • Research and surveys: reports or insights that help developers understand the state of their field.

Content strategy buckets

  1. Awareness — generate buzz and discussion. Hot takes, thought leadership, or topics that invite conversation.
  2. Acquisition — bring new developers in through problem-solving content. Tutorials, guides, and explainers that answer real questions.
  3. Enablement — help existing users succeed. Deep tutorials, documentation extensions, and practical how-to content with long-term value.
  4. Convert Paid — drive upgrades or signups. Feature-specific walkthroughs or advanced use cases that show value worth paying for.

Each piece should fit into one of these buckets and serve a clear purpose. Awareness earns attention. Acquisition builds trust. Enablement drives success. Convert Paid turns success into growth.

Clarity is the standard. Use it to earn credibility.

Community

Reddit. GitHub. Discord. Slack. YouTube and other social platforms.
Join conversations, don't start pitches.

Be helpful. Add context. Share working examples.
When your content becomes the answer people link to, you've earned credibility.

Metrics

Measure adoption and revenue, not reach.
Awareness is useful, but only if it drives activation or expansion.

Focus on signals that show impact:

  • Product or API usage
  • Time to first success
  • Product-qualified leads
  • Developer-influenced revenue
  • Retention and repeat engagement

The goal is to prove that trust earned from developers shows up later in product usage and revenue.

Developer Marketing Skill

I built a Developer Marketing Skill for Claude that helps evaluate content, strategy, and campaigns against the principles in this handbook.

Use it to stress-test messaging, review technical content, plan developer campaigns, or get feedback on positioning. It applies a "trust first, pipeline second" philosophy with an emphasis on clarity, technical credibility, and measurable engagement.

Need more resources?

Check out my curated collection of developer marketing tools, newsletters, and resources.

ESC