Skip to main content

Command Palette

Search for a command to run...

Where the Frontier Is Heading, and How to Keep Your Codebase There

The final post of a 28-post course for builders. What is worth following, what is worth ignoring, and how to keep your codebase current on a field that moves every week without drowning in the noise.

Updated
12 min read
Where the Frontier Is Heading, and How to Keep Your Codebase There

This is the last post of AI for Builders. Twenty-eight posts ago we started with a mental model — the LLM is a function, not a friend — and walked through how to call it, how to prompt it, how to retrieve for it, how to give it tools, how to ship it, and how to run the plumbing that separates a demo from a product. If you've read them all and you're still here, you are now equipped to build serious things with LLMs in production, and to debug them when they break.

The harder question — the one that's actually going to matter over the next couple of years — is how to stay equipped. The field moves every week. Every month there's a new frontier model, a new technique paper, a new framework, a new pricing change, a new benchmark, a new capability that didn't exist three months ago. It is exhausting to try to keep up with all of it, and it is a mistake to try.

So this last post is the thing I most wish someone had handed me three years ago: a short opinionated guide to what actually matters, what to ignore, and how to keep your codebase on the right side of the frontier without losing a week a month to AI news. No breathless "the pace of change is incredible" framing. Just the habits that have kept me productive through three generations of models.


What is actually changing, week to week

The field's surface area is enormous but most of it is noise. At the signal level, there are only a handful of things that actually matter for a working engineer:

  1. Frontier model releases. Every few months, a new top-tier model from Anthropic, OpenAI, Google, or a credible challenger changes what's possible. These are real events that you should follow. There are 4-8 per year.
  2. Meaningful price drops. The cost of equivalent-quality inference roughly halves every 12-18 months. Occasionally a provider announces a big price cut that changes the economics of your product. These are rare but worth catching within a week of release.
  3. New capabilities. "Tool use" was new in 2023. "Reasoning mode" was new in 2024. "Computer use" was new in 2025. Roughly once a year, a genuinely new capability type arrives that opens design space you didn't have. You want to know about these within a few weeks.
  4. Critical security or behaviour changes. Rare. When a major new prompt-injection class or model-behaviour shift hits, you want to know within days, because you may need to update your guardrails or evals.

That's it. Four categories. Everything else — the thousand papers a week on arXiv, the hundred new frameworks, the minute-by-minute Twitter drama about which model is better at a specific benchmark — is noise from the perspective of a builder, even though some of it becomes signal eventually.

The skill is filtering to this short list and treating everything else as optional reading.

Four signal types. Everything else is optional.


A short reading list that earns its time

You do not need to read every paper, every blog, every tweet. You need a small set of sources that filter the noise and flag the four signals for you. The sources I actually use, with a bias toward ones that are honest and slow-moving:

  • Provider changelogs. Anthropic, OpenAI, Google, and a few smaller credible labs publish release notes. Subscribe to these and actually read them when models change. Five minutes of your week; captures most of signals 1-3.
  • One or two careful newsletters. Short-list: Simon Willison's blog, Jack Clark's Import AI, Benedict Evans' AI coverage, Sequoia's AI Ascent pieces. Pick two, skim weekly. Drop any that feel like noise.
  • Hugging Face's trending models page, glanced at once a week. When a new open-weight model climbs the rankings fast, it's worth a look.
  • The release notes of the inference frameworks you use (vLLM, llama.cpp, whatever). These tell you when new features arrive at the tool layer, which is usually before they're in blog posts.
  • Your own production logs. Seriously. The most useful "news source" about how LLMs behave right now is what your users are experiencing. A weekly 20-minute review of recent eval drift and sampled production traces teaches you more about the real state of LLM quality than any blog.

What I do not read:

  • AI Twitter, as a daily habit. Occasionally useful, chronically distracting.
  • Every paper on arXiv. Deliberately skipping almost all of them is correct.
  • Vendor announcements from frameworks you don't use.
  • Benchmark leaderboards when a new one launches. Benchmarks are politics; your evals are truth.

The three habits that keep a codebase current

Independent of news reading, there are three habits that keep a production LLM codebase on the right side of the frontier:

Habit 1: quarterly "model sweep"

