Three weeks ago, I watched a senior engineer—fifteen years experience, FAANG background—install Claude Code and immediately ask it to "write a todo app."
You've Been Using Claude Code Wrong Since Day One
Reading time: 22 minutes | For: Developers, Engineers, Builders | Part 1 of 3
Everyone installs it. Almost nobody understands what they installed.
Three weeks ago, I watched a senior engineer—fifteen years experience, FAANG background—install Claude Code and immediately ask it to "write a todo app."
He was using a Formula 1 car to go grocery shopping.
Not because he's incompetent. Because nobody told him what Claude Code actually is.
The Apprenticeship Lens
Before I show you how to set this up properly, I need to change how you think about it.
Consider how blacksmiths were trained in medieval guilds. An apprentice didn't start by forging swords. They started by maintaining the forge. Organizing the tools. Understanding the rhythm of the workshop before touching metal.
The master wasn't teaching metalwork. The master was installing infrastructure in the apprentice's mind.
Claude Code works the same way.
It's not a code generator. It's not an autocomplete on steroids. It's a cognitive infrastructure layer that sits between your intent and your codebase.
Install it like a tool, it performs like a tool.
Install it like infrastructure, it performs like infrastructure.
Let me show you the difference.
Installation: What Nobody Tells You
Here's the standard installation:
npm install -g @anthropic-ai/claude-code
Done, right? Start coding?
No. That's like buying a car and sitting in the parking lot.
The Real Setup
Step 1: Anthropic API Key
export ANTHROPIC_API_KEY="your-key-here"
Put this in your .zshrc or .bashrc. Not somewhere you'll forget. Claude Code without persistent API access is like a phone without signal.
Step 2: Start It Right
claude
That's it. That's the command. But here's what happens underneath:
- Claude Code scans your current directory
- It reads your project structure
- It builds a mental map of your codebase
- It primes itself with context
Starting from the wrong directory means starting with wrong context. Always start from your project root.
Step 3: The First Command Matters
Most people type something like: "Help me understand this project"
Better: Say nothing. Let it load. Then:
/init
This command creates a CLAUDE.md file—your project's DNA for Claude Code. We'll come back to this. It's more important than you think.
The Five Things You Need to Know Day One
1. It's a Terminal, Not a Chatbot
Claude Code runs in your terminal. It has access to your filesystem. It can run commands. It can read and write files.
This changes everything.
When you say "fix the bug in auth.js," Claude Code can:
- Read auth.js
- Understand the context from other files
- Run your tests
- Make the fix
- Verify it works
- Commit the change
A chatbot can only suggest. Claude Code can do.
2. Context is Everything
Every conversation in Claude Code happens within your project's context. It knows:
- Your file structure
- Your dependencies
- Your git history
- Your code patterns
Use this. Don't explain what your project does—it already knows. Skip to what you want.
Bad: "I have a Next.js project with a users table and I want to add authentication..."
Good: "Add OAuth2 with Google to the auth system"
3. The CLAUDE.md File
When you run /init, Claude Code creates a file called CLAUDE.md in your project root. This file is your project's instruction manual for Claude.
# Project Overview
This is a SaaS billing platform...
# Code Style
- Use TypeScript strict mode
- Prefer functional components
- Never use var
# Important Contexts
- Stripe integration in /lib/stripe
- Auth handled by NextAuth
Edit this file. Refine it. The better your CLAUDE.md, the less you explain each session.
Think of it as training your apprentice once, instead of every morning.
4. Tools, Not Chat
Claude Code comes with built-in tools:
| Tool | What It Does |
|---|---|
Read |
Read files into context |
Write |
Create new files |
Edit |
Modify existing files |
Bash |
Run terminal commands |
Glob |
Find files by pattern |
Grep |
Search file contents |
You don't need to invoke these directly. Claude Code uses them automatically. But knowing they exist changes how you prompt.
Instead of: "Show me what's in config.js"
Say: "Read config.js and explain the database setup"
The first is a request. The second is a task.
5. It Remembers (Within Sessions)
Each Claude Code session maintains context. It remembers what you discussed, what files you touched, what problems you're solving.
But sessions end. When you close the terminal, context clears.
Work in longer sessions. Don't start and stop for every task. Batch your work. Let context compound.
Your First Real Use Case
Let's do something simple but useful. Something that demonstrates power without complexity.
The Task: Add a README to a project that doesn't have one.
The Old Way:
- Open a new file
- Think about what to write
- Write something generic
- Realize you forgot sections
- Add more
- Commit
The Claude Code Way:
Create a comprehensive README for this project.
Include installation, usage, API documentation, and contribution guidelines.
Base everything on the actual code—don't guess.
That's it. Claude Code will:
- Scan your codebase
- Identify the tech stack
- Extract usage patterns from the code
- Generate accurate documentation
- Create the file
One prompt. Five minutes of work condensed into thirty seconds.
But here's the insight most miss: Claude Code didn't write a README. It read your code and transcribed its intent.
That's different. That's useful. That's infrastructure.
Three Starter Use Cases That Actually Matter
Use Case 1: Code Archaeology
You inherited a codebase. It's a mess. Nobody documented anything. The original author left. Sound familiar?
Explain the data flow from user login to dashboard render.
Trace through every file. Show me the path.
Claude Code will read the relevant files, trace the execution path, and give you a map. Not a guess—an actual trace based on real code.
Use Case 2: Pattern Migration
You need to change how something works across the entire codebase. Maybe you're moving from callbacks to promises. Maybe you're changing an import pattern.
Find all instances of the old Logger import.
Show me what changes are needed.
Then make those changes across all files.
This would take hours manually. Claude Code does it in minutes. And it doesn't miss files.
Use Case 3: Test Generation
Nobody writes tests. Everyone needs tests. Claude Code knows your code well enough to test it.
Generate unit tests for the payment processing module.
Use Jest. Cover edge cases. Mock external services.
Write them to __tests__/payment.test.ts
It reads your payment code, understands the logic, and generates tests that actually test things.
The Foundational Mindset Shift
Here's what separates people who "use Claude Code" from people who work with Claude Code:
Users ask it to write code.
Practitioners tell it what outcome they want and let it figure out the implementation.
It's the difference between "write me a function that validates emails" and "make sure users can't sign up with invalid emails."
The first is a task. The second is a goal.
Claude Code excels at goals. It can break them down, implement them across files, and verify the outcome. You just have to stop micromanaging the implementation.
Common Setup Mistakes (And Fixes)
Mistake 1: Starting in Home Directory
Never start Claude Code from ~. Always navigate to your project first.
cd ~/projects/my-app
claude
Context comes from location. Wrong location, wrong context.
Mistake 2: Skipping CLAUDE.md
This file is optional. Most people skip it. They're leaving power on the table.
Spend 10 minutes writing a good CLAUDE.md. Save hours of repeated explanations.
Mistake 3: One-Shot Sessions
Opening Claude Code for a single task, then closing it. You lose all context. Batch your work. Think in sessions, not tasks.
Mistake 4: Treating It Like ChatGPT
Stop saying "please" and "thank you." Stop adding context it already has. Stop asking questions you could give as commands.
Not: "Could you possibly help me understand why the tests are failing?"
Yes: "Debug the test failures in auth.spec.ts"
Be direct. Be concise. Be clear.
The Apprentice Becomes Useful
In the blacksmith guild system, apprentices spent years maintaining tools and organizing workshops before they made anything. Seemed like wasted time. Wasn't.
They were building mental infrastructure. Understanding the environment. Learning the rhythm.
Then, when they finally touched metal, they already knew where everything was. The forge was an extension of themselves.
That's what proper Claude Code setup does. It's not about the installation command. It's about installing the right mental models.
You're not learning a tool. You're establishing a working relationship with a collaborator who happens to be software.
Do it right from the start. Everything else builds on this foundation.
What Comes Next
This was Part 1. Setup. Basics. Foundation.
Part 2 goes deeper: remote sessions, Agent SDK, subagents, parallel execution, and techniques that separate intermediate users from advanced practitioners.
Part 3 goes dark: the techniques only 0.1% know. The undocumented behaviors. The emergent capabilities nobody's writing about.
But you can't run before you walk. And most people never even learn to walk properly.
Now you have.
Part 2: Claude Code Mastery—Remote Sessions, Agent SDK, and Advanced Techniques → Coming next
Written by
Promptium Team
Expert contributor at WOWHOW. Writing about AI, development, automation, and building products that ship.
Ready to ship faster?
Browse our catalog of 1,800+ premium dev tools, prompt packs, and templates.