Agentic Engineer

Become an Agentic Engineer

Learn to build what you wish existed.

Go from zero to building real agentic software in 90 days. For free.

I have been teaching myself how to code for ten years. I did not go to school for it. I did not pay for a coding bootcamp. I learned the same way a lot of self-taught builders learn: I found people who knew more than I did, followed them while they built real things, broke a lot of shit, figured out why it broke, and kept building.

In the last six months, I have shipped more than $100,000 in software.

If I had to speed run that entire learning process again, I could get back to where I am today in under 90 days following the path on this page.

I am not going to record a worse version of courses that Hugging Face, LangChain, Google, Stanford, and people who are better teachers than me have already made available for free.

I am going to show you where the good information is, what order I would learn it in, what I would pay attention to, and what I would build along the way.

The information already exists. You need the path through it.

You are going to build one thing.

Before you start learning, pick something you wish existed. Not a tutorial project you think will look good in a portfolio. Pick a problem you actually care about solving.

That project will follow you through this entire course.

At first, you are going to find someone who has already built something close to it and follow along. Then you are going to understand how their application works. Then you are going to start changing it.

Eventually, you will direct agents to build parts of it, create the systems that test their work, and design your own agents around the problem.

You are not going to spend 90 days preparing to build.

You are going to learn because the thing you are building requires you to.

The path

Stage One

Learn how software fits together.

Build a complete application so files, databases, APIs, authentication, servers, deployment, and the rest of the vocabulary have somewhere real to live.

Stage Two

Learn to direct agents.

Stop trying to one-shot the answer. Learn how to translate what you want into context, tools, instructions, and work an agent can actually perform.

Stage Three

Learn to make the system reliable.

Build tests and evaluations around the work. Inspect failures, find what was missing, and keep improving until another person can use what you built.

Stage Four

Build your own agentic system.

Create your own agents, orchestration, context systems, and evaluation loops. Change the architecture around the problem instead of accepting whatever architecture a framework gives you.

You do not advance because you finished a playlist.

You advance because you can build the thing.

Adam will give you a head start.

I am building Adam as the agentic software factory I wish I had. Adam gives coding agents a system around the work. It helps research the problem, define requirements, break the project into smaller jobs, give agents clear responsibilities, test what they build, and keep working until the result meets the standard defined by the human builder.

You can use Adam while you learn.

But I do not want Adam to become another magic box you depend on without understanding what it is doing.

This course teaches you the ideas underneath it.

By the time you reach the advanced work, you should understand those ideas well enough to change Adam for yourself.

Use the factory. Learn how the factory works. Then make it yours.

Stage One

Learn how software fits together.

You do not need to become a computer scientist before you build something.

One of the easiest ways to spend years learning how to code is to keep preparing to build instead of building. There will always be another language you could learn, another framework you could study, another fundamentals course you could finish before you feel ready.

I would do the opposite.

Find something close to the product you already want to make and build it.

You are going to encounter files, paths, servers, clients, APIs, databases, authentication, environment variables, deployment, and all the other vocabulary along the way. Now those words have somewhere to live.

You are not memorizing what an API is because somebody told you it might matter someday. You are learning what an API is because the thing you are building suddenly needs one.

Pick one build.

There are builders on YouTube who will spend hours taking you from an empty project to a working application. Use them.

JavaScript Mastery, Code With Antonio, and Elliott Chong have already created large libraries of start-to-finish builds covering SaaS products, AI applications, marketplaces, dashboards, voice applications, authentication, databases, APIs, payments, deployment, and most of the basic systems you are likely to encounter while building an MVP.

You do not need to complete all three. You do not even need to use the exact tutorials I recommend.

Browse their projects and find the build that gets closest to the thing in your head. That motivation matters more than finding the theoretically perfect beginner course.

JavaScript Mastery

If you are starting from zero, I would begin here.

The Next.js 15 Crash Course: Build and Deploy a Full-Stack Production App walks through a complete modern application without requiring you to learn every piece in isolation first.

Pay attention to the project structure, routing, server and client behavior, authentication, data, search, performance, and deployment.

Do not worry about memorizing every line of syntax. Watch how the pieces meet.

Code With Antonio

