title: "Anti-Pattern: Micro-Managing" last_updated: 2026-03-21 status: proven difficulty: intermediate prerequisites:
- Familiarity with agentic tool basics
- Comfort reading generated code
Micro-Managing
What It Looks Like
Instead of telling the agent what to build, you dictate how to build it line by line. "Create a variable called userList of type Array<User>. Then write a for loop that iterates over rawData. Inside the loop, create a new User object..."
Why Developers Do This
It feels safe. If you control every line, nothing can go wrong. It also comes from experience with less capable tools that needed exact instructions. Some developers simply find it hard to let go of implementation details.
Why It Fails
You're paying for an agent but using it as a typist. Micro-managed prompts are slower than writing the code yourself because you're describing code in English instead of just writing it. You also prevent the agent from applying patterns it knows well -- it might have a cleaner approach, but your step-by-step instructions override that.
The Symptoms
- Prompts that are longer than the generated code
- Output that looks exactly like you'd write (so why use the agent?)
- Missing opportunities for better patterns or idioms
- Slower than just coding it yourself
What to Do Instead
Describe the goal and constraints. Let the agent choose the implementation.
# Wrong: dictating implementation
claude "Create a function called processUsers that takes a parameter
rawData of type unknown[]. Use a for loop to iterate. Inside the loop
use a type guard to check if each item has an email property..."
# Right: describe the goal
claude "Write a function that takes raw API response data, validates
each item has the required User fields, and returns only valid users.
Use type-safe parsing -- no type assertions."
Set guardrails through your CLAUDE.md (preferred libraries, patterns to avoid) rather than micro-managing each prompt. Intervene on the output, not the process.