C:C13
Chapter 13: Choosing Practices and Recognizing Their Limits
A guide to the published second edition, with literal citations separated from wider editorial reading suggestions.
Chapter guide
Selects and combines practices from the observed problem rather than a fixed workflow. It compares proportionate responses, exposes over-engineering and unsafe shortcuts, and connects earlier volumes while asking which mechanisms can be omitted without losing the change obligations.
Sintesi in italiano
Seleziona e combina le pratiche a partire dal problema osservato. Confronta risposte proporzionate, rende visibili sovraingegnerizzazione e scorciatoie rischiose e collega i volumi precedenti, chiedendo quali meccanismi si possano omettere preservando gli obblighi del cambiamento.
Learning goals
- select a practice from an observed problem
- combine practices without conflicting authority or stale evidence
- justify omitting a mechanism while preserving the task's obligations
Obiettivi in italiano
Obiettivi di apprendimento
- scegliere una pratica a partire da un problema osservato
- combinare pratiche senza creare conflitti di autorità o usare evidenze obsolete
- giustificare l'omissione di un meccanismo, preservando gli obblighi del task
Chapter outline
- 13.1 Five decisions, one accountable outcome
- 13.2 Compare two changes before building a workflow
- 13.3 A compact symptom-to-action map
- 13.4 Recognize over-engineering and unsafe shortcuts
- 13.5 Working vocabulary
- 13.6 Further reading through the Non-Deterministic series
- 13.7 Worked engineering example: leave out what the change does not need
- 13.8 Practice exercise: design the smallest adequate workflow
- The last engineering decision: what can safely be left out?
Struttura del capitolo
- 13.1 Cinque decisioni, un unico risultato di cui rispondere
- 13.2 Confrontare due modifiche prima di costruire un workflow
- 13.3 Una mappa sintetica dai sintomi alle azioni
- 13.4 Riconoscere l'over-engineering e le scorciatoie insicure
- 13.5 Vocabolario operativo
- 13.6 Per approfondire: la serie Non-Deterministic
- 13.7 Esempio ingegneristico svolto: lasciare fuori ciò che non serve alla modifica
- 13.8 Esercizio pratico: progettare il workflow minimo adeguato
- L'ultima decisione ingegneristica: che cosa possiamo lasciare fuori senza rischi?
Cited in the published chapter
6 linked atlas references from literal citations in the English and Italian editions. General bibliography membership and identifier-index entries are counted separately.
Martin Fowler’s website 1
- F026 — Harness Engineering - first thoughts
Birgitta Böckeler · 2026-02-17
Book and contextual references
- PUB:V11:V01 · Non-Deterministic Software Engineering: How to Build Reliable Software with AI Assistants Without Losing Quality, Security, or Control
- PUB:V11:V02 · Non-Deterministic Spec-Driven Development: From Principles to Practice -- A Companion to Non-Deterministic Software Engineering
- PUB:V11:V03 · Non-Deterministic Spec-Driven Development: Enterprise Edition -- From Public Frameworks to Enterprise Practice
- PUB:V11:V04 · Non-Deterministic Autonomous Coding Agents: Building Self-Improving Systems That Ship While You Sleep
- PUB:V11:V05 · Non-Deterministic Loop Engineering: Design Reliable Agentic AI Systems Beyond the Prompt
Trace literal citations to chapter sections
Locations come from the supplied English and Italian source files. Chapter text and figure captions are identified separately; identifier-index references and general bibliography membership are not treated as chapter citations.
- F026 · Harness Engineering - first thoughts
- EN · Five decisions, one accountable outcome
EN/chapters/chapter13.tex:19 - ITA · Cinque decisioni, un unico risultato di cui rispondere
ITA/chapters/chapter13.tex:19
- EN · Five decisions, one accountable outcome
- PUB:V11:V01 · Non-Deterministic Software Engineering: How to Build Reliable Software with AI Assistants Without Losing Quality, Security, or Control
- EN · Further reading through the Non-Deterministic series
EN/chapters/chapter13.tex:72 - ITA · Per approfondire: la serie Non-Deterministic
ITA/chapters/chapter13.tex:72
- EN · Further reading through the Non-Deterministic series
- PUB:V11:V02 · Non-Deterministic Spec-Driven Development: From Principles to Practice -- A Companion to Non-Deterministic Software Engineering
- EN · Further reading through the Non-Deterministic series
EN/chapters/chapter13.tex:72 - ITA · Per approfondire: la serie Non-Deterministic
ITA/chapters/chapter13.tex:72
- EN · Further reading through the Non-Deterministic series
- PUB:V11:V03 · Non-Deterministic Spec-Driven Development: Enterprise Edition -- From Public Frameworks to Enterprise Practice
- EN · Further reading through the Non-Deterministic series
EN/chapters/chapter13.tex:72 - ITA · Per approfondire: la serie Non-Deterministic
ITA/chapters/chapter13.tex:72
- EN · Further reading through the Non-Deterministic series
- PUB:V11:V04 · Non-Deterministic Autonomous Coding Agents: Building Self-Improving Systems That Ship While You Sleep
- EN · Further reading through the Non-Deterministic series
EN/chapters/chapter13.tex:72 - ITA · Per approfondire: la serie Non-Deterministic
ITA/chapters/chapter13.tex:72
- EN · Further reading through the Non-Deterministic series
- PUB:V11:V05 · Non-Deterministic Loop Engineering: Design Reliable Agentic AI Systems Beyond the Prompt
- EN · Further reading through the Non-Deterministic series
EN/chapters/chapter13.tex:72 - ITA · Per approfondire: la serie Non-Deterministic
ITA/chapters/chapter13.tex:72
- EN · Further reading through the Non-Deterministic series
Editorial reading mappings
Broader topical suggestions can overlap the cited sources. A mapping does not add a citation to the published edition or establish that a practice is effective.
Martin Fowler’s website 10
- F008 — How to tackle unreliability of coding assistants
Birgitta Böckeler · 2023-11-29 - F019 — I still care about the code
Birgitta Böckeler · 2025-07-09 - F021 — To vibe or not to vibe
Birgitta Böckeler · 2025-09-23 - F023 — Understanding Spec-Driven-Development: Kiro, spec-kit, and Tessl
Birgitta Böckeler · 2025-10-15 - F025 — Context Engineering for Coding Agents
Birgitta Böckeler · 2026-02-05 - F026 — Harness Engineering - first thoughts
Birgitta Böckeler · 2026-02-17 - F027 — Humans and Agents in Software Engineering Loops
Kief Morris · 2026-03-04 - F031 — TDD inside the agent loop - theater or actual value?
Birgitta Böckeler · 2026-08-10 - F033 — Are Harnesses Worth the Cost?
Naresh Jain · 2026-10-13 - F035 — When Software Meets Hardware
Kuldeep Singh · 2026-10-15
Software Engineering Practices 84
- PAT:001 — Plan-Then-Execute
- PAT:002 — Swarm Migration (Map-Reduce for Agents)
- PAT:003 — Background Agent CI
- PAT:004 — Initializer-Maintainer Dual Agent Architecture
- PAT:005 — Feature List as Immutable Contract
- PAT:006 — Context Window Anxiety Management
- PAT:007 — Compounding Engineering
- PAT:008 — Agent-Powered Codebase Q&A and Onboarding
- PAT:009 — CI-as-Backpressure
- PAT:010 — Inference-Healed Code Review
- PAT:011 — Reward Shaping for Tool Use
- PAT:012 — AI-Accelerated Learning and Skill Development
- PAT:013 — Agent Reinforcement Fine-Tuning
- PAT:014 — Deterministic Failure Harness
- PAT:015 — Regression Safety Net
- PAT:016 — Structured Drift Detection
- PAT:017 — Blast Radius Containment
- PAT:018 — PII and Secret Scrubbing
- PAT:019 — Subagent Spawning and Fan-Out
- PAT:020 — File-System as State Machine
- PAT:021 — Tool Call Budget
- PAT:022 — Trust Calibration
- PAT:023 — The External Bash Loop
- PAT:024 — The Stop-Hook Loop
- PAT:025 — The Editor-Native Manual Loop
- PAT:026 — Run Until Done: Retry Against Reality
- PAT:027 — Maker–Checker: Separate Production from Acceptance
- PAT:028 — Skills and Context Engineering: Remove Intent Debt
- PAT:029 — Memory and Retrieval: Read What the Model Could Not Know
- PAT:030 — Connectors and Tools: Move Exact Work Outside the Weights
- PAT:031 — Worktrees: Isolate the Write Domains
- PAT:032 — Multi-Loop Coordination: One Owner per Target
- PAT:033 — Budget and Observability: Price the Next Attempt
- PAT:034 — Safety and Guardrails: Verification Is Not Authorization
- PAT:035 — Daily Triage: rank the rare urgent item
- PAT:036 — CI Sweeper: classify before fixing
- PAT:037 — Dependency Sweeper: route by risk
- PAT:038 — Duplicate detection
- PAT:039 — PR babysitter
- PAT:040 — Post-merge cleanup
- PAT:041 — Changelog drafter
- PAT:042 — Capstone orchestra
- PAT:043 — Spec-First Generation
- PAT:044 — Test-Driven AI Development
- PAT:045 — Exploratory Vibe Coding
- PAT:046 — Small Verifiable Chunks
- PAT:047 — Context Engineering
- PAT:048 — The Explainability Test
- PAT:049 — Runtime-in-the-Loop
- PAT:050 — Learning Loop Preservation
- PAT:051 — Security-First Development
- PAT:052 — Review Gauntlet
- PAT:053 — Legacy Code Navigation
- PAT:054 — Migration as Learning
- PAT:055 — Trio Programming
- PAT:056 — Parallel Work Orchestration
- PAT:057 — Structured Enablement Program
- PAT:058 — Acceptable Use Policy
- PAT:059 — Measurement & Learning
- PAT:060 — Cost Management
- PAT:061 — Consistency Analysis Gate
- PAT:062 — Research Artifact Preservation
- PAT:063 — Parallel Implementation Exploration
- PAT:064 — Specification Scale Management
- PAT:065 — Model Switching for Regeneration
- PAT:066 — Constitution-Driven Development
- PAT:067 — Clarify Before Plan
- PAT:068 — Progressive Specification
- PAT:069 — Red-Team Specification
- PAT:070 — Gap-Closure Analysis
- PAT:071 — Ambiguity Scoring
- PAT:072 — Handoff Chain
- PAT:073 — Multi-Mode Agent
- PAT:074 — Anti-Sycophancy Enforcement
- PAT:075 — Convergence Review
- PAT:076 — Gate-Enforced Progression
- PAT:077 — Security Pipeline
- PAT:078 — Prompt Injection Scanning
- PAT:079 — Supply-Chain Risk Audit
- PAT:080 — Adversarial Agent Pattern
- PAT:081 — One-Item-Per-Cycle
- PAT:082 — Evidence-Pack Provenance
- PAT:083 — Budget-Gated Autonomy
- PAT:084 — Escalation Protocol