Once you can move around a project without everything feeling foreign, Antonio's larger builds become useful.

His Full Stack AI Voice SaaS build is long because the application itself has a lot of moving pieces. That is the value.

Authentication stops being a theoretical lesson because users need to sign in. The database exists because the product needs somewhere to remember things. The API exists because your application needs something from another system.

You see the architecture because the product forces the architecture to exist.

Elliott Chong

Another way into your first AI product.

Elliott's Full Stack AI Course Generator is a useful bridge between conventional full-stack development and an AI-powered product.

Again, the exact application is not sacred. Find the closest useful starting architecture. Then use it.

Follow. Explain. Transform.

This is the rule for your build-along.

First, follow the instructor. Actually build the thing. Do not skip half the project because your coding agent says it can finish it for you. You are trying to watch a complete product come alive once.

Then explain it.

Close the tutorial and open the project. Click something. Trace what happens. Where does that action go? Which code runs in the browser? What happens on the server? Where is information stored? Which outside service gets called? How does the result get back to the person using the application?

Ask your coding agent to help you understand anything you cannot follow.

Then transform it.

Change the audience. Change the data. Remove a feature. Add a workflow. Give your coding agent something the instructor never built. Start turning their application into the thing you actually wish existed.

That final step matters.

Reproducing a tutorial can create the feeling of competence without requiring you to make a single independent decision. Transformation forces you to begin making them.

Use coding agents the whole time.

You are learning to become an agentic engineer. Use the agents.

Ask them what unfamiliar code does. Ask them to trace a request through the application. Ask why a folder exists. Ask what will break if you change something.

Then start giving them work.

Tell the agent the feature you want. Have it inspect the existing architecture before changing anything. Ask it to explain its plan. Let it implement the change. Run the application. Test what it produced. When something breaks, send the failure back and work through it together.

You do not need to prove you can handwrite every line of JavaScript from memory. You need to understand the product well enough to know what you are asking the agent to change and whether the result actually works.

Stage One gate

You are done with Stage One when you can ship.

You should have a working application online. It should no longer be the same application the instructor built.

You should be able to explain what happens from the moment someone interacts with the interface to the moment the application returns a result.

You should know where the important logic lives, where the data lives, what outside services the product depends on, and how the application gets deployed.

You will not understand everything. You do not need to.

You understand enough of the system to start directing agents inside it.

Stage Two

Learn to direct agents.

A coding agent can write a lot of code very quickly. That makes it tempting to describe the entire thing you want and wait for the finished product.

I see people trying to one-shot software this way all the time. That is not the skill we are trying to build.

An agentic engineer is invested in solving the problem. When the output is wrong, the first question is not whether the model is stupid.

What did the agent not understand?

What context was missing? Where did your intent fail to translate into something the agent could work with? What assumption did you leave inside your own head?

That is the work.

Learn what an agent actually is.

Start with the Hugging Face Agents Course.

It gives you the wider picture: models, reasoning and planning, tools, actions, observations, frameworks, deployment, evaluation, and practical exercises.

What I want you to understand is the loop.

A model receives context. It decides what should happen next. A tool performs an action. The result comes back. The system uses that new information to decide what happens next.

Once that mental model is clear, the frameworks become much easier to understand.

Learn how the workflow holds together.

Next, use LangChain Academy to work through Introduction to LangChain and Introduction to LangGraph.

LangGraph gives you a more explicit way to see state, nodes, edges, routing, memory, human feedback, subgraphs, and longer-running workflows.

Do not get hung up on whether LangGraph is the framework you will use forever. Frameworks will change. Learn the questions underneath them.

  • What information needs to persist?
  • Who owns each decision?
  • Which actions are deterministic?
  • Where does the model choose?
  • When should the system stop?
  • What happens when something fails?
  • Where does a person need to come back into the loop?

Those questions survive the framework.

Give agents a North Star.

Before an agent can build the right thing, you need to know what the right thing is. Define the person. Define the problem. Define what should be possible when the work is complete. Define what does not belong.

Give the agent enough context to understand why the system exists before asking it to decide how the system should work.

This does not mean writing a giant specification that predicts every implementation decision. It means removing the important ambiguity.

