Skip to content

The Human-First Engineering Framework โ€‹

The manifesto is what we believe. The framework is how we work.

It is built on five pillars. Each is a small set of behaviours, not a process. The aim is light enough to remember, concrete enough to guide real decisions.

Every pillar is designed to do two things at once: produce better engineering today, and preserve the conditions that grow engineers tomorrow. That second purpose is why this framework exists. Without it, the first is just another AI-productivity checklist.

๐Ÿง  Pillar 1 โ€” Think first โ€‹

AI accelerates execution, not understanding.

Understanding the problem is still the engineer's job. AI is most valuable after you know what you are trying to do.

Behaviours โ€‹

  • Frame the problem before prompting. State the constraints, the success criteria, and the approach you would take before asking AI for anything.
  • Sketch a design before generating code. Even a rough outline gives you something to compare AI's output against, which is where the learning lives.
  • Use AI to explore alternatives, not to decide for you. Ask it for options and trade-offs, then make the call yourself.

Why this matters โ€‹

This preserves the core engineering skill: thinking clearly about problems. A clear prompt is the by-product of clear thinking, not a substitute for it.

๐Ÿชช Pillar 2 โ€” Own the output โ€‹

AI assists. Humans are accountable.

Every change an engineer ships is theirs, regardless of how it was generated. The standard is not new โ€” it applied when frameworks scaffolded boilerplate and when a Stack Overflow answer became an implementation. AI just raises the volume.

Behaviours โ€‹

  • Every change has a named human owner. Regardless of how much of it was generated, one person is accountable for how it behaves.
  • If you cannot explain it, you do not ship it. Understanding is the bar, not authorship. Read every line you ship; for repetitive generated code, verify the pattern, boundaries, and edge cases; for non-trivial logic, understand every significant line before merge.
  • Review reasoning, not syntax. Ask the author why each significant decision was made; if they cannot answer, the PR goes back.
  • Treat reviewing AI-generated work as its own skill. Reading code you did not write and interrogating why it is shaped the way it is, is a distinct competency from writing it โ€” one that AI makes more important, not less. Practise it deliberately.

Why this matters โ€‹

Ownership is what builds judgement โ€” the thing AI cannot learn for you.

๐Ÿ“ˆ Pillar 3 โ€” Grow through AI, not around it โ€‹

AI should accelerate mastery, not bypass it.

The intuition that makes a great senior engineer is accumulated through wrestling with problems that resist easy answers โ€” and this is where a growth mindset matters most. The same tool produces opposite outcomes depending on the mindset using it: used to reach harder problems and understand more deeply, AI accelerates mastery; used to avoid the discomfort of not knowing, it routes around the reps that produce seniors and principals.

Behaviours โ€‹

  • Read what the AI produces. Trace through it until you understand why it works, not just that it works โ€” if you cannot, read more carefully or ask a different question until you can.
  • Debug with AI, not around it. Use it as a pairing partner that explains, hypothesises, and challenges your thinking โ€” the skill to grow is the reasoning, not the typing.
  • Protect junior learning opportunities. Do not optimise the reasoning out of their work; they need reps in reading, tracing, and explaining, not just in producing output.

Why this matters โ€‹

This ensures we don't lose the foundational reps that turn juniors into seniors.

๐ŸŽฏ Pillar 4 โ€” Use AI intelligently โ€‹

Using AI well is a skill. Using it carelessly is not the same thing.

Getting consistently good output requires deliberate setup and thoughtful use. This is a learnable, teachable skill โ€” and mastering it is part of the modern craft.

Prompting is only part of it. Just as important is the context the AI works from โ€” and keeping that context alive as sessions end and long conversations are compacted away.

Behaviours โ€‹

  • Match the model to the task. Small and fast for iteration; frontier models for complex reasoning; code-specialised for refactoring and tests; vision for diagrams; agents only for genuinely multi-step work.
  • Encode team context in instruction files. Keep them short, focused, and versioned; share prompt patterns the way you share utility functions.
  • Treat context as a durable asset, not a per-prompt effort. The knowledge that makes AI useful โ€” architecture, conventions, decisions, constraints โ€” belongs where it outlives the session that produced it, so the whole team and its tools reason from the same understanding.
  • Preserve the reasoning that sessions lose. A context window is finite. Over a long effort it is repeatedly compacted, and the why behind a decision is summarised away while the code remains. Capture what must survive โ€” decisions, constraints, rejected alternatives โ€” where it outlives any single session. This is context engineering; see the Context Engineering guide.
  • Prompt with precision. Provide relevant context, not all context, and treat prompts as drafts worth refining and sharing when they work well.