Once a quarter, spend an afternoon running your eval set (B2.5) against the latest version of every major model and your current production choice. Record the scores, the costs, and the latencies. If another model clearly beats your current one on your eval, plan a rollout (B5.5) to switch. If not, you've confirmed your choice is still right.

This is the single highest-leverage habit I know. Most teams never do it. They pick a model at launch and stay on it until something breaks. A quarterly sweep catches the free wins — a cheaper model that matches quality, a new version that fixes a failure you'd been working around, a capability that obviates a whole chunk of your pipeline.

# Pseudocode for the quarterly sweep
MODELS_TO_TEST = [
    "claude-sonnet-4-6",
    "claude-haiku-4-5-20251001",
    "gpt-5",
    "gpt-5-mini",
    "gemini-2.5-pro",
    "llama-3.3-70b",
]

def quarterly_sweep():
    results = {}
    for model in MODELS_TO_TEST:
        results[model] = {
            "eval_score": run_eval_set(model),
            "avg_cost": estimate_cost(model),
            "p50_latency": benchmark_latency(model),
        }
    save_to_report(results, today())

Forty lines of glue code. One afternoon per quarter. Real savings every year.

Habit 2: "surprise me" log

Keep a running log of things that surprised you about model behaviour — positive or negative. A model that could suddenly do something you thought was hard. A failure mode that bit you. A specific prompt move that worked unexpectedly well. A capability that broke in an update.

When the log grows in a quarter, it's a signal something has shifted. When it shrinks, it's a signal the field is quieter than the news feeds suggest. Over a year, the log is your personal benchmark of how much your mental model is being updated.

This is much more useful than reading about what "should" be true. Your list of surprises is the ground truth of what is true in your specific context.

Habit 3: "small experiment" budget

Every month, pick one thing from the frontier and spend 2-4 hours prototyping it. A new capability, a new framework, a new architectural pattern, a new benchmark. Not to ship — to learn. Write down what it did, what broke, whether it would help in your product, and whether it's worth a bigger investment.

The monthly experiment budget is how you stay fluent without going broke on "adopt everything new" churn. It's cheap, it's time-boxed, and most of them produce a "no, not yet" conclusion — which is itself valuable, because you can refer back to it six months later when someone on the team says "we should try X" and you can say "we did, here's what we found."


The trap: framework churn

One trap in particular sinks teams that try to keep up with the frontier: adopting new frameworks every quarter. Someone on the team reads about a new agent framework or a new orchestration tool, gets excited, proposes migrating the whole codebase, and the team spends three weeks on a migration that produces no user-visible change. Six months later, another framework is hot and the cycle repeats.

Don't do this. The cost of framework migration is enormous, the benefit is usually small, and the frameworks are churning faster than your product needs. Stable, boring, homegrown code beats new frameworks on a one-year horizon.

Practical rule: a framework has to clear a high bar before you adopt it, and the bar is "it solves a specific problem that is hurting us right now, and doing it ourselves would take longer." Not "it looks cool." Not "it's what everyone is using." A specific problem, a specific amount of pain, a specific cost-benefit calculation.


The things to ignore

Finally, the list of things I deliberately don't pay attention to, and suggest you don't either:

  • "AGI is coming" predictions. Not actionable. Not falsifiable. Not useful for building.
  • Model benchmark drama. A new benchmark favours the model that was tuned to the benchmark. Your evals are the only benchmark that matters for your product.
  • Social-media debates about model quality. Anecdotes and screenshots. Your production logs are real; their vibes are not.
  • "This changes everything" headlines. They rarely do. Wait two weeks and see if the claim holds up. Most don't.
  • Frameworks with fewer than 500 GitHub stars. Not a quality judgement, a signal-to-noise one. Enough new tools appear every week that you can reasonably wait for one to cross a threshold of adoption before looking.
  • Meta-discussions about prompt engineering as a discipline. Build things. Measure things. Opinions are cheap.

You can ignore all of these, forever, and still ship great LLM products. Most of them actively compete with the time you could spend on your eval set or your user feedback.


What just changed in your career

This is a strange closing section for a technical post, but I want to end here because it's the thing I'd tell any engineer starting on LLM work in 2026.

You now have durable skills. The specific models will change. The specific APIs will change. The specific frameworks will definitely change. But the things you learned in this course — treating the LLM as a function, writing prompts as code, building eval sets, shipping with observability, layering guardrails — these transfer forward. The next generation of LLMs will not obsolete them. The next generation of frameworks will wrap them. The next generation of products will demand them.

The other thing worth saying: you are now one of a small number of people who can actually ship real LLM products in a way that doesn't embarrass you in six months. That is a genuinely scarce skill right now, and it is the thing companies are hiring for. The hype about "AI engineers" is confused, but the underlying demand — for engineers who can build LLM features that don't break — is real and growing.

I wrote this course because the existing material fell into two camps. On one side, research papers and Karpathy-level tutorials that assume you're training models. On the other side, marketing posts that tell you an agent framework will solve all your problems. Neither helps someone who needs to ship a thing that works, on a deadline, with a team of people who aren't full-time AI researchers. This course was the handbook I wish had existed when I started. If it saved you a month of learning the hard way, it did its job.


A final checklist

Before I sign off, one checklist — the things every production LLM codebase should have, drawn from the whole course. If you're missing any of these, consider each one a follow-up task.

  • [ ] Every LLM call goes through a function with typed args. No magic strings in business logic. (B1.1, B2.2)
  • [ ] Every structured output uses schema enforcement, not regex. (B1.3)
  • [ ] Every user-facing call is async and streaming. (B1.2)
  • [ ] Every prompt is in code, versioned, and tied to an eval. (B2.2)
  • [ ] Every feature has an eval set with 20+ cases, running on every PR. (B2.5)
  • [ ] Every RAG call is hybrid search with metadata-tagged chunks. (B3.3, B3.4)
  • [ ] Every agent has a budget, tool error handling, and idempotent side-effectful tools. (B4.2, B4.5)
  • [ ] Every LLM call logs: prompt version, full prompt, full response, model, cost, latency, trace ID. (B5.3)
  • [ ] Every user-facing response passes through input and output guardrails. (B5.4)
  • [ ] Every prompt and model change rolls out through shadow + canary, not big-bang. (B5.5)
  • [ ] There is a quarterly model sweep on the calendar. (this post)
  • [ ] There is a "surprise me" log somewhere your team reads. (this post)

Twelve items. Most teams have fewer than half of them on day one, and more than half of them a year in. The shift from "fewer than half" to "most of them" is what this course was trying to cause. I hope it did.


What just changed in your code

  • Treat the four signal types as the only news you need: new frontier models, major price drops, new capabilities, security changes. Ignore everything else without guilt.
  • Run a quarterly model sweep. Put it on your calendar. Forty lines of code, one afternoon per quarter.
  • Keep a "surprise me" log and review it with your team each month.
  • Budget 2-4 hours per month for a small experiment with something new. Most will teach you "not yet" and that's fine.
  • Do not adopt new frameworks reflexively. The bar is "it solves a specific problem that's hurting us right now."
  • Work through the twelve-item checklist. Whatever you're missing is your next quarter's roadmap.

That's the course. Twenty-eight posts, roughly 70,000 words, one shared mental model that lets you think about LLMs as normal software rather than magic. If you came in uncertain about how to build with these things, you should leave confident — not because LLMs got easier, but because your handle on them got better.

The field will keep moving. The ladder you've built won't. Good luck shipping.


Course navigation

⬅️ Previous📍 You are hereNext ➡️
⬅️ Previous
B6.3 · Multimodal in Practice
B6.4 of B6.4Course end 🏁

📚 AI for Builders · Course Home — 28 posts, six modules.


Next: a companion track for PMs, designers, and founders ships soon. See AI Zero to Hero · Course Portfolio.


Cover photo via Unsplash. This post is the conclusion of the AI for Builders series.

A

A fascinating insight we've observed is that the real challenge isn't integrating LLMs into systems, but ensuring they're leveraged effectively in real-world workflows. Many developers focus on perfecting prompts, yet the real magic happens when these models act as agents within a structured framework, like Retrieval-Augmented Generation (RAG). This framework enhances their ability to retrieve and synthesize information dynamically, making codebases smarter and more adaptable. - Ali Muwwakkil (ali-muwwakkil on LinkedIn)

More from this blog

Learn AI - Zero to Hero

111 posts