A vague request forces the agent to fill the gaps. And because language models are designed to produce fluent answers, the gap can disappear underneath something that sounds convincing.

Do not let fluency hide missing context.

Break the work down.

Once the North Star is clear, stop asking one agent to hold the entire project in its head. Break the work into jobs that can be understood and evaluated.

  • What needs to be researched?
  • What needs to be designed?
  • What needs to be built?
  • What information does each job require?
  • What would prove that job is complete?

Agents become much more useful when the responsibility is narrow enough that success can be inspected.

The goal is not to create as many agents as possible. The goal is to give the work the structure it needs.

Context is part of the engineering.

Your agent knows a lot about software. It does not automatically know your project. It does not know why you rejected an earlier approach. It does not know what your user told you yesterday. It does not know which architectural decision exists because of a constraint that never made it into the code.

That context may live in the repository, documentation, previous conversations, user feedback, research, tests, errors, or your own head.

Your job is to make the right context available for the work in front of the agent. Too little context forces it to guess. Too much irrelevant context makes the useful information harder to find.

Agentic engineering is partly the work of deciding what the agent needs to know right now.

Compare how other teams solve the same problem.

Once the core mental model makes sense, look at other ecosystems.

Use Google's Agent Development Kit material to see how another team represents agents, tools, sessions, memory, evaluation, multi-agent systems, and deployment.

Use Microsoft's AI Agents for Beginners to fill gaps and see familiar concepts explained another way.

Use Anthropic's developer material to study tools, MCP, structured outputs, context, and agent patterns.

Use OpenAI's Agents SDK material to explore tools, handoffs, orchestration, traces, and sessions.

Do not turn this into another checklist of courses you have to finish. You are comparing implementations.

Take something you already understand and see how another ecosystem expresses it. That is how you learn the difference between the concept and the framework.

Build your agent.

Now stop consuming courses. Take the project you started in Stage One and give the agent a real job inside it.

Give it tools. Give it information that persists beyond one prompt. Give it a reason to inspect what happened before deciding what happens next. Create a point where the correct action is to stop and ask a human. Make the agent useful enough that another person could benefit from it.

Then use it. Watch where it fails.

When it does, resist the urge to randomly rewrite the prompt until the output looks better. Find the translation failure.

  • What did you know that the agent did not?
  • What instruction was ambiguous?
  • What context was missing?
  • What responsibility was too broad?

Fix that. Then run it again.

Stage Two gate

You are done with Stage Two when you can take a problem you understand and turn it into work an agent can perform.

You should be able to explain the North Star, define the agent's responsibility, provide the context and tools it needs, inspect what it did, and understand why the system behaved the way it did.

The agent should be part of your product now. Not a chat window sitting beside it.

Stage Three

Learn to make the system reliable.

Something working once is not proof that it works. This becomes especially important with agents because the output can look incredibly convincing.

The code can be clean. The explanation can sound reasonable. The demo can work perfectly. And the system can still be wrong.

Agentic engineering requires evidence.

Start tracing early.

Use the tracing and evaluation material from LangSmith to learn how to inspect what actually happened inside an agentic workflow.

Look at the model calls. Look at the tool calls. Look at the state. Look at the path the system took.

When something fails, you want more than the final bad answer. You want to know where the failure entered the system.

That changes debugging.

Instead of staring at the output and guessing, you can inspect the work.

Define success before you evaluate it.

Create examples of what should happen. Create examples that should fail. Create edge cases. Create situations where the correct behavior is to stop because the system does not have enough information.

Then define what counts as success.

Some checks should be deterministic. Did the tool return the required data? Did the system use the correct record? Did the function behave as expected? Did the output match the required structure?

Other evaluations require judgment. Was the answer actually useful? Did the agent use the right evidence? Did it follow the intended process? Did it preserve the important constraints?

And some decisions still need a person. The agent should not be the only system deciding whether its own work succeeded.

Write the test before the agent does the work.

When possible, define what passing looks like before implementation begins. That changes the relationship with the coding agent.

Instead of: Build this and tell me when you are done.

The job becomes:

Here is the behavior we need. Here is the test that proves it. Keep working until the test passes.

Now the agent has something stronger than its own confidence to work toward.

