AI-assisted implementation
Mid / SeniorChoosing between completion, chat and agents, working in small verified steps, and handling hallucinations and legacy code.
Created 19 October 2026
10 concepts · detail hidden
01Glossary — terms used in this page
#c-glossary-terms-used-in-this-page- MCP (Model Context Protocol) — an open protocol for connecting a model to external tools and data sources.
- Vibe coding — accepting generated code with little review, steering only by running it.
- Characterization test — a test that records current behavior of legacy code before changing it.
- Typosquatting — publishing a malicious package whose name resembles a popular one.
- Scaffolding — generating the boilerplate skeleton of a project, module or endpoint.
02Completion, chat and agent — choosing the mode
#c-completion-chat-and-agent-choosing-the-mode- Completion for boilerplate and well-known patterns inside a function.
- Chat for explaining code, exploring an API, or drafting a snippet to adapt.
- Agent for multi-file changes, refactors and tasks that need running tests; it can iterate against failures on its own.
03Where AI is strong and where it is weak
#c-where-ai-is-strong-and-where-it-is-weakStrong: boilerplate, glue code, well-known frameworks, translating between languages, writing tests for clear behavior, explaining unfamiliar code. Weak: novel algorithms, cross-cutting design in a large codebase it has not read, subtle concurrency, performance-sensitive code, and anything depending on undocumented team knowledge.
04Small steps with a feedback loop
#c-small-steps-with-a-feedback-loopAsk for one coherent change at a time, run the tests or type check after each, and commit working states. A loop of change, run checks, fix lets the agent self-correct; a single huge generation does not. Frequent commits make any step easy to revert.
05Hallucinated APIs and dependencies
#c-hallucinated-apis-and-dependenciesModels invent functions, flags and even package names. Mitigations: compile or type-check immediately, point the agent at the real docs or source, and verify any new dependency exists, is maintained and is the one intended (typosquatted packages are a real supply-chain risk).
06Following existing conventions
#c-following-existing-conventionsLeft alone, a model writes generic code. Point it at an exemplar file (“follow the pattern in
OrderService”), reuse existing helpers instead of re-implementing them, and check that it did. Duplicated utilities and style drift are the typical symptoms of missing context.07Refactoring and legacy migration
#c-refactoring-and-legacy-migrationAgents are strong at mechanical, well-specified transformations (rename, API upgrade, framework migration) when characterization tests pin current behavior first. Without those tests there is no way to know the “mechanical” change preserved behavior. Migrate in slices, one module at a time, verifying each.
08Building a new system with an agent
#c-building-a-new-system-with-an-agentStart from architecture and interfaces you decided, not from “build me an app”. Have the agent scaffold the skeleton, then fill in modules against the spec, with tests at each seam. Without a human-held design, generated systems tend to grow tangled, with logic duplicated across layers.
09Tool integration through MCP
#c-tool-integration-through-mcpMCP servers let an agent read tickets, query a database schema, or call internal services, grounding its work in real data instead of guesses. Grant the least privilege needed and prefer read-only access by default.
10Vibe coding versus professional use
#c-vibe-coding-versus-professional-useVibe coding is fine for throwaway prototypes. For production code, the developer remains the author of record: understand and review every change, because incidents are attributed to the team, not the tool.