Why this matters โ€‹

This is a new core skill, and it has two halves. One is knowing when to lean on AI and when to verify it yourself โ€” the modern equivalent of learning your IDE. The other is context engineering: crafting a good prompt is not enough if the knowledge behind it is thin or lost, so keeping shared understanding alive over time โ€” for the next engineer and the next session โ€” matters as much as any single request.

๐Ÿ” Pillar 5 โ€” Trust AI, but verify everything โ€‹

AI is powerful, but not infallible.

Trust is calibrated to the risk of the task, the quality of the context provided, and your ability to verify the output. Low-risk, reversible, well-understood work warrants lighter verification. High-risk work requires human reasoning to lead, with AI in support โ€” never the reverse.

Behaviours โ€‹

  • Treat AI output as a draft, not truth. Read it critically before you rely on it.
  • Match verification effort to risk. Low-risk, reversible work warrants lighter checks; high-risk work requires human reasoning to lead. Make the level of trust an explicit decision.
  • Validate assumptions, logic, and edge cases. Be especially sceptical of the ones AI did not mention โ€” "the AI wrote it" is never sufficient justification for skipping a review.

The human review ladder โ€‹

Trust is not all-or-nothing. As AI takes on more of the work, the human responsibility does not disappear โ€” it moves up a level. Use this ladder to make the hand-off explicit: whatever the AI is doing, the human still owns the row next to it.

What AI is doingWhat the human is still responsible for
Summarising or explainingVerifying the facts and the framing against the source
Suggesting designs or optionsMaking the architectural decision and owning the trade-offs
Generating codeUnderstanding every significant line before it merges
Reviewing a PRReviewing the reasoning, not just accepting the AI's verdict
Running as an agentApproving the scope, the checkpoints, and the final outcome

The more autonomy you grant the AI, the more deliberate the human checkpoint has to be โ€” never less.

Categories that always require human-led reasoning โ€‹

  • Security-sensitive code โ€” authentication, authorisation, encryption, input validation.
  • Compliance, privacy, or regulatory logic.
  • Data deletion, migrations, or any irreversible operation.
  • Core architectural decisions with long-term structural consequences.
  • Concurrency, auth flows, complex SQL, infrastructure changes, regex on untrusted input โ€” anything stateful or easy to get subtly wrong.

Never share secrets, credentials, or sensitive customer data in prompts. Use approved tools only.

Why this matters โ€‹

This is how we stay safe, sane, and high-quality in a world where AI can be confidently wrong.

๐Ÿ“‹ The framework in practice โ€‹

SituationExpected behaviour
Using AI to write codeForm your own view of the shape of the solution first. Then generate, read critically, and explain every significant decision.
Reviewing AI-assisted codeAsk the author to explain, not just demonstrate. If they cannot, send it back.
Stuck on a problemThink about the shape of the problem first. Pair with a human or AI to reason through it. Do not skip straight to a generated answer.
A junior is strugglingTreat it as an opportunity. Ask questions; do not just give answers.
Something ships that nobody understandsTeam failure, not individual. Treat it as a learning event.
Security, compliance, or irreversible operationsHuman reasoning leads. AI supports. No exceptions.
Unsure how much to trust AI outputAssess the risk. Match verification effort to the stakes.
Starting a new projectCheck for an instruction file. If one does not exist, create it.
Getting poor outputInterrogate the prompt before re-running. What was missing or ambiguous?
Doing a repetitive AI-assisted taskCheck the team prompt library first. Build and share a pattern if one is missing.
Choosing a modelMatch capability to the task โ€” complexity, volume, cost, and quality.
AI costs creeping upTreat it like any performance issue. Investigate, identify the waste, fix the pattern.

โœจ The one-line summary โ€‹

Think first. Own the output. Grow through AI, not around it. Use AI intelligently. Trust AI, but verify everything.

โžก๏ธ Next โ€‹

Use the toolkit to introduce and embed this in a team or organisation.

Last updated: