Phase 1: Mindset Shift (Days 1–3) — Understand why traditional prompting is insufficient and what replaces it.
Understanding Core Concepts
1. Coding Agent ≠ ChatGPT
A normal LLM answers questions.
A coding agent can act: it reads files, edits code, runs tests, looks at errors, and tries again.
Think of it like the difference between asking a smart friend for advice versus hiring a junior developer who can actually open your project and make changes.
2. Evaluation-Driven Development
In normal software we write unit tests.
In AI systems (especially agents) the output is non-deterministic — the same prompt can produce different code.
So instead of only testing the final code, we also test the process that created it.
We create a set of real test cases, run the agent, score the result, then improve the instructions and repeat.
This closed loop — run → measure → improve → re-measure — is the core skill that separates systematic agent engineering from ad-hoc prompting.
3. Spec vs Prompt
Most people write vague prompts like "Make the face recognition better."
A spec is precise and machine-checkable:
- Exact inputs and outputs
- Edge cases that must pass
- Constraints (don't change the DB schema, keep the existing API, etc.)
- Success criteria (all 10 cases in cases.json must pass)
Vague prompt: "Make it better" → Agent guesses Clear spec: "Pass all 10 test cases" → Agent measures, improves predictably
A prompt-heavy workflow becomes dramatically more effective once you switch to spec-driven development.
4. Deterministic Checks vs LLM-as-a-Judge
Two ways to score the agent's work:
- Deterministic: Does the code compile? Do the unit tests pass? Does it return the expected output? These are objective and cheap.
- LLM-as-a-Judge: Ask another strong model "Is this code clean, secure, and maintainable?" Useful for softer qualities, but more expensive and less reliable.
Best practice: Start deterministic (compiled? tests pass? correct output?), then add judge scores for softer qualities later.
Tiny Action for Today (15–30 minutes)
Open one feature the agent has been writing — for example, face matching or attendance logging — and answer these three questions in a note:
- What does "success" look like in concrete terms?
- How would I automatically check if the agent succeeded?
- What is the weakest part of the instructions I currently give the agent?
That's it. No coding required yet — just clarity.