The same principle applies outside code. If an agent qualifies leads, build examples of qualified and unqualified leads. If it performs research, define which claims require evidence and what sources are acceptable. If it takes actions, define the states where the action is allowed and where human approval is required.

Tests turn intent into evidence.

Let failures teach you.

Your system is going to fail. Good. That is where the useful work starts.

Do not throw the failure away after you fix it. Save it.

  • What happened?
  • Why was the output wrong?
  • What context was missing?
  • Which assumption did the system make?
  • Could a deterministic check have caught it?
  • Should the responsibility have been narrower?
  • Does this failure reveal a test that should exist forever?

Every meaningful failure can improve the environment the next agent works inside.

The goal is not to keep solving the same problem manually. The goal is to make the system harder to fail in the same way twice.

Context becomes a system.

As the project grows, context stops being a prompt-writing problem. Different agents need different information. Some context should persist. Some should be retrieved only when relevant. Some should be compressed. Some should never be given to a particular agent at all.

This is where context engineering becomes one of the central parts of the work.

Hugging Face's context material and Anthropic's work on context and agent design become much more useful now because you have experienced the problem yourself.

Do not study context because it is an AI buzzword. Study it because your own system is now painful enough that you need a better way to decide what each agent knows.

Keep the human responsible.

Reliability does not mean removing the human. It means making responsibility explicit.

  • What can the system do alone?
  • What needs approval?
  • Which mistakes are reversible?
  • Which actions affect another person?
  • Where does uncertainty need to become visible?

A good human-in-the-loop system does more than put an approval button at the end. It gives the person enough evidence to make the approval meaningful.

Stage Three gate

You are done with Stage Three when another person can use what you built.

Your system should survive more than the happy path you used while developing it. You should have tests or evaluations that make important failures visible. You should be able to inspect what the agent did. You should know where human judgment remains required.

And when the system fails, you should have a repeatable way to learn from that failure and improve it.

At this point, you are not just making agents do things. You are engineering the environment that makes their work useful.

Stage Four

Build your own agentic system.

Now you are allowed to wander.

The first three stages are opinionated because unlimited choices are expensive when you are learning.

By now, you can build software. You can direct agents. You can provide context. You can trace what happened. You can evaluate the work. You can ship something another person can use.

Now you can start changing the system itself.

Build your own agents.

You no longer need to accept the agent architecture somebody else designed. Create an agent around a responsibility your project actually needs. Give it the tools required for that job. Decide what context it receives. Define what it produces. Define how its work gets evaluated.

Then see whether separating that responsibility actually improves the system.

Do not create five agents because a diagram with five boxes looks sophisticated.

Complexity has to earn its place.

Sometimes one model call is enough. Sometimes you need a deterministic workflow. Sometimes one agent with good tools can handle the entire job. Sometimes the work genuinely benefits from specialized agents with separate responsibilities.

The problem decides.

Learn orchestration.

Anthropic's material on prompt chaining, routing, parallelization, orchestrator-worker systems, evaluator-optimizer loops, and autonomous agents is useful here.

Now those patterns are not abstractions. You have a system of your own to compare them against.

  • Where can work happen in parallel?
  • Where does one result need to become context for another?
  • Should an evaluator send work back for another pass?
  • Does a supervisor actually improve the result, or does it add another probabilistic layer that can fail?

The point is not to implement every pattern. The point is to understand what each architecture buys you and what complexity it adds.

Learn to evaluate trajectories.

Longer-running agents create a harder evaluation problem. You are no longer grading one answer.

The final answer might be correct even though the agent took a terrible path to get there. Or the final answer might look wrong even though the agent correctly discovered that the original task could not be completed.

You may need to evaluate which tools were used, which evidence was gathered, whether the agent recovered from failure, whether it asked for help at the right moment, and whether it completed the task through an acceptable path.

Anthropic's advanced evaluation material belongs here because now you have something real to evaluate.

Explore self-improving systems.

Stanford's Self-Improving AI Agents material takes you deeper into verification, feedback, search, reinforcement learning, memory, planning, software engineering agents, and long-horizon evaluation.

This is not where I would start. It becomes interesting once you have built enough systems to have your own failures to connect the research to.

You can now ask better questions.

  • What parts of the system can improve from feedback?
  • What should become memory?
  • What should become a test?
  • Where can an evaluator safely trigger another attempt?
  • Which changes still require human judgment?
  • How can the system improve without quietly drifting away from the goal the human defined?

Go deeper when the problem earns it.

If you want a stronger intuition for what is happening underneath the models, use 3Blue1Brown to explore neural networks, gradient descent, embeddings, transformers, and attention.

If context becomes your bottleneck, go deeper into context engineering. If your project requires deep research, build a research system. If your agent needs to coordinate specialists, experiment with subagents. If you need better memory, build it.

The advanced curriculum is no longer a list I can completely prescribe for you. Your project should start choosing what you learn next.

That is the point.

Make Adam yours.

This is where Adam changes roles.

At the beginning of the course, Adam can help you build. Now Adam itself can become something you build.

Inspect how the factory works. Change the way work is researched. Change how requirements are gathered. Build a specialized agent for a problem you repeatedly encounter. Change how tasks are divided. Add an evaluator. Replace an orchestration pattern. Change the context available to a particular agent. Remove something you do not need.

Fork it into the software factory that fits the way you build.

Adam is open source because I do not think your ability to build should depend on permanently renting my idea of the right agentic system.

Take it. Understand it. Improve it. Make it yours.

The 90-day speed run

I would not divide this course into ninety little boxes and pretend everybody should be on the same lesson on Day 37. Your project is going to fight you differently than somebody else's.

Use the stages.

Spend the beginning of the path getting from zero to a deployed application you understand. Then learn the core agent concepts while you continue turning that application into the thing you actually wanted to build.

Build reliability as soon as the agent starts doing work that matters. Use the final stretch to begin creating your own agents, changing the architecture, and following the advanced material your project has earned.

You can move faster. You can move slower.

Ninety days is the speed run.

The gate is the work.

What I am actually teaching you

Most of the knowledge on this page is not mine. That matters.

Hugging Face knows its agent material better than I do. The LangChain team understands LangGraph better than I do.

Anthropic, OpenAI, Google, Microsoft, Stanford, and the people building these systems every day can teach their work directly.

JavaScript Mastery, Code With Antonio, and Elliott Chong have spent thousands of hours teaching people how complete applications fit together.

I do not need to recreate their work and put my face on it. What I can give you is the path I wish someone had given me.

  • What should you learn first?
  • What can wait?
  • What should you build while you learn it?
  • What actually matters when the framework changes?
  • How do you know when you understand enough to move forward?
  • And how do you get from following someone else's tutorial to building something that only existed in your head?

That is this course.

I will keep the path current.

There is a downside to learning AI from the internet. It changes constantly.

Frameworks change. APIs change. Libraries break. Better courses get published. Old tutorials slowly become archaeology.

A curated path only has value if the curation continues. When a better resource appears, it should replace the weaker one.

When a tutorial is still conceptually useful but an implementation detail has changed, I will give you the context required to get through it.

When something is no longer worth your time, it should disappear.

You should not need to become an expert in the AI education ecosystem before you can become an agentic engineer.

That is my job here.

The education is free.

Every core learning resource in this path is freely available. You do not need to pay me for a course. You do not need a coding bootcamp. You do not need to enroll in a university.

The software you build may use model APIs, cloud infrastructure, databases, or other services that charge for actual usage. Free education does not make compute free.

But the knowledge is already available. Go learn it. Then use it.

You become an agentic engineer by building.

The tutorial is not the destination. Neither is the certificate. Neither is Day 90.

You become an agentic engineer when you can take a problem you understand, define what success means, translate your understanding into context agents can work with, direct those agents through the work, and create the evidence required to know whether what came back is actually good.

Then you ship it. Another person uses it. Reality tells you what you got wrong. You go back, figure out where the context or translation broke, improve the system, and ship again.

That is the loop.

You do not need permission to start. You need something you wish existed.

Go build it.

Next

Build with other people when you are ready.

You do not need to join my community to complete this course. The entire path is free.

The Builders Community exists for the part a course cannot provide forever: other people building beside you.

Bring the idea, the bug, the system that almost works, or the problem you cannot stop thinking about. Show the work. Help someone else with theirs. Keep building until the thing becomes real.