Skip to content
← All notes

Claude Code for beginners: what it actually is, and the four mistakes everyone makes first

It is not autocomplete and it is not a chat window that happens to know your code. It is an agent working directly in your project, and almost every early frustration comes from using it as though it were one of the other two.

Tools8 min read

Most people's first hour with Claude Code goes the same way. They ask it something small, it does something surprisingly large, and they either close it or start trusting it too much. Both reactions come from the same missing idea about what the thing is.

This is written for that first hour. Not a feature tour, which the documentation does better and which goes stale every few weeks anyway, but the mental model and the four mistakes that cost people the most time.

What Claude Code actually is

It is an agent that works inside your project. It runs in your terminal, and also in a desktop app, in a web app, and inside editors like VS Code and JetBrains, but the surface is not the important part.

The important part is that it reads your real files, edits them, runs your real commands, and reads the output to decide what to do next. You give it a goal rather than a line to complete, and it goes and does several steps toward that goal on its own.

That is a different category of tool from the two things people usually mistake it for. Autocomplete predicts the next few tokens where your cursor is. A chat window can talk about code you paste into it. Neither of them can open a file you did not mention, run your test suite, read the failure and change its approach.

Everything below follows from that one difference.

Mistake one: giving it a task instead of a goal, or a goal instead of a task

There are two opposite errors here and beginners usually make both in the first day.

The first is treating it like autocomplete: asking for one small edit at a time and reviewing each. That works, and it wastes most of what the tool is for. If you can describe the finished state, describe the finished state.

The second is the opposite and more expensive. Asking for something enormous and vague, like making the app faster or cleaning up the codebase, produces a large diff touching many files, built on assumptions you never saw it make. It usually looks plausible and is very hard to review.

The size that works is a task you could explain to a competent new colleague in a couple of sentences, where you would recognise a correct result when you saw it. Bounded enough to check, big enough to be worth delegating.

The two opposite errors. Too small a request uses an agent as autocomplete, one edit at a time. Too large and vague produces a sprawling change across many files built on assumptions nobody saw it make. The size that works sits between them.
Bounded enough to check, big enough to be worth delegating.

Mistake two: not reading the diff

This is the one that actually hurts, and it is tempting precisely because the output usually looks good.

Generated code fails differently from code somebody wrote. It tends to be locally correct and globally wrong: clean naming, sensible structure, and a subtly different problem solved from the one you had. Nothing about the surface of the change signals it.

So read the diff before you accept it, and read it as a reviewer rather than as an author. The question is not whether the code looks reasonable, because it will. It is whether it does the thing you actually wanted, in the way your codebase already does things.

This is not a temporary limitation to wait out. Reviewing is the part of the job that moved toward you when producing got cheap.

A change that is locally correct and globally wrong: clean naming, sensible structure, and a subtly different problem solved from the one you had, with nothing on the surface to signal it.
It will not look suspicious. That is the whole difficulty.

Mistake three: explaining your project conventions over and over

The single highest-leverage thing a beginner can do is write the project's rules down where the agent reads them, rather than repeating them in every conversation.

Claude Code looks for a CLAUDE.md file in your project and treats it as standing instructions. Put in it the things you would tell a new engineer on their first day and would be annoyed to repeat: which package manager this repo uses, how to run the tests, the conventions that are not obvious from the code, and the specific mistakes people make here.

The trick is that it should be corrections rather than aspirations. A rule earns its place after somebody, or something, gets it wrong once. A file full of general good intentions is noise; a file that says do not use this command because it silently corrupted the database last month is worth a great deal.

Every hour spent on that file pays back across every future session, which is not true of anything you type into a single conversation.

Mistake four: assuming it knows what it cannot know

It knows your code, because it can read it. It does not know what is in your head, what was decided in a meeting, which of two similar functions is the one that matters, or that the ticket is wrong.

It also cannot tell you when it is out of its depth. There is no equivalent of a colleague saying they are not sure. It produces a confident answer either way, and confidence carries no information about correctness.

The practical version: supply the context that is not in the repository, and be specific about what would count as done. Most disappointing results are a missing constraint rather than a missing capability.

What to do on day one

A short version, in order, that will get you further than reading about it will.

  • Pick a real task you already know how to do, so you can judge the result. Not a toy, and not something critical.
  • Ask for the finished state rather than the first step, then read the whole diff before accepting anything.
  • Write a CLAUDE.md the first time you find yourself repeating an instruction. Add to it every time you correct the same thing twice.
  • Ask it to explain a part of the codebase you do not know. Reading is where it is most reliably useful and least risky.
  • When something comes back wrong, look at what context was missing before you conclude the tool cannot do it.

The part that does not get easier

Getting good at Claude Code is mostly not about learning the tool. The commands are quick to pick up and they change.

What takes longer is the judgement to tell a good result from a plausible one in your own domain, and that is the thing the tool cannot supply for you. It makes producing cheap, and leaves deciding whether the output was worth producing exactly where it was.

Which is the useful frame for beginners: you are not learning to type instructions. You are becoming the reviewer of a fast, confident, tireless colleague who is occasionally wrong in ways that look right.

Common questions

What is Claude Code?
An AI coding agent that works directly in your project. It reads and edits your real files, runs your real commands, and uses the output to decide what to do next, rather than only suggesting completions or discussing code you paste in. It runs in the terminal, in a desktop app, on the web, and inside editors like VS Code and JetBrains.
How is Claude Code different from autocomplete tools?
Autocomplete predicts the next tokens at your cursor. Claude Code takes a goal and works toward it across multiple steps: opening files you did not mention, running tests, reading failures and changing approach. That is why the useful unit of work is a task rather than a line.
What is a CLAUDE.md file and do I need one?
It is a file in your project that Claude Code reads as standing instructions, so you do not repeat your conventions in every session. You do not need one to start, and it becomes the highest-leverage thing you can write the moment you notice yourself giving the same correction twice. Write down specific corrections rather than general intentions.
Is it safe to let an AI agent edit my code?
Work in version control and read the diff before accepting it, which you would do for any colleague's change. The specific risk worth knowing is that generated code tends to be locally correct and globally wrong, so it rarely looks suspicious. Review for whether it solved your actual problem, not for whether the code looks tidy.
Do I need to know how to code to use Claude Code?
You need enough understanding of the domain to tell a correct result from a plausible one, which is a lower bar than being able to write the code yourself and a much higher bar than none. Without it you can still produce changes, and you cannot tell which of them are wrong.

PDP Quest exists because of the problem underneath all of these: when output stops indicating capability, you need another way to know who can actually do the work.

See how verification works →