AI Engineering
for Programmers
From Vibe Coding to Systematic Engineering.
Who's talking?
Background
- Sadig Muradov — Engineering Team Lead
- 15+ years across numerous industries: Healthcare · E-commerce · Payments · Logistics · Telecom · Defence · Fleet
- www.sadig.dev
Credential
The Paradigm Shift
80/20 Flip — typing vs orchestration.
AI turns software development from manual code generation into agent orchestration.
You are no longer a typist. You manage a fast junior with a limited context window.
Push effort upstream. If the spec is perfect, the code becomes trivial.
Big Word Alert.
Quick glossary before we go deeper.
A sub-word chunk — roughly 4 English characters or one short word. Models read and write in tokens, not characters. Tokenizers (BPE in Claude / GPT) split encyclopedia into 3 tokens; hello stays 1. Token count is the bill.
The phase where the model runs — reading your prompt and generating output, one token at a time. Distinct from training, where the weights are learned. Every API call is one inference. Inference is fast and cheap; training is slow and expensive.
Everything the model sees at inference: your prompt, attached files, the conversation so far. Distinct from training data. Hard ceiling: the context window. Claude Opus 4.7: 1M tokens. Claude Sonnet 4.6: 200K. Frontier GPT: ~1M.
The "knobs" the network learned during training. 70B = 70 billion knobs. Bigger ≠ smarter — data quality and post-training (RLHF, Constitutional AI) matter more. Frontier models today: hundreds of billions to low trillions.
Today's LLMs are transformers doing autoregressive next-token prediction, then post-trained with RLHF / Constitutional AI. Strong at: language, code, pattern recall. Weak at: precise math, long-horizon planning, novel reasoning.
Confident-sounding output that's factually wrong — a non-existent API, a misremembered date, an invented citation. Not a bug; a property of next-token prediction. The fix isn't "smarter model" — it's verification: tests, MCP calls, docs lookups, your judgment.
Context — finite resource
Managing the context window is the AI Engineer's job #1.
MCP — Model Context Protocol.
The standard that bridges the silos.
/mcp — manage servers in-session
.mcp.json at repo root — team scope, version-controlled
Many servers → less room for your conversation.
load only what fits 10% of context, defer the rest.
↗ code.claude.com/docs/en/mcp
The Contractor
Mental Model.
Seven primitives, one analogy. Borrow this for your team.
The setup
You just hired a brilliant contractor. They're fast, capable, patient — but they need to know where they are, what to do, and what's off-limits.
Primitive → Metaphor
-
CLAUDE.md
Briefing package. How the contractor works on this job.
-
SUB-AGENTS
Specialists. Isolated workers with their own fresh context window.
-
SKILLS
Trade manuals. Documented once, never re-explained.
-
MCP
Different suppliers. Gmail, Slack, your DB — outside resources brought to the job site.
-
HOOKS
House rules. Deterministic shell scripts that fire on events. If something needs to happen every time without fail, don't put it in a prompt — put it in a hook.
-
AGENT TEAMS
Solo → full crew. A house lead coordinates; the rest are specialists.
-
PLUGINS
Packaged setup. Bundle skills + hooks + MCP, hand the team an instant onboarding.
LSP — beautiful theory,
reality differs.
- IDE → LSP → structured context → AI
- AI sees the same structural data the compiler sees
- "Generation grounded in actual definitions"
- Claude Code and most AI agents don't use LSP effectively
- Request/response model doesn't fit the agent loop
- Small projects: no difference — AI just reads files
- Large projects: AI loses cross-file dependency, transitive impact, real call graph
GitNexus — graph of your codebase.
The LSP replacement for big codebases. Queried over MCP.
Anti-Pattern — Vibe Coding.
Why randomness doesn't scale.
Definition
Coding by intuition — random prompting, immediate gratification, no structure.
Why it fails
- Entropy — context lost between sessions
- Repetition — same mistakes, no learning loop
- Ceiling — collapses on complex architecture
Productivity vs Complexity
Compound Engineering.
Compound interest for code.
The flip
The mechanism
The Engineering Loop.
Standard operating procedure.
Plan & Work.
Measure twice, generate once.
Action. Research, codebase analysis, detailed Markdown spec.
Tool. Use Plan Mode — press Shift + Tab until you see "Plan Mode" under the input. Claude can read but not edit.
Action. Approve the plan. AI executes against it.
Reality. The "easy" part. The AI acts as a junior developer following a rigid blueprint.
Review & Compound.
Closing the learning gap.
Action. Verify output, check against constraints, catch hallucinations.
Role. You are the senior engineer reviewing a junior's pull request.
Method. Automated tests + manual audit.
Action. Document the learnings for the future.
Mechanism. Update CLAUDE.md or system instructions.
Goal. Never make the same mistake twice.
Live Demo.
Notes API on the Loop — full cycle in ~9 min.
Multi-Agent Orchestration.
Specialized agents in parallel — not one serial conversation.
Scans docs, finds patterns, surfaces prior art.
Writes code based on the researcher's findings.
Audits against security, style, and project conventions.
Setup & Environment.
The engineer's stack.
Tooling
- Editor — Cursor · VS Code (Copilot) · Claude Code ←
- Model — Claude 4.6 Sonnet / 4.7 Opus
- Interface — MCP servers (filesystem · git · gitnexus · sentry)
CLAUDE.md hierarchy
- Project — repo root, committed, team-shared
- User — ~/.claude/CLAUDE.md, your personal preferences across all projects
- Reference docs inline with @README.md
- Bootstrap with /init — let Claude generate the first draft
Version-control it.
Handling Failure.
Mitigating hallucinations and risks.
Reality
AI is probabilistic, not deterministic. It will hallucinate.
Mitigation
- RECOGNIZE — plausible but non-existent API? verify via MCP / docs
- DEBUG — ask for the reasoning before the code
- OVERRIDE — know when to stop prompting and write it by hand
- SECURITY — never give secrets / credentials to generated code
- RESET — "good catch" signal → discard branch, restart context
The Engineer's Manifesto.
Five rules to engrave.
Stay in touch.
Questions, follow-ups, or just to say hello.
- LINKEDINlinkedin.com/in/sadigm
- GITHUBgithub.com/sadigm
- EMAILmail@sadig.dev