Semantic Anchors — Complete Reference
About Semantic Anchors
What are Semantic Anchors?
Semantic anchors are well-defined terms, methodologies, and frameworks that serve as reference points when communicating with Large Language Models (LLMs). They act as shared vocabulary that triggers specific, contextually rich knowledge domains within an LLM’s training data.
Think of them as shortcuts to rich context - instead of explaining a complex methodology from scratch, you can invoke a semantic anchor and the LLM will activate its entire knowledge base about that concept.
Example
Instead of saying:
"Write tests before writing code, use mocks to isolate dependencies, and design from the outside in."
You can say:
"Use TDD, London School approach."
The LLM understands this activates:
-
Mock-heavy testing methodology
-
Outside-in development approach
-
Interaction-based verification
-
The teachings of Steve Freeman and Nat Pryce
-
Designing through collaboration tests first
Why Use Semantic Anchors?
🎯 Precision
Semantic anchors provide unambiguous communication. When you reference "SOLID Principles," both you and the LLM understand exactly which five principles you mean.
🧠 Depth
A single semantic anchor can activate dozens of related concepts. "Domain-Driven Design" brings in bounded contexts, ubiquitous language, aggregates, value objects, and much more.
Quality Criteria
Not every term makes a good semantic anchor. We maintain high quality standards:
Inclusion means precision, not endorsement. The catalog is a lexicon: an anchor’s presence means the term works as a precise pointer to a dense, well-documented concept — not that we recommend the practice. Where a method is contested or its current edition has drifted away from the training-data prior, the anchor says so in a Criticism or Current Status section with named, linked sources.
Precise
References a specific, established body of knowledge with clear boundaries.
✅ "Hexagonal Architecture" (specific architectural pattern)
❌ "Good architecture" (vague, subjective)
Rich
Activates multiple interconnected concepts, not just a single instruction.
✅ "Behavior-Driven Development" (scenarios, Gherkin, living documentation, outside-in)
❌ "Write tests" (single instruction, no depth)
What is NOT a Semantic Anchor?
Not every well-known term qualifies as a semantic anchor. Understanding what doesn’t work helps clarify what does.
Common Counter-Examples
These terms are frequently used but lack the depth and definition required for semantic anchors:
| ❌ Not a Semantic Anchor | Why Not? |
|---|---|
"TLDR" |
Underspecified instruction with no defined structure or methodology. Just means "be brief" without any framework for how. |
"ELI5" (Explain Like I’m 5) |
Vague target level with no pedagogical framework. What does "5-year-old level" mean technically? No consistent interpretation. |
"Keep it short" |
Pure directive with no conceptual depth. It’s an instruction, not a methodology. |
"Best practices" |
Too vague and not attributable. Whose best practices? Based on what research or authority? |
"Modern approach" |
Ambiguous and inconsistent. "Modern" means different things to different people and changes over time. |
"Make it simple" |
No reference to specific simplification frameworks (unlike KISS principle or Occam’s Razor which are semantic anchors). |
Comparison: Good vs. Bad
Details
Example 1: Testing Instructions
❌ Bad: "Write good tests"
| Problem |
Vague instruction, no methodology |
| Result |
Inconsistent interpretations |
✅ Good: "Test-Driven Development, London School"
| Activates |
Mock-heavy testing, outside-in design, interaction-based verification |
| Proponents |
Steve Freeman, Nat Pryce |
| Result |
Consistent, rich implementation |
Example 2: Communication Style
❌ Bad: "Keep it short"
| Problem |
No structure, just a preference |
| Result |
Arbitrary length decisions |
✅ Good: "Pyramid Principle"
| Activates |
Start with conclusion, group ideas, logical ordering |
| Proponent |
Barbara Minto |
| Result |
Structured, repeatable communication pattern |
Example 3: Code Quality
❌ Bad: "Best practices"
| Problem |
Not attributable, no specific practices |
| Result |
Everyone has different "best practices" |
✅ Good: "SOLID Principles"
| Activates |
Five specific design principles (SRP, OCP, LSP, ISP, DIP) |
| Proponents |
Robert C. Martin |
| Result |
Concrete, testable guidelines |
The Key Difference
Think of semantic anchors as nouns (methodologies, frameworks, principles) rather than verbs (instructions, directives).
Testing a Potential Anchor
Before proposing a new semantic anchor, ask an LLM:
What concepts do you associate with '<your term>'?
If the response includes:
-
✅ Multiple interconnected concepts
-
✅ Key proponents or publications
-
✅ Specific techniques or practices
-
✅ Clear scope and boundaries
→ It’s likely a good semantic anchor!
If the response is:
-
❌ Just a simple definition
-
❌ No attributed source
-
❌ Vague or inconsistent interpretations
-
❌ Just instructions without depth
→ It’s probably not a semantic anchor.
How to Use This Catalog
Browse by Category
The catalog is organized into 12 categories:
-
Communication & Presentation
-
Design Principles & Patterns
-
Development Workflow
-
Dialogue & Interaction Patterns
-
Documentation Practices
-
Meta (about this catalog itself)
-
Problem-Solving Methodologies
-
Requirements Engineering
-
Software Architecture
-
Statistical Methods & Process Monitoring
-
Strategic Planning & Decision Making
-
Testing & Quality Practices
Filter by Role
Select your professional role to see anchors most relevant to you:
-
Software Developer / Engineer
-
Software Architect
-
QA Engineer / Tester
-
DevOps Engineer
-
Product Owner / Product Manager
-
Business Analyst / Requirements Engineer
-
Technical Writer / Documentation Specialist
-
UX Designer / Researcher
-
Data Scientist / Statistician
-
Consultant / Coach
-
Team Lead / Engineering Manager
-
Educator / Trainer
Using Semantic Anchors with LLMs
In Prompts
Reference semantic anchors directly in your prompts:
"Refactor this code following SOLID Principles."
"Design this API using RESTful constraints as defined by Roy Fielding."
"Write these scenarios in Gherkin format per Behavior-Driven Development."
In Context Setup
Set up your LLM conversation with semantic anchors:
I'm working on a project where we follow:
- Test-Driven Development (TDD, Chicago School)
- Hexagonal Architecture
- Domain-Driven Design
- SOLID Principles
Please keep these in mind when suggesting code changes.
Contributing
We welcome proposals for new semantic anchors! See our Contributing Guide for details on:
-
How to propose a new anchor
-
Quality criteria and testing methodology
-
Automated validation with GitHub Copilot
-
The review and publication process
Click Propose New Anchor to get started!
About This Project
Semantic Anchors is an open-source catalog maintained by the LLM Coding community. The project aims to:
-
Document effective communication patterns with LLMs
-
Establish shared vocabulary for AI-assisted development
-
Provide a curated, quality-controlled reference
-
Enable more precise and efficient human-AI collaboration
Technology
-
Website: Vite + Vanilla JavaScript
-
Styling: Tailwind CSS
-
Content: AsciiDoc
-
Visualization: Card Grid with category organization
-
Hosting: GitHub Pages
-
Automation: GitHub Actions + Copilot
License
This project is open source. See the LICENSE file for details.
Privacy
This site is privacy-friendly by design: no cookies, no advertising, no cross-site tracking.
-
Analytics: anonymous, aggregated page-view counts via GoatCounter. It is cookieless, stores no IP addresses, and collects no personal data. The counting script is self-hosted (first-party); only the aggregated hit is sent to GoatCounter.
-
YouTube: embedded videos load only after you click play, so YouTube is not contacted until you consent.
-
Hosting: the site is served as static files via GitHub Pages.
Because no personal data is collected and no cookies are set, no consent banner is required.
Ready to explore? Browse the catalog →
Communication & Presentation
4MAT
Details
- Full Name
-
4MAT System of Instruction
- Also known as
-
4MAT Learning Cycle, McCarthy’s 4MAT
Core Concepts:
- Why
-
Establish relevance and motivation first. Why should the audience care? Connect the topic to their experience, problems, or goals before introducing new information.
- What
-
Present the facts, concepts, and structure. The core content — definitions, models, theory, how the pieces fit together.
- How
-
Show practical application. Demonstrate usage, walk through examples, let the audience try it hands-on. Translate theory into skill.
- What If
-
Explore extension, variation, and transfer. What happens at the edges? How does this apply to new situations? Encourage creative application and critical questioning.
- Four-quadrant cycle
-
The order matters — why before what prevents "so what?" disengagement; how before what-if prevents premature abstraction.
- Left-right brain modes
-
Each quadrant alternates between reflective observation and active experimentation, engaging different cognitive styles in one flow.
- Four learner types
-
Innovative (Why), Analytic (What), Common Sense (How), Dynamic (What If) — every presentation serves all four instead of only the "analytic learner" that default lecture formats assume.
- Key Proponents
-
Bernice McCarthy ("The 4MAT System: Teaching to Learning Styles with Right/Left Mode Techniques", 1980; "About Learning", 1996)
When to Use:
-
Structuring training sessions, workshops, or technical presentations
-
Writing tutorials, explainers, or onboarding documentation
-
Designing conference talks that engage both practitioners and theorists
-
Planning educational content across the motivation-to-mastery arc
-
LLM prompting for instructional material: "Explain X using the 4MAT cycle"
Related Anchors:
-
Pyramid Principle - Top-down structure for written communication; complements 4MAT which is experience-first
-
Feynman Technique - Self-directed learning; 4MAT is teacher-directed instructional design
-
Diátaxis Framework - Documentation types (tutorial/how-to/reference/explanation) map loosely to 4MAT quadrants
Criticism:
-
4MAT rests on learning-styles theory, and the matching claim lacks empirical support: Pashler, McDaniel, Rohrer & Bjork, "Learning Styles: Concepts and Evidence" (Psychological Science in the Public Interest, 2008) found virtually no valid evidence that teaching matched to a diagnosed learning style improves outcomes
-
Paul Kirschner, "Stop propagating the learning styles myth" (Computers & Education, 2017) — nearly all studies claiming supporting evidence fail basic criteria of scientific validity
-
The common defense: 4MAT’s Why/What/How/What-If cycle works as a lesson-sequencing device that every learner moves through — a reading that survives even when the underlying learning-styles claim is dropped
AIDA Model
Details
- Full Name
-
Attention, Interest, Desire, Action
- Also known as
-
AIDA Funnel, Hierarchy of Effects (AIDA branch); variants: AIDAS (+Satisfaction), AIDCA / AIDCAS (+Conviction), AIDA-R (+Retention)
Core Concepts:
- Attention
-
First capture awareness — a headline, hook, or visual that makes the audience stop and notice. Nothing else works until this stage lands.
- Interest
-
Hold engagement by making the message relevant — speak to the reader’s problem, curiosity, or benefit so they keep reading.
- Desire
-
Create wanting — turn "this is relevant" into "I want this" through benefits, proof, emotion, and addressing objections.
- Action
-
Prompt a single, clear next step — the call to action (buy, sign up, reply). Without an explicit ask, the funnel leaks at the end.
- A sequential funnel
-
The stages are ordered and narrowing — each filters the audience to the next. The model’s value is forcing copy to do each job in turn rather than jumping to the ask.
- A hierarchy-of-effects model
-
AIDA is the best-known member of a family of step-models describing how persuasion moves a person from unaware to converted; it is a heuristic, not a measured cognitive law.
- Key Proponents
-
Commonly attributed to E. St. Elmo Lewis (1898), an American advertising advocate; popularised in 20th-century advertising and sales literature
When to Use:
-
Structuring marketing copy, landing pages, ads, cold emails, or pitch openings
-
Reviewing a draft for a missing stage — most often a weak hook (Attention) or an absent call to action (Action)
-
LLM prompting for persuasive text: "Write this product announcement using the AIDA model"
-
Sequencing a sales conversation from hook to close
When NOT to Use:
-
Informational or reference writing where persuasion is not the goal — use BLUF or the Inverted Pyramid instead
-
As a measured model of buyer psychology — it is a copywriting heuristic, not validated cognitive science
-
Long, relationship-based B2B sales, where multi-touch journeys outgrow a single linear funnel
Related Anchors:
-
Inverted Pyramid Style - News structure front-loads the full story; AIDA deliberately withholds the ask until Desire is built
-
Pyramid Principle - Logical top-down argument for clarity; AIDA is an emotional persuasion sequence for conversion
-
BLUF (Bottom Line Up Front) - Leads with the conclusion; the opposite move to AIDA, which earns the conclusion across four stages
Criticism:
-
Robert Heath & Paul Feldwick, "Fifty years using the wrong model of advertising" (International Journal of Market Research, 2008) — the rational, sequential persuasion model behind AIDA misrepresents how advertising actually works: largely through emotional, low-attention processing rather than attentive information processing
-
Demetrios Vakratsas & Tim Ambler, "How Advertising Works: What Do We Really Know?" (Journal of Marketing, 1999) — reviewing over 250 studies, they found little empirical support for any fixed hierarchy of effects and recommended abandoning the hierarchy concept as a planning assumption
-
The model’s age is part of the critique: AIDA originates around 1898, pre-dating formal marketing science, yet still dominates campaign planning — precisely the persistence Heath and Feldwick criticize
Bloom’s Taxonomy
Details
- Full Name
-
Taxonomy of Educational Objectives, Cognitive Domain (Revised 2001)
- Also known as
-
Bloom’s Revised Taxonomy; Anderson & Krathwohl Taxonomy
Core Concepts:
- Six cognitive levels
-
A hierarchy of what a learner can do with knowledge, from lower-order to higher-order — Remember, Understand, Apply, Analyze, Evaluate, Create. Higher levels presuppose the lower ones.
- Remember
-
Retrieve facts from memory — recall, recognise, list, name. The floor, not the goal.
- Understand
-
Construct meaning — explain in one’s own words, summarise, paraphrase, give an example. Understanding is not yet mastery.
- Apply
-
Use knowledge in a new situation — execute, implement, solve a fresh case. The first level that proves transfer beyond the example taught.
- Analyze
-
Break a whole into parts and see how they relate — differentiate, attribute, find the edge cases, trace cause to effect.
- Evaluate
-
Judge against criteria — critique, weigh trade-offs, defend a decision.
- Create
-
Assemble parts into something new — design, build, generate a working solution.
- Action verbs per level
-
Each level has its own measurable verbs, which is what turns a vague aim ("understand recursion") into a testable objective ("implement a recursive traversal", "analyse why this base case prevents infinite recursion").
- The 2001 revision
-
Anderson & Krathwohl turned Bloom’s 1956 nouns into verbs and reordered the top two (the original ended Synthesis → Evaluation; the revision ends Evaluate → Create). They also added a second axis — the knowledge dimension (factual, conceptual, procedural, metacognitive) — yielding a two-dimensional taxonomy table.
- A heuristic, not a law
-
The hierarchy is a design aid, not a strict ladder — real tasks mix levels, and Evaluate-vs-Create ordering is debated. Its value is forcing assessment above mere recall, not literal sequencing.
- Key Proponents
-
Benjamin Bloom et al. ("Taxonomy of Educational Objectives", 1956); Lorin Anderson & David Krathwohl ("A Taxonomy for Learning, Teaching, and Assessing", 2001 revision)
When to Use:
-
Writing learning objectives so they name a verifiable cognitive level, not a vague "know about"
-
Designing assessments and quizzes that target higher-order thinking (Apply, Analyze) instead of recall
-
Defining what "demonstrated understanding" means — set the gate at Apply/Analyze, not Remember
-
Reviewing training material or documentation for whether it only informs or also builds skill
-
LLM prompting: "Write quiz questions at the Apply and Analyze levels of Bloom’s Taxonomy"
When NOT to Use:
-
As a rigid linear sequence every lesson must climb in order — it is a design lens, not a script
-
For affective or motor learning — the cognitive taxonomy does not cover attitudes (affective domain) or physical skills (psychomotor domain)
Related Anchors:
-
4MAT — 4MAT sequences a lesson (Why/What/How/What-If); Bloom grades the cognitive level each step targets
-
Feynman Technique — explaining-it-back is a concrete check at the Understand level; Bloom names the levels above it
-
Socratic Method — questioning drives learners up the levels; Bloom labels where they are
-
Diátaxis Framework — documentation types map loosely to cognitive levels (tutorial → Apply, explanation → Understand)
Current Status:
-
Two versions circulate: the original 1956 framework (Bloom et al.) uses nouns — Knowledge, Comprehension, Application, Analysis, Synthesis, Evaluation — while the 2001 revision described above uses verbs and puts Create at the top. The standard citable summary of the differences is Krathwohl, "A Revision of Bloom’s Taxonomy: An Overview" (Theory Into Practice 41(4), 2002)
-
An LLM’s training-data prior plausibly blends both versions — material on each is abundant, and many secondary sources mix the level names — so an unqualified "Bloom’s Taxonomy" can anchor to either category set
-
Name the version explicitly: "revised Bloom’s taxonomy (Anderson/Krathwohl 2001)" or "original Bloom’s taxonomy (1956)"
BLUF (Bottom Line Up Front)
Details
- Full Name
-
BLUF (Bottom Line Up Front)
- Also known as
-
Direct Answer Format, Conclusion-First Communication
Core Concepts:
- Conclusion First
-
State the main point, decision, or recommendation immediately
- Inverted Pyramid
-
Most important information first, supporting details follow
- Action Orientation
-
Lead with what needs to happen or what was decided
- Busy Reader Optimization
-
Enable time-pressed readers to get key information instantly
- Supporting Evidence Follows
-
Detailed rationale, data, and background come after the conclusion
- Scannable Structure
-
Clear hierarchy enables readers to stop at their needed depth
- Clarity Over Suspense
-
No narrative buildup or delayed conclusions
- One Sentence First
-
Ideally, the BLUF itself is a single, clear sentence
- Key Proponents
-
US Military (Army writing standards), adopted broadly in business and government
- Historical Context
-
Standardized in military communication where rapid decision-making is critical; now standard in business writing (McKinsey, consulting, executive communication)
When to Use:
-
Executive summaries and briefings
-
Status reports to leadership
-
Email to busy stakeholders
-
Incident reports requiring immediate action
-
Any high-stakes communication where the reader needs the conclusion first
-
Technical documentation for time-constrained readers
Relationship to Other Anchors:
-
Related to Pyramid Principle but more narrowly focused on conclusion-first structure
-
Complements MECE by providing the organizational principle for grouped information
-
Contrasts with narrative or exploratory writing styles
- Counter-example
-
Academic papers (which build to conclusions) or storytelling (which uses suspense)
Gutes Deutsch nach Wolf Schneider
Details
- Full Name
-
Gutes Deutsch nach Wolf Schneider (Good German according to Wolf Schneider)
- Also known as
-
Wolf Schneider’s Writing Principles, Schneider’s Stilregeln
Core Concepts:
- Short Sentences
-
Prefer short, direct sentences over long, complex ones — every sentence should express one idea
- Active Voice
-
Use active constructions; avoid passive voice and impersonal constructions wherever possible
- Verbs Over Nouns
-
Replace noun phrases (Nominalstil) with verbs — "wir entscheiden" instead of "eine Entscheidung wird getroffen"
- Concrete Language
-
Use specific, tangible words instead of abstract generalizations; prefer the particular over the general
- No Filler Words
-
Eliminate weak, redundant, or empty words (Füllwörter) that add no meaning — "eigentlich", "grundsätzlich", "im Grunde genommen"
- Plain Words First
-
Choose a common, familiar word over a foreign or technical term when both carry the same meaning
- Readable Rhythm
-
Vary sentence length consciously to create a natural reading rhythm; monotony fatigues readers
- Reader Orientation
-
Every sentence should serve the reader; never write to impress, only to be understood
- Key Proponents
-
Wolf Schneider ("Deutsch für Profis", 1982; "Deutsch! Das Handbuch für attraktives Schreiben", 2005)
When to Use:
-
Writing clear, effective German prose for professional or public audiences
-
Reviewing or editing technical documentation, reports, and emails
-
Coaching writers to reduce bureaucratic or academic language
-
Improving internal corporate communication
-
Teaching German writing style and rhetoric
Related Anchors:
-
BLUF (Bottom Line Up Front) — complements Schneider’s clarity-first approach with a structure that leads with the conclusion
-
Pyramid Principle according to Barbara Minto — a complementary framework for structuring arguments hierarchically
Criticism:
-
Descriptive linguists reject the Sprachkritik tradition Schneider stands for — presenting personal style preferences as objective norms of German and reading language change as decline; Anatol Stefanowitsch (Sprachlog) called Schneider the "Sprachpapst" and "oberster Sprachnörgler der deutschsprachigen Journaille" (2012)
-
Schneider’s polemics beyond craft advice are contested: his campaign against anglicisms ("Speak German!", 2008) and his co-initiation of the 2019 appeal "Schluss mit dem Gender-Unfug!" drew broad criticism from academic linguists — on these points his norms diverge from current usage
-
The core craft rules (short sentences, verbs over nouns, concrete words) remain largely uncontested in journalism training; the criticism targets the claim of general validity, not the toolbox — the English-language parallel is the linguists' critique of Strunk & White
Inverted Pyramid Style
Details
- Full Name
-
Inverted Pyramid Style
- Also known as
-
News Style, Front-Loading
Core Concepts:
- Most newsworthy first
-
Lead with the essential who/what/when/where/why, then present supporting detail in decreasing order of importance
- Stop-anywhere readability
-
The reader can stop at any point and still have the most important information — later paragraphs add depth, not prerequisites
- Long, prunable tail
-
Unlike a tight summary, the body may carry a long tail of quotes, background, and context that an editor (or reader) can cut from the bottom without losing the core
- Contrast with BLUF
-
BLUF demands a short message with the bottom line up front; the Inverted Pyramid front-loads the conclusion but allows an extended, optional remainder
- Contrast with the Pyramid Principle
-
Minto’s Pyramid builds a complete, MECE argument the reader should follow fully; the Inverted Pyramid optimizes for skimming and early exit, not for completeness
- Key Proponents
-
Journalistic convention attributed to late-19th-century American wire-service reporting (telegraph cost and editing pressure); a standard taught in journalism and technical writing
When to Use:
-
News-style announcements, release notes, incident updates, changelog entries
-
Any text where readers skim and many will stop after the first lines
-
LLM-generated summaries that should front-load the takeaway
When NOT to Use:
-
Arguments that must be followed in full → use the Pyramid Principle
-
Ultra-short, single-message contexts → use BLUF
-
Narrative or suspense-driven writing where withholding is intentional
Related Anchors:
-
BLUF (Bottom Line Up Front) — front-loaded but deliberately short
-
Pyramid Principle — complete, MECE argument structure
-
Diátaxis Framework — choosing the right documentation shape
MECE Principle
Details
- Full Name
-
MECE (Mutually Exclusive, Collectively Exhaustive)
Core Concepts:
- Mutually Exclusive
-
Categories have no overlap - each item belongs to exactly one category
- Collectively Exhaustive
-
Categories cover all possibilities - nothing is left out
- Framework for organization
-
Systematic approach to structuring information and problems
- Prevents duplication
-
Mutual exclusivity ensures no redundant coverage
- Prevents gaps
-
Collective exhaustiveness ensures complete coverage
- Clear boundaries
-
Unambiguous categorization with well-defined criteria
- Hierarchical application
-
Can be applied recursively at multiple levels
- Validation approach
-
Check both dimensions independently (exclusivity and exhaustiveness)
- Key Proponent
-
Barbara Minto (McKinsey & Company, late 1960s)
When to Use:
-
Problem decomposition and analysis
-
Software architecture and component design
-
Module boundary definition to avoid overlapping responsibilities
-
Requirements organization and breakdown
-
API endpoint structure and design
-
Decision tree construction
-
Issue tree development
-
Organizing complex information
-
System design and modular architecture
Related Concepts:
-
Foundational to the Pyramid Principle
-
Supports Single Responsibility Principle
-
Enables Separation of Concerns
-
Used in logic trees and issue trees
Myers-Briggs Type Indicator (MBTI)
Details
- Full Name
-
Myers-Briggs Type Indicator (MBTI)
- Also known as
-
MBTI, Myers-Briggs, Jungian Type Theory Applied, 16 Personality Types
Core Concepts:
- Four Dichotomies
-
The framework defines four preference dimensions, each with two poles:
-
Extraversion (E) vs. Introversion (I) — Where do you direct your energy? Outward toward people and activity, or inward toward ideas and reflection?
-
Sensing (S) vs. Intuition (N) — How do you take in information? Through concrete facts and present reality, or through patterns and future possibilities?
-
Thinking (T) vs. Feeling (F) — How do you make decisions? Based on logic and objective analysis, or based on values and interpersonal impact?
-
Judging (J) vs. Perceiving (P) — How do you deal with the outer world? With structure and planning, or with flexibility and spontaneity?
-
- 16 Personality Types
-
The four dichotomies combine into 16 distinct type profiles (e.g., INTJ, ENFP, ISTJ, ESFP), each with characteristic strengths, blind spots, and communication preferences
- Cognitive Functions
-
Each type has a stack of four cognitive functions (e.g., dominant Introverted Intuition, auxiliary Extraverted Feeling for INFJs) that describe how information is processed and decisions are made
- Preference, Not Ability
-
Type describes a natural preference, not a skill or fixed trait — people can and do use all functions, but prefer some over others
- Type Dynamics
-
Understanding a team’s type mix reveals likely sources of friction (e.g., S/N conflicts over big-picture vs. detail focus) and natural collaboration patterns
- Key Proponents
-
Isabel Briggs Myers and Katharine Cook Briggs, building on Carl Gustav Jung’s theory of psychological types ("Psychological Types", 1921)
- Historical Context
-
Developed during World War II to help women entering the industrial workforce find roles suited to their personality; officially published as an instrument in 1962 and widely adopted in organizational and educational settings
When to Use:
-
Understanding communication preferences and potential friction sources within a team
-
Facilitating team retrospectives or kickoffs where interpersonal dynamics matter
-
Coaching individuals on leadership and communication style
-
Career development discussions to align role expectations with personal working style
-
UX research to consider how different user types might interact with a product
-
Onboarding programs to accelerate mutual understanding among new team members
Common Misunderstandings:
-
❌ "My type means I can’t do X" — MBTI describes preferences, not capabilities or limits
-
❌ "Types are fixed for life" — Preferences can shift with experience, stress, or context
-
❌ "One type is better than another" — All 16 types bring value; the framework is descriptive, not evaluative
-
✓ "MBTI is a starting point for self-reflection and dialogue" — Correct use is exploratory, not diagnostic
Limitations and Criticisms:
-
Test-retest reliability is modest — the same person can receive a different type on retaking the assessment
-
Binary dichotomies oversimplify continuous trait distributions
-
Not endorsed for high-stakes hiring or selection decisions
-
Criticized for low predictive validity for job performance compared to, e.g., Big Five personality traits
Plain English according to Strunk & White
Details
- Full Name
-
Plain English according to Strunk & White ("The Elements of Style")
- Also known as
-
Strunk & White, The Elements of Style, Plain Style Writing
Core Concepts:
- Omit Needless Words
-
Every word in a sentence should serve a purpose; cut words that add bulk without adding meaning — "the fact that" → "that", "owing to the fact that" → "since"
- Use Active Voice
-
Prefer active constructions over passive; active voice is more direct, vigorous, and concise — "The dog bit the man" not "The man was bitten by the dog"
- Use Definite, Specific, Concrete Language
-
Prefer the particular and tangible over the vague and abstract; concrete details make writing vivid and persuasive
- Write With Nouns and Verbs
-
Rely on strong nouns and verbs rather than adjectives and adverbs; the right noun or verb makes modifiers unnecessary
- Place the Emphatic Words at the End
-
The most important idea in a sentence belongs at its end — the position of greatest emphasis
- Use Parallel Form
-
Express coordinate ideas in similar grammatical form; parallelism aids comprehension and gives prose a pleasing rhythm
- Avoid Qualifiers
-
Remove weakening qualifiers like "rather", "very", "little", "pretty" — they dilute the force of the statement
- Revise and Rewrite
-
Good writing is rewriting; a first draft is a starting point, not a finished product
- Key Proponents
-
William Strunk Jr. ("The Elements of Style", 1918); E.B. White (revised edition, 1959)
When to Use:
-
Writing technical documentation, reports, emails, and API documentation
-
Reviewing or editing any English prose for clarity and conciseness
-
Coaching writers to reduce verbose or bureaucratic language
-
Preparing communications for broad, non-specialist audiences
-
Any writing where clarity and brevity are paramount
Related Anchors:
-
Gutes Deutsch nach Wolf Schneider — the German-language equivalent of clarity-first writing principles
-
BLUF (Bottom Line Up Front) — complements plain style with a structure that leads with the conclusion
-
Pyramid Principle according to Barbara Minto — a complementary framework for structuring arguments hierarchically
Criticism:
-
Geoffrey K. Pullum, "50 Years of Stupid Grammar Advice" (The Chronicle of Higher Education, 2009) — several of the book’s grammar claims are factually wrong (some "passive" examples are not passive), and the authors routinely violate their own rules; linguists fault the book for presenting personal style preferences as rules of English
-
The blanket rules ("avoid passive voice", "omit needless words") are criticised as dogma when applied mechanically — the passive is the correct choice whenever the receiver of the action is the topic
-
Alternatives named in the discourse: Joseph M. Williams, "Style: Toward Clarity and Grace" (1990) and Steven Pinker, "The Sense of Style" (2014) — clarity guidance grounded in linguistics and reader psychology rather than prescription
Nonviolent Communication (Rosenberg)
Details
- Also known as
-
NVC, Problem Space NVC, Gewaltfreie Kommunikation (GFK)
Core Concepts:
- Observations
-
Concrete, objective facts without evaluation or judgment. "The deploy failed three times this week" instead of "The deploy always fails."
- Feelings
-
Emotions arising from observations. "I feel frustrated" instead of "This is frustrating."
- Needs
-
Universal human needs underlying feelings. Reliability, autonomy, clarity, safety. The real driver behind every request.
- Requests
-
Specific, actionable asks (not demands). "Could we add a pre-deploy check?" instead of "Fix the deploy process."
- Four-step process
-
Observe → Feel → Need → Request. Each step builds on the previous one.
- Key Proponent
-
Marshall Rosenberg ("Nonviolent Communication: A Language of Life", 1999)
When to Use:
-
Tell an LLM: "Reformulate this complaint using NVC according to Rosenberg"
-
Tell an LLM: "Write this stakeholder email in NVC style — observation, feeling, need, request"
-
Requirements elicitation that uncovers real user needs behind feature requests
-
Conflict resolution in teams and retrospectives
-
Transforming vague complaints into actionable requirements
Related Anchors:
-
Socratic Method — complementary: NVC for expressing, Socratic for exploring
-
BLUF — contrasting style: BLUF is conclusion-first, NVC is empathy-first
Pyramid Principle according to Barbara Minto
Details
- Full Name
-
The Minto Pyramid Principle according to Barbara Minto
Core Concepts:
- Governing Thought
-
Single key message at the top of the pyramid
- SCQ Framework
-
Situation → Complication → Question → Answer structure for setting context
- MECE Principle
-
Mutually Exclusive, Collectively Exhaustive grouping of ideas
- Vertical Logic
-
Each level answers "Why?" of the level above it
- Horizontal Logic
-
Arguments at the same level grouped deductively or inductively
- Top-Down Delivery
-
Present conclusion first, then supporting arguments
- Pyramid Structure
-
One central idea supported by groups of three supporting ideas
- BLUF
-
Bottom Line Up Front - lead with the conclusion
- Deductive vs. Inductive Reasoning
-
Choose appropriate logic for horizontal grouping
- Key Proponent
-
Barbara Minto (McKinsey, "The Minto Pyramid Principle", 1987)
When to Use:
-
Executive presentations and briefings
-
Written reports and proposals
-
Complex arguments requiring clear structure
-
Stakeholder communication where time is limited
-
Business cases and recommendations
-
Consulting deliverables
-
Any situation requiring persuasive, structured communication
Creative Writing
Fichtean Curve
Details
- Also known as
-
Rising Action Structure, Crisis-Driven Structure
Core Concepts:
- In medias res opening
-
Story begins in the middle of action — no leisurely setup; the protagonist is already in crisis
- Rising crises
-
A series of escalating mini-crises (not a single inciting incident) each raising stakes higher than the last; no breathing room between them
- No traditional Act 1
-
Background and character development are woven into the action retrospectively rather than front-loaded
- Relentless escalation
-
Each crisis forces the protagonist to make a consequential choice that inevitably leads to the next, larger crisis
- Climax
-
The final, highest-stakes crisis where the central conflict is resolved
- Falling action (brief)
-
Short denouement after the climax; the curve descends steeply
- Retrospective exposition
-
Backstory is delivered only as needed to understand the next crisis — never as separate scenes
- Key Proponents
-
Named after German philosopher Johann Gottlieb Fichte; popularised in craft books by John Gardner and Janet Burroway
When to Use:
-
Short stories and novellas where pace is paramount
-
Any narrative that must grip immediately and sustain tension throughout
-
Genre fiction (thriller, horror, action) requiring constant momentum
-
Instructing LLMs to write with "constant crisis" and "rapid pacing" constraints
-
Diagnosing why a story feels slow — the Fichtean Curve demands crises, not lulls
Related Anchors:
Freytag’s Pyramid
Details
- Also known as
-
Five-Act Structure, Dramatic Arc, Dramatic Pyramid, Yorke’s Five-Act Structure
Core Concepts:
- Exposition (Introduction)
-
Establishes the setting, protagonist, and status quo; introduces the inciting conflict
- Rising Action
-
A series of complications and conflicts build tension; protagonist pursues goal while antagonist force resists; stakes escalate
- Climax
-
The turning point of maximum tension; the decisive confrontation or revelation that determines the outcome
- Falling Action
-
Consequences of the climax unfold; loose ends begin to resolve; tension releases
- Dénouement (Resolution / Catastrophe)
-
Final equilibrium — either a restoration (comedy) or a tragic collapse (tragedy); loose ends are tied
- Dramatic irony
-
The audience may know more than the protagonist, heightening tension — a hallmark of classical five-act drama
- Hamartia
-
The protagonist’s fatal flaw that drives the tragic trajectory — central to Freytag’s original analysis of Shakespeare’s tragedies
- Key Proponents
-
Gustav Freytag ("Die Technik des Dramas", 1863); John Yorke ("Into the Woods", 2013) — modern expansion linking Freytag to neuroscience of narrative
When to Use:
-
Analysing classical plays, tragedies, and literary fiction
-
Teaching the universal arc of dramatic tension to students or LLMs
-
Diagnosing whether a story’s climax is properly positioned at the midpoint
-
Writing tragedy or dramatic fiction where the protagonist’s flaw drives the collapse
-
Understanding why Act 2 / Rising Action sags — it must contain escalating complications, not filler
Related Anchors:
Criticism:
-
Novelist and writing professor Jane Alison (Meander, Spiral, Explode, 2019; excerpt at CRAFT) objects that the pyramid was never a general theory of stories — "Novels didn’t exist for Aristotle and weren’t Freytag’s subject" — calls the swell-climax-collapse arc "masculo-sexual", and proposes waves, meanders, and spirals as equally valid narrative designs
-
Freytag derived the model from five-act stage tragedy, not narrative in general; Chris Winkle (Mythcreants, 2024) argues it "isn’t really applicable to modern stories"
-
Defenders such as TD Storm (Storm Writing School) counter that, read as Freytag intended — an analysis of classical drama — it is a descriptive lens; the criticism properly targets its later misuse as a universal template
Hero’s Journey
Details
- Also known as
-
Monomyth, Campbell’s Monomyth, The Writer’s Journey (Vogler adaptation)
Core Concepts:
- Ordinary World
-
The hero’s familiar environment before the adventure begins; establishes baseline and stakes
- Call to Adventure
-
The inciting event that invites or compels the hero to leave the ordinary world
- Refusal of the Call
-
Hero’s initial hesitation or reluctance, adding realism and raising stakes
- Meeting the Mentor
-
The hero encounters a guide who provides wisdom, tools, or confidence
- Crossing the Threshold
-
Hero commits and enters the Special World of the adventure — point of no return
- Tests, Allies, and Enemies
-
Hero navigates the unfamiliar world, building relationships and facing obstacles
- Ordeal / Innermost Cave
-
The central crisis — a death-and-rebirth experience that transforms the hero
- Reward (Seizing the Sword)
-
Hero survives the ordeal and claims a reward (knowledge, object, resolution)
- The Road Back
-
Hero begins the return, often pursued by consequences of the ordeal
- Resurrection
-
Final climactic test where hero is transformed — applying lessons from the journey
- Return with the Elixir
-
Hero returns to the ordinary world changed, bringing something of value back
- Key Proponents
-
Joseph Campbell ("The Hero with a Thousand Faces", 1949), Christopher Vogler ("The Writer’s Journey", 1992)
When to Use:
-
Structuring transformation stories — character arcs where the protagonist changes fundamentally
-
Identifying whether a narrative has mythic resonance and universal appeal
-
Guiding LLMs to write archetypal stories or analyse existing myths and films
-
Deepening character development by mapping each stage to internal transformation
-
Marketing narratives positioning the customer as the hero
Related Anchors:
Criticism:
-
Folklorists broadly reject the monomyth’s claim to universality: Alan Dundes ("Folkloristics in the Twenty-First Century", Journal of American Folklore 118/470, 2005) called Campbell a "non-expert" whose pattern survives only by source-selection bias, and Barre Toelken noted Campbell "could construct a monomyth of the hero only by citing those stories that fit his preconceived mold" (overview with citations: Jeana Jorgensen, "Why Folklorists Hate Joseph Campbell’s Work")
-
David Brin (Salon, 1999) attacks the template’s value system: the Campbellian demigod formula carries elitist, anti-democratic ideals
-
Since Christopher Vogler’s Disney memo turned Campbell into a screenwriting guide, forcing stories into the template has been blamed for predictable, interchangeable plots — defenders reply that Campbell described recurring mythic patterns, not a recipe
Kishōtenketsu
Details
- Also known as
-
Four-Act Eastern Structure, 起承転結 (Ki-Shō-Ten-Ketsu), Kishōtenketsu
Core Concepts:
- Ki (起) – Introduction
-
Introduce the characters, setting, and situation without conflict; establish the status quo with curiosity
- Shō (承) – Development
-
Continue and expand on what was introduced; deepen the world, add detail, build the reader’s engagement; no conflict required
- Ten (転) – Twist
-
Introduce a surprising, unexpected element that recontextualises everything established so far; the "twist" is not a villain or conflict — it is a revelatory shift in perspective or a new element that changes meaning
- Ketsu (結) – Reconciliation
-
Synthesise the introduction, development, and twist into a harmonious resolution; the new element from Ten is integrated, producing insight, beauty, or meaning
- No conflict requirement
-
Unlike Western three-act structure, Kishōtenketsu does not require protagonist-antagonist conflict; tension arises from juxtaposition and recontextualisation, not opposition
- Juxtaposition as engine
-
The structural heart is the Ten — the unexpected element that makes the reader re-read the Ki and Shō with new eyes
- Influence on game design
-
Nintendo game director Koichi Hayashida has cited Kishōtenketsu as the design philosophy behind Super Mario level structure
- Key Proponents
-
Classical Chinese (qǐ chéng zhuǎn hé) and Japanese (ki shō ten ketsu) poetic and narrative tradition; modern analysis by Tzvetan Todorov and narratologists studying non-Western story forms
When to Use:
-
Writing short fiction, manga, or poetry where surprise recontextualisation replaces conflict
-
Crafting non-confrontational narratives (slice-of-life, meditative, philosophical)
-
Instructing LLMs to write with "no villain" — structures built on insight rather than opposition
-
Game level design, puzzle design, or UX flows where each step recontextualises the previous
-
Breaking Western narrative assumptions when conflict-based structure feels forced
Related Anchors:
Save the Cat! (15-Beat Sheet)
Details
- Also known as
-
Blake Snyder Beat Sheet, BS2, 15-Beat Sheet
Core Concepts:
- Opening Image
-
A single scene (p. 1) establishing the tone, mood, and "before" snapshot of the protagonist’s world
- Theme Stated
-
By page 5 someone (not the hero) articulates the film’s thematic argument — the lesson the hero must learn
- Set-Up (pp. 1–10)
-
Introduce hero in their ordinary world; plant every character and element that will pay off later
- Catalyst (p. 12)
-
The inciting incident — life-changing event that kicks the story into gear
- Debate (pp. 12–25)
-
Hero hesitates; internal or external conflict about whether to take the leap
- Break into Two (p. 25)
-
Hero makes a choice and enters the upside-down world of Act 2 — the new status quo begins
- B Story (p. 30)
-
A secondary story (often a love story or mentor relationship) carrying the theme
- Fun and Games (pp. 30–55)
-
The "promise of the premise" — deliver what the audience came for; poster scenes
- Midpoint (p. 55)
-
A false victory or false defeat that raises stakes; hero goes from reactive to proactive
- Bad Guys Close In (pp. 55–75)
-
External pressure increases while internal doubts resurface
- All Is Lost (p. 75)
-
The worst moment — something is lost (or someone dies); the "whiff of death"
- Dark Night of the Soul (pp. 75–85)
-
Hero wallows in despair; the last moment of hesitation before transformation
- Break into Three (p. 85)
-
Inspiration strikes — the A story and B story merge; hero finds the solution
- Finale (pp. 85–110)
-
Execute the new plan; world is stormed, changed, and reset at a higher level
- Final Image (p. 110)
-
Mirror of the Opening Image — the world has changed; prove the theme was mastered
- Key Proponents
-
Blake Snyder ("Save the Cat!", 2005)
When to Use:
-
Writing commercially viable screenplays or genre fiction with audience-tested pacing
-
Auditing a story beat-by-beat for structural gaps or pacing problems
-
Instructing LLMs to generate story outlines aligned with Hollywood conventions
-
Teaching story structure with precise page/percentage targets
-
Developing the "logline" (one-sentence pitch) that encapsulates the premise
Related Anchors:
Criticism:
-
Peter Suderman, "Save the Movie!" (Slate, 2013) — the beat sheet "has taken over Hollywood screenwriting" and "made every movie feel the same": where Syd Field and Robert McKee treated structure as "an organizing principle", Snyder pinned named beats to page numbers, turning description into prescription
-
The piece sparked an industry debate; responses like Christopher Boone’s at No Film School (2013) accept that screenplays need structure but ask whether writers lean on the beat sheet instead of the story — the recurring defense being that Snyder catalogued beats that already recur in successful films
Story Circle (Dan Harmon)
Details
- Also known as
-
Harmon Story Circle, Dan Harmon’s Story Circle, Channel 101 Narrative Structure
Core Concepts:
- You (Establish a protagonist)
-
Begin with a character in their zone of comfort — the ordinary world; the audience must identify with them
- Need (Something the character wants or needs)
-
The protagonist desires something; this desire drives all subsequent action
- Go (Enter an unfamiliar situation)
-
Protagonist crosses into an unfamiliar situation in pursuit of the need; the adventure begins
- Search (Adapt to the new situation)
-
Protagonist must navigate and adapt to the new world — the main body of the story
- Find (Get what they wanted)
-
Protagonist achieves what they were seeking (the "want"), but this is rarely the real satisfaction
- Take (Pay the price)
-
The cost of getting what was wanted; a sacrifice is made — the price of growth
- Return (Return to the familiar situation)
-
Protagonist carries their hard-won change back to the familiar world
- Change (Apply the change)
-
The protagonist (and world) is transformed; the "need" is finally met, even if the "want" was different
- The Circle as loop
-
Unlike linear structures, the circle implies that stories are cyclical — transformation restores balance at a higher level
- Compression for television
-
Designed to work at any scale: one episode, one season, one film; each act is ~12.5% of the story
- Key Proponents
-
Dan Harmon (creator of Community and Rick and Morty); adapted from Joseph Campbell’s Monomyth
When to Use:
-
Writing or analysing episodic TV where each episode needs a mini-arc
-
Identifying the "want vs. need" gap — the engine of character-driven stories
-
Instructing LLMs to write stories with clear transformation arcs at any scale
-
Teaching Campbell’s Monomyth in a compressed, actionable eight-step format
-
Diagnosing stories where the protagonist doesn’t change — the circle requires transformation
Related Anchors:
Three-Act Structure
Details
- Also known as
-
Setup-Confrontation-Resolution, Beginning-Middle-End, Aristotelian Three-Act Structure
Core Concepts:
- Act 1 – Setup
-
Introduce protagonist, world, and status quo; ends with an Inciting Incident that propels the protagonist into the main conflict (~25% of story)
- Act 2 – Confrontation
-
Protagonist pursues goal while obstacles escalate; contains Midpoint Reversal and All-Is-Lost moment; longest act (~50% of story)
- Act 3 – Resolution
-
Climax where protagonist faces the central conflict at maximum stakes, followed by denouement restoring a new equilibrium (~25% of story)
- Inciting Incident
-
The triggering event that disrupts the protagonist’s ordinary world and sets the story in motion
- Midpoint Reversal
-
The structural centre of Act 2 where the protagonist shifts from reactive to proactive stance
- All Is Lost / Dark Night
-
The low point immediately before the final push, where all seems hopeless
- Climax
-
The decisive confrontation between protagonist and antagonist force resolving the central conflict
- Key Proponents
-
Aristotle ("Poetics"), Syd Field ("Screenplay"), Robert McKee ("Story"), Blake Snyder ("Save the Cat!")
When to Use:
-
Structuring any narrative-driven content (fiction, screenplays, marketing copy, presentations)
-
Checking whether a story has a balanced beginning, middle, and end
-
Diagnosing pacing problems — too much setup, sagging middle, rushed ending
-
Guiding LLMs to write or critique stories with classical dramatic structure
Related Anchors:
Design Principles & Patterns
Code Smells
Details
- Full Name
-
Code Smells
- Also known as
-
Bad Smells in Code, Refactoring Smells
Core Concepts:
- What a smell is
-
A surface indication in the code that usually points to a deeper design problem. Smells are heuristic: they are quick to spot, do not prove a defect exists, and are evaluated in context. A smell tells you where to look, not what to do.
- Fowler’s catalogue
-
Martin Fowler’s Refactoring (1999, 2nd ed. 2018, with the original smell chapter co-authored by Kent Beck) is the canonical catalogue. Each smell is paired with a refactoring that typically resolves it. Common groupings of Fowler’s 20+ smells:
-
Bloaters — structures that grow too large: Long Method, Large Class, Long Parameter List, Primitive Obsession, Data Clumps.
-
Object-Orientation Abusers — incomplete or inverted use of OO: Switch Statements, Refused Bequest, Alternative Classes with Different Interfaces, Temporary Field.
-
Change Preventers — structures that multiply the cost of change: Divergent Change (one class changes for many reasons), Shotgun Surgery (one change touches many classes), Parallel Inheritance Hierarchies.
-
Dispensables — code that earns its keep poorly: Comments (as compensation), Duplicate Code, Lazy Class, Data Class, Dead Code, Speculative Generality.
-
Couplers — excessive or inappropriate coupling: Feature Envy, Inappropriate Intimacy, Message Chains, Middle Man.
-
- Martin’s extensions
-
Robert C. Martin’s Clean Code (2008), Appendix A "Smells and Heuristics", extends Fowler’s catalogue with additional smells organised by concern — Comments, Environment, Functions, General, Java, Names, Tests — about 65 heuristics in total. These are complementary refinements, not a replacement for Fowler’s set.
- Terminology origin
-
Kent Beck coined the term "code smell" in the 1990s; Fowler wrote the book that made it the standard vocabulary. "It just feels wrong" became expressible and teachable.
- Key Proponents
-
Kent Beck (coined the term), Martin Fowler (Refactoring, 1999, 2nd ed. 2018 — canonical catalogue), Robert C. Martin (Clean Code, 2008, Appendix A — extended enumeration).
When to Use:
-
Code review: a shared vocabulary for "this feels wrong" that turns taste into checkable signals
-
Refactoring planning: each smell maps to known refactorings, so a smell is an actionable handle
-
Teaching: junior developers learn faster from a named smell + named fix than from abstract design lectures
-
Technical-debt inventory: enumerate smells to quantify and prioritise cleanup work
-
LLM prompting: asking the model to "identify code smells" activates a richer inspection than "find problems"
-
Self-review before PR: a mental pass over the smell list catches issues a reader would otherwise flag
Related Anchors:
-
Patterns of Enterprise Application Architecture - Same author; Fowler’s broader design-pattern vocabulary
-
Cohesion Criteria - Many smells (Feature Envy, Divergent Change, Large Class) are low-cohesion symptoms
-
SOLID Principles - SOLID violations manifest as identifiable smells; smell→principle is a useful diagnostic direction
-
SOLID SRP - Divergent Change is almost always an SRP violation
-
KISS Principle - Speculative Generality and Comments-as-compensation are KISS failures
Cohesion Criteria
Details
- Full Name
-
Cohesion Criteria (Constantine & Yourdon)
- Also known as
-
Levels of Cohesion, Cohesion Scale, Module Cohesion Types
Core Concepts:
Seven levels of cohesion, ranked from worst (1) to best (7):
- Coincidental Cohesion (1)
-
Elements are grouped arbitrarily with no meaningful relationship. Typical sign: utility classes or grab-bag modules.
- Logical Cohesion (2)
-
Elements perform similar activities selected by a control flag. Example: a function handling all I/O (read, write, print) chosen by a parameter.
- Temporal Cohesion (3)
-
Elements are grouped because they execute at the same time. Example: startup initialization routines bundled together.
- Procedural Cohesion (4)
-
Elements are grouped because they follow a specific execution sequence. Example: a function that validates input, then opens a file, then writes a log.
- Communicational Cohesion (5)
-
Elements operate on the same data but perform different operations. Example: a module that both validates and formats a customer record.
- Sequential Cohesion (6)
-
The output of one element serves as input to the next, forming a pipeline. Example: parse → validate → transform.
- Functional Cohesion (7)
-
Every element contributes to a single, well-defined task. The ideal. Example:
calculateShippingCost()does exactly one thing. - Key Proponents
-
Larry Constantine and Edward Yourdon ("Structured Design", 1979). Further developed by Meilir Page-Jones ("The Practical Guide to Structured Systems Design", 1988).
When to Use:
-
Evaluating module quality during code reviews or refactoring
-
Deciding whether to split a class or module that feels too large
-
Arguing for refactoring with concrete criteria instead of gut feeling
-
Teaching software design: the scale makes abstract quality tangible
-
Assessing architecture decisions around module boundaries
Related Anchors:
-
GRASP - "High Cohesion" is one of the nine GRASP patterns
-
SOLID SRP - Single Responsibility Principle targets functional cohesion
-
Clean Architecture - Organizes code by cohesive business rules
-
Vertical Slice Architecture - Groups by feature cohesion rather than technical layer
CRC-Cards
Details
- Full Name
-
Class-Responsibility-Collaboration Cards
- Also known as
-
CRC Cards, CRC Card Method, Class-Responsibility-Collaborator Cards
Core Concepts:
- Class
-
The name of the class or object being modeled — one index card per class
- Responsibilities
-
What the class knows (data it holds) and what it does (behavior it provides) — listed on the left side of the card
- Collaborators
-
Other classes this class depends on to fulfill its responsibilities — listed on the right side of the card
- Index cards as design medium
-
Deliberately low-tech: physical cards keep design discussions lightweight, encourage discarding and rethinking, and prevent over-engineering
- Role-playing scenarios
-
Team members physically hold cards and walk through scenarios, simulating message passing between objects to validate design
- Collaborative brainstorming
-
Encourages cross-functional participation; everyone can contribute without needing deep technical background
- Finding classes
-
Start with nouns in the problem description; candidate classes are discovered, not prescribed
- Iterative refinement
-
Cards are cheap to discard — designs are evolved through multiple rounds of role-playing and critique
- Key Proponents
-
Ward Cunningham, Kent Beck ("A Laboratory For Teaching Object-Oriented Thinking", OOPSLA 1989)
When to Use:
-
Early OO design phases — discovering classes, responsibilities, and relationships before writing code
-
Collaborative design sessions where multiple stakeholders or developers shape the domain model
-
Teaching object-oriented thinking by making abstract concepts tangible and interactive
-
Validating design with LLMs by describing cards and role-playing request flows
-
Lightweight architecture exploration before committing to a UML tool or full model
Related Anchors:
-
GRASP - Patterns for assigning responsibilities to classes in OO design
-
GoF Design Patterns - Design patterns that can emerge from CRC-Card sessions
-
Domain-Driven Design - CRC Cards support ubiquitous language and entity discovery
Current Status:
-
The definition is intact — index cards with Class, Responsibilities, Collaborators, exactly as Beck & Cunningham published at OOPSLA 1989; the original paper is still hosted on Ward Cunningham’s site
-
The technique survives mainly as a teaching and workshop tool for object-oriented thinking — its original stated purpose ("A Laboratory for Teaching Object-Oriented Thinking") — and remains a defined entry in the Agile Alliance glossary; day-to-day design discussion has largely moved to whiteboard sketches and lightweight diagrams
DRY (Don’t Repeat Yourself)
Details
- Full Name
-
Don’t Repeat Yourself
- Also known as
-
DRY Principle; antonym: WET ("Write Everything Twice" / "We Enjoy Typing")
Core Concepts:
- The principle
-
"Every piece of knowledge must have a single, unambiguous, authoritative representation within a system." One fact — a business rule, a constant, a schema — lives in exactly one place
- Knowledge, not code
-
DRY targets duplicated knowledge/intent, not coincidental textual similarity. Two code fragments that look alike but change for different reasons are not a DRY violation; collapsing them couples unrelated concerns
- Single source of truth
-
Derive rather than restate — generate docs/config/clients from one authoritative definition so a change propagates instead of being copied
- Rule of Three
-
Extract a shared abstraction after the third occurrence, not the first (Martin Fowler). Premature de-duplication guesses at an abstraction before the pattern is clear
- The wrong-abstraction caution
-
"Duplication is far cheaper than the wrong abstraction" (Sandi Metz). A bad shared abstraction couples callers and is harder to unwind than the duplication it removed — prefer duplication until the right seam is obvious
- Key Proponents
-
Andy Hunt & Dave Thomas, The Pragmatic Programmer (1999)
When to Use:
-
Consolidating a business rule, constant, or schema that appears in several places
-
Designing a single source of truth (config, types, API contracts) that other artifacts derive from
-
Reviewing code for knowledge duplication that causes change to require edits in many spots
When NOT to Use:
-
Before the Rule of Three — resist abstracting on the first or second occurrence
-
When two similar fragments change for different reasons — coupling them via a shared abstraction is worse than the duplication
-
As dogma over readability: a little duplication can beat a leaky, over-general abstraction
Related Anchors:
-
Single Source of Truth — the data-layer cousin of DRY’s knowledge rule
-
Single Level of Abstraction Principle — keeps extracted abstractions coherent
-
KISS Principle — the simplicity counterweight to over-abstraction
-
YAGNI — don’t build the abstraction until you actually need it
Criticism:
-
Sandi Metz, "The Wrong Abstraction" (2016) — overzealous DRY produces abstractions that later requirements don’t fit: "duplication is far cheaper than the wrong abstraction"; her advice is to re-introduce the duplication until the right abstraction reveals itself
-
The authors themselves concede the principle is widely misread: in the 20th Anniversary Edition (2019), Thomas & Hunt write they "did a poor job of explaining" DRY — it targets duplication of knowledge and intent; code deduplication is "a tiny and fairly trivial part" (official chapter extract)
-
The corollary both critiques share: two pieces of code that look alike but encode different business knowledge are not a DRY violation — merging them creates coupling, not clarity
Patterns of Enterprise Application Architecture (PEAA)
Details
- Full Name
-
Patterns of Enterprise Application Architecture according to Martin Fowler
- Also known as
-
Fowler patterns, PEAA patterns, Enterprise patterns
Core Concepts:
- Domain Logic Patterns
-
Transaction Script, Domain Model, Table Module, Service Layer
- Data Source Architectural Patterns
-
Table Data Gateway, Row Data Gateway, Active Record, Data Mapper
- Object-Relational Behavioral Patterns
-
Unit of Work, Identity Map, Lazy Load
- Object-Relational Structural Patterns
-
Identity Field, Foreign Key Mapping, Association Table Mapping, Dependent Mapping, Embedded Value, Serialized LOB, Single Table Inheritance, Class Table Inheritance, Concrete Table Inheritance
- Object-Relational Metadata Mapping Patterns
-
Metadata Mapping, Query Object, Repository
- Web Presentation Patterns
-
Model View Controller, Page Controller, Front Controller, Template View, Transform View, Two Step View, Application Controller
- Distribution Patterns
-
Remote Facade, Data Transfer Object
- Offline Concurrency Patterns
-
Optimistic Offline Lock, Pessimistic Offline Lock, Coarse-Grained Lock, Implicit Lock
- Session State Patterns
-
Client Session State, Server Session State, Database Session State
- Base Patterns
-
Gateway, Mapper, Layer Supertype, Separated Interface, Registry, Value Object, Money, Special Case, Plugin, Service Stub, Record Set
- Key Proponent
-
Martin Fowler ("Patterns of Enterprise Application Architecture", 2002)
When to Use:
-
Designing complex enterprise applications with data persistence
-
Building layered architectures with clear separation of concerns
-
Working with object-relational mapping and database interactions
-
Designing web applications with proper presentation layer patterns
-
Managing distributed system communication
-
Handling concurrency in multi-user enterprise systems
-
Creating maintainable and testable enterprise code
Related Anchors:
-
Domain-Driven Design - Complements PEAA with domain modeling approach
-
Hexagonal Architecture - Architectural style emphasizing ports and adapters
-
Clean Architecture - Layered architecture pattern with dependency rules
Current Status:
-
The prior reproduces the 2002 catalog (Active Record, Data Mapper, Unit of Work, Repository …) as hand-rolled patterns; Fowler himself notes "many patterns are now implemented by common frameworks" while maintaining they are "still relevant today" (P of EAA book page)
-
The online catalog is content-unchanged since its "original 2003 publication", and the planned follow-up volumes (eaaDev) have been "pretty much frozen" since 2006 — the catalog reflects the J2EE/.NET era, not current distributed and frontend-heavy practice
GoF-Abstract Factory Pattern
Details
- Full Name
-
GoF Abstract Factory Pattern (Creational)
- Also known as
-
Kit
Intent:
Provide an interface for creating families of related or dependent objects without specifying their concrete classes.
When to Use:
-
When a system should be independent of how its products are created
-
When a system should be configured with one of multiple families of products
-
When related product objects are designed to be used together and you need to enforce this constraint
Prompt Example:
"Erstelle eine Abstract Factory nach GoF, die UI-Komponenten für verschiedene Plattformen (Web, Mobile, Desktop) erzeugt, ohne dass der Client die konkreten Klassen kennen muss."
Related Anchors:
-
GoF Design Patterns (Umbrella)
GoF-Adapter Pattern
Details
- Full Name
-
GoF Adapter Pattern (Structural)
- Also known as
-
Wrapper
Intent:
Convert the interface of a class into another interface clients expect.
When to Use:
-
When you want to use an existing class whose interface doesn’t match what you need
-
When you want to create a reusable class that cooperates with unrelated classes
Prompt Example:
"Erstelle einen Adapter nach GoF, der die Legacy-API auf unser neues Interface mappt, ohne den bestehenden Code zu ändern."
Related Anchors:
-
GoF Design Patterns (Umbrella)
GoF-Bridge Pattern
Details
- Full Name
-
GoF Bridge Pattern (Structural)
Intent:
Decouple an abstraction from its implementation so that the two can vary independently.
When to Use:
-
When you want to avoid a permanent binding between an abstraction and its implementation
-
When both the abstractions and their implementations should be extensible by subclassing
-
When changes in the implementation should have no impact on clients
Prompt Example:
"Trenne die Rendering-Abstraktion von der plattformspezifischen Implementierung nach dem GoF-Bridge Pattern, damit beide unabhängig erweitert werden können."
Related Anchors:
-
GoF Design Patterns (Umbrella)
GoF-Builder Pattern
Details
- Full Name
-
GoF Builder Pattern (Creational)
Intent:
Separate the construction of a complex object from its representation so that the same construction process can create different representations.
When to Use:
-
When the algorithm for creating a complex object should be independent of the parts and how they are assembled
-
When the construction process must allow different representations
Prompt Example:
"Implementiere einen Builder nach GoF für das QueryObject, mit Fluent API für Filter, Sortierung und Pagination."
Related Anchors:
-
GoF Design Patterns (Umbrella)
GoF-Chain of Responsibility Pattern
Details
- Full Name
-
GoF Chain of Responsibility Pattern (Behavioral)
Intent:
Avoid coupling the sender of a request to its receiver by giving more than one object a chance to handle the request. Chain the receiving objects and pass the request along the chain.
When to Use:
-
When more than one object may handle a request, and the handler isn’t known a priori
-
When you want to issue a request to one of several objects without specifying the receiver explicitly
-
When the set of objects that can handle a request should be specified dynamically
Prompt Example:
"Implementiere eine Middleware-Pipeline nach dem GoF-Chain of Responsibility Pattern, bei der jeder Handler die Anfrage entweder verarbeitet oder an den nächsten weitergibt."
Related Anchors:
-
GoF Design Patterns (Umbrella)
GoF-Command Pattern
Details
- Full Name
-
GoF Command Pattern (Behavioral)
Intent:
Encapsulate a request as an object, thereby letting you parameterize clients with different requests, queue or log requests, and support undoable operations.
When to Use:
-
When you want to parameterize objects with an action to perform
-
When you need undo/redo functionality
-
When you need to queue, log, or schedule requests
Prompt Example:
"Implementiere ein Undo/Redo-System nach dem GoF-Command Pattern, bei dem jede Benutzeraktion als Command-Objekt gekapselt wird."
Related Anchors:
-
GoF Design Patterns (Umbrella)
GoF-Composite Pattern
Details
- Full Name
-
GoF Composite Pattern (Structural)
Intent:
Compose objects into tree structures to represent part-whole hierarchies. Composite lets clients treat individual objects and compositions uniformly.
When to Use:
-
When you want to represent part-whole hierarchies of objects
-
When you want clients to be able to ignore the difference between compositions of objects and individual objects
Prompt Example:
"Modelliere das Dateisystem nach dem GoF-Composite Pattern, sodass Dateien und Ordner einheitlich behandelt werden können."
Related Anchors:
-
GoF Design Patterns (Umbrella)
GoF-Decorator Pattern
Details
- Full Name
-
GoF Decorator Pattern (Structural)
- Also known as
-
Wrapper
Intent:
Attach additional responsibilities to an object dynamically. Decorators provide a flexible alternative to subclassing.
When to Use:
-
To add responsibilities to objects dynamically and transparently
-
When extension by subclassing is impractical
Prompt Example:
"Verwende das GoF-Decorator Pattern, um dem Logger dynamisch Formatierung, Timestamp und Filterung hinzuzufügen."
Related Anchors:
-
GoF Design Patterns (Umbrella)
GoF Design Patterns
Details
- Full Name
-
Gang of Four Design Patterns
- Also known as
-
Design Patterns, Gang of Four Patterns
Core Concepts:
- Creational Patterns
-
Abstract Factory, Builder, Factory Method, Prototype, Singleton — object creation mechanisms
- Structural Patterns
-
Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy — object composition and relationships
- Behavioral Patterns
-
Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method, Visitor — object interaction and responsibility
- Pattern language
-
Shared vocabulary for communicating recurring design problems and proven solutions
- Composition over inheritance
-
Favor object composition for flexibility over rigid class hierarchies
- Program to an interface
-
Depend on abstractions rather than concrete implementations
- Design for change
-
Identify what varies in your design and encapsulate it
- Key Proponents
-
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides ("Design Patterns: Elements of Reusable Object-Oriented Software", 1994)
When to Use:
-
Object-oriented design requiring proven solutions to recurring problems
-
Communicating design decisions using a shared vocabulary
-
Teaching object-oriented design principles through concrete examples
-
Refactoring code to increase flexibility and reusability
Related Anchors:
-
SOLID Principles - Design principles that GoF patterns help implement
-
Fowler Patterns - Enterprise application architecture patterns (complementary scope)
-
Clean Architecture - Architectural style leveraging GoF principles
Criticism:
-
Peter Norvig, "Design Patterns in Dynamic Languages" (1996/1998) — 16 of the 23 patterns have a "qualitatively simpler implementation" in Lisp or Dylan than in C++, or vanish into the language entirely: many patterns compensate for missing language features rather than capture universal design wisdom
-
Paul Graham, "Revenge of the Nerds" (2002) — recurring patterns may be evidence of "the human compiler at work": "When I see patterns in my programs, I consider it a sign of trouble", a sign the language’s abstractions are not powerful enough
-
The authors themselves treat the catalog as a 1994 snapshot, not a closed canon: in the 2009 InformIT interview they discuss how they would reorganize and trim it today (see also the Criticism on Singleton)
GoF-Facade Pattern
Details
- Full Name
-
GoF Facade Pattern (Structural)
Intent:
Provide a unified interface to a set of interfaces in a subsystem. Facade defines a higher-level interface that makes the subsystem easier to use.
When to Use:
-
When you want to provide a simple interface to a complex subsystem
-
When there are many dependencies between clients and implementation classes
Prompt Example:
"Erstelle eine Facade nach GoF für das Payment-Subsystem, die Validierung, Autorisierung und Abrechnung hinter einem einfachen Interface kapselt."
Related Anchors:
-
GoF Design Patterns (Umbrella)
GoF-Factory Method Pattern
Details
- Full Name
-
GoF Factory Method Pattern (Creational)
- Also known as
-
Virtual Constructor
Intent:
Define an interface for creating an object, but let subclasses decide which class to instantiate.
When to Use:
-
When a class can’t anticipate the class of objects it must create
-
When a class wants its subclasses to specify the objects it creates
Prompt Example:
"Extrahiere die Objekterzeugung in eine Factory Method nach GoF, damit neue Typen ohne Änderung des bestehenden Codes hinzugefügt werden können."
Related Anchors:
-
GoF Design Patterns (Umbrella)
GoF-Flyweight Pattern
Details
- Full Name
-
GoF Flyweight Pattern (Structural)
Intent:
Use sharing to support large numbers of fine-grained objects efficiently.
GoF-Interpreter Pattern
Details
- Full Name
-
GoF Interpreter Pattern (Behavioral)
Intent:
Given a language, define a representation for its grammar along with an interpreter that uses the representation to interpret sentences in the language.
GoF-Iterator Pattern
Details
- Full Name
-
GoF Iterator Pattern (Behavioral)
Intent:
Provide a way to access the elements of an aggregate object sequentially without exposing its underlying representation.
When to Use:
-
When you need to access an aggregate object’s contents without exposing its internal representation
-
When you want to support multiple traversals of aggregate objects
-
When you want to provide a uniform interface for traversing different aggregate structures
Prompt Example:
"Implementiere einen Iterator nach GoF für die benutzerdefinierte Baumstruktur, der verschiedene Traversierungsstrategien (Tiefe, Breite) unterstützt."
Related Anchors:
-
GoF Design Patterns (Umbrella)
GoF-Mediator Pattern
Details
- Full Name
-
GoF Mediator Pattern (Behavioral)
Intent:
Define an object that encapsulates how a set of objects interact. Mediator promotes loose coupling by keeping objects from referring to each other explicitly.
When to Use:
-
When a set of objects communicate in well-defined but complex ways
-
When reusing an object is difficult because it refers to and communicates with many other objects
-
When behavior distributed between several classes should be customizable without excessive subclassing
Prompt Example:
"Führe einen Mediator nach GoF ein, der die Kommunikation zwischen den UI-Komponenten (Formular, Liste, Filter) zentral koordiniert und die direkte Kopplung beseitigt."
Related Anchors:
-
GoF Design Patterns (Umbrella)
GoF-Memento Pattern
Details
- Full Name
-
GoF Memento Pattern (Behavioral)
Intent:
Without violating encapsulation, capture and externalize an object’s internal state so that the object can be restored to this state later.
GoF-Observer Pattern
Details
- Full Name
-
GoF Observer Pattern (Behavioral)
- Also known as
-
Publish-Subscribe, Event-Listener
Intent:
Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically.
When to Use:
-
When changes to one object require changing others, and you don’t know how many objects need to change
-
When an object should notify others without knowing who they are
Prompt Example:
"Implementiere ein Event-System nach dem GoF-Observer Pattern, damit Änderungen am Datenmodell automatisch die UI aktualisieren."
Related Anchors:
-
GoF Design Patterns (Umbrella)
GoF-Prototype Pattern
Details
- Full Name
-
GoF Prototype Pattern (Creational)
Intent:
Specify the kinds of objects to create using a prototypical instance, and create new objects by copying this prototype.
When to Use:
-
When a system should be independent of how its products are created and represented
-
When classes to instantiate are specified at runtime
-
When you want to avoid building a class hierarchy of factories that parallels the class hierarchy of products
Prompt Example:
"Verwende das GoF-Prototype Pattern, um neue Konfigurationsobjekte durch Klonen eines Prototypen zu erzeugen, statt sie jedes Mal von Grund auf zu konstruieren."
Related Anchors:
-
GoF Design Patterns (Umbrella)
GoF-Proxy Pattern
Details
- Full Name
-
GoF Proxy Pattern (Structural)
Intent:
Provide a surrogate or placeholder for another object to control access to it.
When to Use:
-
When you need a more versatile or sophisticated reference to an object than a simple pointer (remote, virtual, protection, or smart reference proxy)
Prompt Example:
"Implementiere einen Caching-Proxy nach GoF für den API-Client, der wiederholte Anfragen aus dem Cache beantwortet."
Related Anchors:
-
GoF Design Patterns (Umbrella)
GoF-Singleton Pattern
Details
- Full Name
-
GoF Singleton Pattern (Creational)
Intent:
Ensure a class only has one instance, and provide a global point of access to it.
When to Use:
-
When there must be exactly one instance of a class
-
When the sole instance should be extensible by subclassing
Prompt Example:
"Stelle sicher, dass der ConfigManager als GoF-Singleton implementiert ist, mit thread-sicherem Lazy Loading."
Related Anchors:
-
GoF Design Patterns (Umbrella)
Criticism:
-
Erich Gamma, co-author of the original GoF book, said in the 2009 interview "Design Patterns 15 Years Later" (InformIT, Larry O’Brien) that he favours dropping Singleton from the pattern catalog: "Its use is almost always a design smell"
-
Miško Hevery, "Singletons are Pathological Liars" (Google Testing Blog, 2008) — Singletons hide dependencies from the API surface and make code hard to test in isolation
-
Widely categorised as an anti-pattern in modern practice: it introduces global mutable state, couples consumers to a concrete class, and complicates concurrency and test isolation — dependency injection of a single instance is the commonly recommended alternative
GoF-State Pattern
Details
- Full Name
-
GoF State Pattern (Behavioral)
- Also known as
-
Objects for States
Intent:
Allow an object to alter its behavior when its internal state changes. The object will appear to change its class.
When to Use:
-
When an object’s behavior depends on its state and must change at runtime
-
When operations have large conditional statements that depend on the object’s state
Prompt Example:
"Ersetze die verschachtelten if/switch-Statements durch das GoF-State Pattern, sodass jeder Zustand sein eigenes Verhalten kapselt."
Related Anchors:
-
GoF Design Patterns (Umbrella)
GoF-Strategy Pattern
Details
- Full Name
-
GoF Strategy Pattern (Behavioral)
Intent:
Define a family of algorithms, encapsulate each one, and make them interchangeable. Strategy lets the algorithm vary independently from clients that use it.
When to Use:
-
Multiple related classes differ only in behavior
-
You need different variants of an algorithm
-
An algorithm uses data that clients shouldn’t know about
Prompt Example:
"Refactore diese Klasse nach dem GoF-Strategy Pattern, um die verschiedenen Berechnungsarten austauschbar zu machen."
Related Anchors:
-
GoF Design Patterns (Umbrella)
GoF-Template Method Pattern
Details
- Full Name
-
GoF Template Method Pattern (Behavioral)
Intent:
Define the skeleton of an algorithm in an operation, deferring some steps to subclasses.
When to Use:
-
When you want to implement the invariant parts of an algorithm once and leave it to subclasses to implement varying behavior
-
When common behavior among subclasses should be factored and localized in a common class
Prompt Example:
"Refactore die Report-Generierung nach dem GoF-Template Method Pattern. Der Algorithmus (Daten laden, transformieren, formatieren) bleibt fix, aber die einzelnen Schritte sind austauschbar."
Related Anchors:
-
GoF Design Patterns (Umbrella)
GoF-Visitor Pattern
Details
- Full Name
-
GoF Visitor Pattern (Behavioral)
Intent:
Represent an operation to be performed on the elements of an object structure. Visitor lets you define a new operation without changing the classes of the elements on which it operates.
GRASP
Details
- Full Name
-
General Responsibility Assignment Software Patterns (or Principles)
- Also known as
-
GRASP Patterns, Responsibility-Driven Design Guidelines
Core Concepts:
- Information Expert
-
Assign responsibility to the class that has the information needed to fulfill it
- Creator
-
Assign responsibility for creating an object to the class that aggregates, contains, or closely uses it
- Controller
-
Assign responsibility for handling system events to a non-UI class representing the overall system or a use case
- Low Coupling
-
Assign responsibilities to minimize dependencies between classes, increasing reuse and reducing change impact
- High Cohesion
-
Assign responsibilities so that classes remain focused, understandable, and manageable
- Polymorphism
-
Use polymorphic operations to handle variations in type-based behavior instead of conditionals
- Pure Fabrication
-
Assign a set of responsibilities to an artificial class not representing a domain concept, to achieve low coupling and high cohesion
- Indirection
-
Assign responsibility to an intermediate object to mediate between other components, reducing direct coupling
- Protected Variations
-
Identify points of predicted variation and assign responsibilities to create a stable interface around them
- Key Proponents
-
Craig Larman ("Applying UML and Patterns", 3rd ed., 2004)
When to Use:
-
Designing object-oriented systems and deciding where to assign responsibilities
-
Improving cohesion and reducing coupling in existing codebases
-
Guiding refactoring decisions by evaluating current responsibility assignments
-
Teaching foundational object-oriented design principles
Related Anchors:
-
SOLID Principles - Complementary OO design principles for maintainable systems
-
GoF Design Patterns - Patterns that often embody GRASP principles
-
Clean Architecture - Architectural style that leverages GRASP-based thinking
-
Domain-Driven Design - Uses responsibility assignment in the domain model
Integration Operation Segregation Principle (IOSP)
Details
- Full Name
-
Integration Operation Segregation Principle
- Also known as
-
IOSP, Integration-Operation Separation, N+1 Principle
Core Concepts:
- Core rule
-
Functions shall either only contain logic or they shall only call other functions — never both.
- Operation
-
A function that contains logic but calls no other functions of the same solution. Logic includes transformations (
x + 2), control structures (if,for,while), and third-party API calls (Console.WriteLine,httpClient.Send()). Operations are the leaves of the function tree — they have no functional dependencies on other code of the same codebase. - Integration
-
A function that calls other functions (operations or other integrations) but contains no logic itself. Its sole responsibility is composing lower-level functions into a coherent whole. Integrations are the branches of the function tree — they orchestrate, they do not compute.
- Hybrid
-
A function that violates IOSP by mixing both logic and calls to other functions. Hybrids are the primary source of poor testability: the logic cannot be tested in isolation without mocking the called functions, and the calling structure cannot be understood without reading the embedded logic.
- Why it works
-
A reader encountering an integration can trust it to be a readable summary of the work at that level — pure orchestration without hidden decisions. An operation, conversely, contains only detailed logic — no distracting jumps to other parts of the codebase. This natural enforcement of the Single Level of Abstraction Principle (SLAP) is the key insight: IOSP makes SLAP automatic rather than aspirational.
- How it relates to DIP (Dependency Inversion Principle)
-
Code that follows DIP often creates hybrids: a method both contains domain logic and calls abstractions (interfaces) that represent integrations. IOSP argues that these two responsibilities — logic and integration — should be separated into different functions. The result: operations no longer depend on abstractions, integrating functions do the wiring instead. This reduces the need for DIP and Dependency Injection significantly; DIP is retained only for genuine cases of alternative implementations, not for testability.
- Testability implications
-
Operations are trivially unit-testable — they have no functional dependencies that require mocking. Integrations contain no logic, so there is nothing to unit-test; integration tests verify the wiring. This is a categorical improvement over hybrid code, where every test requires mock setup for the called functions.
- Codebase structure
-
Following IOSP produces a strict tree structure: integrations form the upper layers (high abstraction, no logic), operations form the leaves (low abstraction, all logic). There are no functional dependencies — only "empty" dependencies from integrations to the functions they call. This makes the data flow visible and the graph acyclic by construction.
- Key Proponents
-
Ralf Westphal ("Integration Operation Segregation Principle (IOSP)", 2022 — substack; "IOSP 2.0", 2023; "Radical Object-Orientation #06", 2024), Stefan Lieser ("Three Questions about the IOSP", t2informatik interview, 2025; Clean Code Developer Initiative / CCD Akademie). Both are co-founders of the Clean Code Developer Initiative (2008).
When to Use:
-
Refactoring hybrid functions that mix high-level orchestration with low-level details — IOSP tells you how to split, not just that you should
-
TDD: structuring code so that operations emerge naturally as testable leaves, with integrations as trivial wiring
-
Code review: a concrete, checkable rule — a function either calls other functions or contains logic, never both. If a reviewer spots a hybrid, it’s a clear finding
-
Teaching clean code: unlike SRP (which is often debated), IOSP is crystal clear at a glance — there is no interpretation question
-
Reducing DIP/IoC complexity: if the only reason for DIP is testability, IOSP eliminates that need
-
Architecture design with IODA (Integration-Operation-Data-API): IOSP scales to module level, producing dependency-free operational modules composed by integration modules
-
Designing data flows: integrations become explicit "ditch-diggers" for data to flow between operations
-
.NET development with IospAnalyzer: automated Roslyn Analyzer catches IOSP violations at compile time
Related Anchors:
-
Single Level of Abstraction Principle (SLAP) - IOSP naturally enforces SLAP: integrations are high-level, operations are low-level
-
SOLID Principles - IOSP applies SRP at the function level and can reduce the need for DIP
-
SOLID SRP - IOSP is a special case of SRP applied at the function level, separating the responsibility of "what to compute" from "how to compose"
-
Cohesion Criteria - IOSP produces functional cohesion by dedicating each function to a single kind of work (either logic or composition)
-
GRASP - GRASP’s "High Cohesion" and "Low Coupling" are structurally supported by IOSP’s tree-like composition
-
SOLID DIP - IOSP can replace DIP for the purpose of testability; DIP is retained only for genuine alternative implementations
-
Clean Architecture - Layered abstraction at architecture scale mirrors IOSP’s function-level separation
Current Status:
-
The canonical source is Ralf Westphal’s own writing — "Integration Operation Segregation Principle (IOSP)" (Substack); note that clean-code-developer.de, often assumed to host it, has no IOSP page
-
The prior is thin: the principle originates from a small German Clean Code Developer / Flow Design school, with the inventor’s blog posts as primary sources and mostly German-language secondary coverage — state the rule explicitly in the prompt (functions either contain logic or call other functions, never both)
KISS Principle
Details
- Full Name
-
Keep It Simple, Stupid (also: Keep It Super Simple)
- Also known as
-
KISS, Keep It Simple
Core Concepts:
- Simplicity as a design goal
-
Systems work best when kept simple; complexity should be avoided whenever possible
- Avoid over-engineering
-
Don’t add complexity, abstraction, or features beyond what the current problem requires
- Readability over cleverness
-
Code that is easy to read and understand is preferred over sophisticated but opaque solutions
- Simplest working solution first
-
Implement the most straightforward approach that satisfies the requirements, then refine if needed
- Cognitive load reduction
-
Simpler designs reduce the mental effort required to understand, maintain, and extend a system
- Progressive enhancement
-
Start simple; add complexity only when justified by concrete requirements (pairs with YAGNI)
- Key Proponents
-
Kelly Johnson (Lockheed Skunk Works, 1960s), Robert C. Martin ("Clean Code", 2008)
When to Use:
-
When facing the choice between a simple and a complex solution
-
Reviewing code for maintainability and readability
-
Designing APIs, interfaces, or data models
-
Onboarding new team members to an unfamiliar codebase
-
Refactoring code that has grown unnecessarily complicated
Related Anchors:
-
YAGNI - Don’t implement what you don’t need yet (complementary simplicity principle)
-
DRY - Eliminate redundancy to keep codebases simple and consistent
-
SOLID Principles - Structured guidelines that reinforce clean, simple designs
Law of Demeter
Details
- Full Name
-
Law of Demeter (LoD)
- Also known as
-
Principle of Least Knowledge, "Don’t talk to strangers"
Core Concepts:
- Only talk to your immediate friends
-
A method may call methods on: itself, its parameters, objects it creates, and its direct component objects — but not on objects returned by those calls
- Train-wreck calls
-
Chains like
a.getB().getC().doSomething()reach through intermediaries and couple the caller to a deep object graph — the classic LoD violation - Tell, don’t ask
-
Push behaviour to the object that owns the data instead of pulling data out and operating on it externally
- Encapsulation boundary
-
LoD limits how much of an object’s internal structure leaks to its collaborators, so internal changes don’t ripple outward
- Pragmatic limits
-
It is a heuristic, not an absolute; fluent builders and some data-pipeline/query DSLs chain deliberately and are reasonable exceptions
- Key Proponents
-
Ian Holland & Karl Lieberherr (Northeastern University, Demeter Project, 1987); popularized by "The Pragmatic Programmer" (Hunt & Thomas)
When to Use:
-
Reviewing code for hidden coupling and fragile call chains
-
Designing object APIs that hide their internal structure
-
Teaching encapsulation and "tell, don’t ask"
-
Guiding refactorings away from train-wreck expressions
When NOT to Use:
-
For fluent interfaces / builders where chaining is the intended design
-
For immutable value objects and data-query DSLs where traversal is the point
Related Anchors:
-
SOLID Principles — complementary coupling/cohesion guidance
-
GRASP — Low Coupling and Information Expert overlap with LoD
-
Cohesion Criteria — the cohesion side of the same design concern
Postel’s Law
Details
- Full Name
-
Postel’s Law / The Robustness Principle
- Also known as
-
"Be conservative in what you send, be liberal in what you accept"
Core Concepts:
- The principle
-
Send strictly conforming output; accept input tolerantly, coping with anything you reasonably can — to maximize interoperability between independently built systems
- Conservative output
-
Emit only well-formed, specification-compliant messages so peers never have to compensate for your sloppiness
- Liberal input
-
Tolerate minor deviations and unknown-but-ignorable fields rather than rejecting otherwise-usable messages — supports forward/backward compatibility
- Where it shines
-
Long-lived network protocols, public APIs, file formats, and event schemas that must evolve while old and new participants coexist
- The modern critique
-
Excessive tolerance accumulates undefined behaviour and security risk (ambiguous parsing, smuggling); contemporary guidance favours strictness plus explicit versioning. Apply with a documented tolerance boundary, not blanket leniency
- Key Proponents
-
Jon Postel (RFC 760/761, 1980, in the context of TCP/IP)
When to Use:
-
Designing protocol, API, or event-schema contracts that must evolve
-
Deciding how strictly a parser/validator should reject input
-
Reasoning about forward/backward compatibility and graceful degradation
When NOT to Use:
-
Security-sensitive parsing where ambiguity is dangerous — prefer strict validation
-
Internal interfaces under one team’s control, where strictness catches bugs earlier
Related Anchors:
-
Semantic Versioning — the explicit-versioning complement to tolerant inputs
-
SOLID Principles — interface design and contract stability
-
Event-Driven Architecture — tolerant readers for evolving event schemas
Criticism:
-
Eric Allman, "The Robustness Principle Reconsidered" (ACM Queue, 2011) — decades of liberal acceptance bred de-facto protocol forks and security holes; tolerance that was meant to be transitional became permanent
-
RFC 9413, "Maintaining Robust Protocols" (Thomson & Schinazi, IETF, 2023) — formal IETF guidance that blanket liberality harms protocol ecosystems over time; ambiguous tolerance enables interoperability failures and attacks such as request smuggling
-
Alternative named in the discourse: active protocol maintenance with strict parsing and explicit versioning ("fail fast") instead of silently accepting malformed input — see Semantic Versioning
Single Level of Abstraction Principle (SLAP)
Details
- Full Name
-
Single Level of Abstraction Principle
- Also known as
-
SLAP, SLA Principle, One Level of Abstraction Per Function
Core Concepts:
- Core rule
-
All statements within a single function (or block) should operate at the same level of abstraction. High-level orchestration and low-level mechanics do not belong in the same body.
- Why it works
-
A reader scanning a function can trust it to answer one question at one resolution. Mixing levels forces the reader to context-switch between "what is this step doing" and "how exactly is it being done" on every line, which is the primary driver of the "I have to read this three times" feeling.
- Applying SLAP
-
-
When you notice a function mixing levels, extract the low-level details into well-named helper functions whose names express the next level of detail.
-
The top-level function becomes a readable summary — almost a table of contents — of the work.
-
This is the Composed Method pattern (Kent Beck, Smalltalk Best Practice Patterns, 1996): build functions from calls to other methods at the same conceptual level.
-
- Relation to Clean Code
-
Robert C. Martin formalised SLAP as one of the function-design rules in Clean Code (2008), alongside "Functions should be small", "Do one thing", and "Use descriptive names". SLAP is the organising principle that makes "small functions" readable rather than just fragmented.
- Key Proponents
-
Kent Beck (Smalltalk Best Practice Patterns, 1996 — "Composed Method"), Robert C. Martin (Clean Code, 2008).
When to Use:
-
Refactoring a long function that "does too much" — SLAP tells you how to split it, not just that you should
-
Code review: a natural smell-detector for functions that mix orchestration with mechanics
-
Teaching junior developers a concrete, checkable rule that produces readable code
-
Designing a new algorithm top-down: write the high-level steps as calls to not-yet-existing helpers, then fill them in
-
Reconstructing the intent of legacy code — lift the orchestration out and the design becomes visible
Related Anchors:
-
Cohesion Criteria - SLAP produces functional cohesion by keeping a function focused on one conceptual step
-
KISS Principle - SLAP is one concrete technique for keeping functions simple
-
SOLID SRP - SRP applies at the class level what SLAP applies at the function level
-
Clean Architecture - Layered abstraction at the architectural scale mirrors SLAP at the code scale
SOLID-Dependency Inversion Principle
Details
- Full Name
-
SOLID Dependency Inversion Principle (DIP)
Intent:
High-level modules should not depend on low-level modules. Both should depend on abstractions. Abstractions should not depend on details; details should depend on abstractions.
When to Use:
-
High-level business logic directly instantiates infrastructure classes
-
Changing a database or framework requires modifying business logic
-
Unit testing requires running actual external services
Prompt Example:
"Refactore diese Klasse nach dem SOLID-Dependency Inversion Principle, sodass die Abhängigkeiten über Interfaces injiziert werden."
Related Anchors:
-
SOLID Principles (Umbrella)
-
Hexagonal Architecture - Architectural application of DIP
SOLID-Interface Segregation Principle
Details
- Full Name
-
SOLID Interface Segregation Principle (ISP)
Intent:
Clients should not be forced to depend on interfaces they do not use. Prefer many specific interfaces over one general-purpose interface.
When to Use:
-
Classes implement interface methods they don’t need (empty or throwing)
-
Changes to an interface affect clients that don’t use the changed methods
-
Fat interfaces with many methods serving different client groups
Prompt Example:
"Refactore dieses Interface nach dem SOLID-Interface Segregation Principle in kleinere, clientspezifische Interfaces."
Related Anchors:
-
SOLID Principles (Umbrella)
SOLID-Liskov Substitution Principle
Details
- Full Name
-
SOLID Liskov Substitution Principle (LSP)
Intent:
Subtypes must be substitutable for their base types without altering the correctness of the program. Derived classes must honor the contracts of their base classes.
When to Use:
-
Subclass overrides break expected behavior of the base class
-
instanceof/type checks appear in client code
-
Inheritance hierarchies violate "is-a" relationships
Prompt Example:
"Überprüfe diese Vererbungshierarchie auf Verletzungen des SOLID-Liskov Substitution Principle."
Related Anchors:
-
SOLID Principles (Umbrella)
SOLID-Open/Closed Principle
Details
- Full Name
-
SOLID Open/Closed Principle (OCP)
Intent:
Software entities should be open for extension but closed for modification. Add new behavior by adding new code, not changing existing code.
When to Use:
-
Adding new features requires modifying existing working code
-
Frequent changes to a module break other parts of the system
-
You need a plugin or strategy-based extension mechanism
Prompt Example:
"Refactore diesen Code nach dem SOLID-Open/Closed Principle, sodass neue Varianten ohne Änderung des bestehenden Codes hinzugefügt werden können."
Related Anchors:
-
SOLID Principles (Umbrella)
-
GoF-Strategy Pattern - Common OCP implementation
SOLID Principles
Details
- Full Name
-
SOLID Object-Oriented Design Principles
Core Concepts:
- Single Responsibility Principle (SRP)
-
Each class should have one responsibility
- Open/Closed Principle (OCP)
-
Entities should be open for extension, closed for modification
- Liskov Substitution Principle (LSP)
-
Subtypes must be substitutable for their base types
- Interface Segregation Principle (ISP)
-
Clients should not be forced to depend on interfaces they do not use
- Dependency Inversion Principle (DIP)
-
Depend on abstractions, not concrete implementations
- Key Proponent
-
Robert C. Martin ("Uncle Bob")
When to Use:
-
Designing maintainable and scalable object-oriented systems
-
Refactoring legacy code to improve structure
-
Building systems where flexibility and testability are important
-
Teaching or enforcing good software design practices
Criticism:
-
Dan North, "CUPID — for joyful coding" (2022; preceded by his 2017 talk "Why Every Single Element of SOLID is Wrong") — the principles are too vague to guide decisions ("responsibility" is undefined) and optimise for a style of OO design that mainstream practice has moved past; he proposes the CUPID properties as an alternative
-
John Ousterhout, "A Philosophy of Software Design" (2018) — SRP-driven decomposition produces many shallow classes whose interfaces add more complexity than their implementations hide; he argues for fewer, deeper modules
-
The principles rest on anecdote and authority rather than empirical evidence — a recurring point in the debate around both critiques
SOLID-Single Responsibility Principle
Details
- Full Name
-
SOLID Single Responsibility Principle (SRP)
Intent:
A class should have only one reason to change. Each module or class should be responsible for a single part of the software’s functionality.
When to Use:
-
A class has multiple unrelated responsibilities
-
Changes to one feature require modifying unrelated code
-
Unit testing requires complex setup due to tangled concerns
Prompt Example:
"Refactore diese Klasse nach dem SOLID-Single Responsibility Principle. Trenne die Verantwortlichkeiten in separate Klassen."
Related Anchors:
-
SOLID Principles (Umbrella)
SSOT (Single Source of Truth)
Details
- Full Name
-
Single Source of Truth
Core Concepts:
- Conceptual principle
-
Focuses on establishing trust and authority for data
- Authoritative source
-
One canonical, trusted location for each piece of data
- Data integrity
-
All consumers reference the same trusted source
- Version control
-
Single source ensures consistent versioning
- Derived data
-
Other representations are derived from the single source
- Trust and reliability
-
The source is the definitive version when conflicts arise
- System of record
-
The primary data store for critical business information
- Organizational practice
-
Applied at the architecture and business process level
Key Application Areas:
-
Version control systems (Git as SSOT for code)
-
Database design and data warehousing
-
Documentation and knowledge management
-
Configuration management
-
Master data management (MDM)
When to Use:
-
Designing data architecture for enterprise systems
-
Establishing documentation standards and knowledge bases
-
Building data pipelines and ETL processes
-
Implementing microservices with clear data ownership
-
Creating audit trails and ensuring compliance
-
Resolving conflicts between multiple data sources
- Difference from SPOT
-
SSOT emphasizes the authoritative, trusted nature of a data source and is used at the architecture/organizational level, while SPOT focuses on the implementation pattern
- Related Concepts
-
DRY, SPOT, Event sourcing, Data lakes, Master data management
YAGNI (You Aren’t Gonna Need It)
Details
- Full Name
-
You Aren’t Gonna Need It
Core Concepts:
- Don’t build for hypothetical futures
-
Only implement functionality when it is actually needed, not when you foresee it might be needed
- Speculative generality
-
Anti-pattern of building abstractions for imagined future requirements that may never materialize
- Incremental design
-
Let design emerge through actual needs; evolve architecture as requirements become concrete
- Cost of carry
-
Unused code adds maintenance burden, increases complexity, and creates cognitive load for the entire team
- Delete dead code
-
Aggressively remove code that no longer serves a current purpose
- Extreme Programming origin
-
Core XP practice alongside TDD, refactoring, and continuous integration
- Reversibility
-
Prefer simple, changeable decisions over premature commitments to complex solutions
- Key Proponents
-
Ron Jeffries (coined the phrase), Kent Beck ("Extreme Programming Explained", 1999)
When to Use:
-
Fighting over-engineering and premature abstraction
-
Agile projects with iterative delivery and evolving requirements
-
Refactoring legacy systems burdened with unused features
-
When tempted to add "just in case" functionality or configurability
Related Anchors:
-
DRY - Eliminates duplication of existing knowledge (complementary but distinct)
-
SPOT - Single Point of Truth, related simplicity principle
-
TDD, Chicago School - YAGNI is a core principle of classicist TDD
-
KISS Principle - Keep systems as simple as possible (complementary simplicity principle)
Development Workflow
BEM Methodology
Details
- Full Name
-
Block Element Modifier (BEM) (S)CSS Methodology
Core Concepts:
- Motivation
-
Solve CSS specificity wars, naming conflicts, and stylesheet maintainability issues in large codebases
- Block
-
Standalone component that is meaningful on its own (e.g.,
menu,button,header) - Element
-
Part of a block with no standalone meaning (e.g.,
menuitem,buttonicon) - Modifier
-
Flag on blocks or elements that changes appearance or behavior (e.g.,
button—disabled,menu__item—active) - Naming convention
-
block__element—modifierstructure - Independence
-
Blocks are self-contained and reusable
- No cascading
-
Avoid deep CSS selectors, use flat structure
- Explicit relationships
-
Clear parent-child relationships through naming
- Reusability
-
Components can be moved anywhere in the project
- Mix
-
Combining multiple BEM entities on a single DOM node
- File structure
-
Often paired with component-based file organization
Naming Examples:
-
Block:
.search-form -
Element:
.search-forminput,.search-formbutton -
Modifier:
.search-form—compact,.search-form__button—disabled- Key Proponents
-
Yandex development team
When to Use:
-
Large-scale web applications with many components
-
Team projects requiring consistent (S)CSS naming conventions
-
When (S)CSS maintainability and scalability are priorities
-
Projects where developers need to quickly understand (S)CSS structure
-
Component-based architectures (React, Vue, Angular)
Current Status:
-
The definition at getbem.com and bem.info is stable and still accurate — BEM itself is a finished methodology
-
Mainstream practice has shifted: State of CSS 2024 shows Tailwind CSS "far ahead of other, more traditional competitors", and the survey no longer even tracks naming methodologies as it did in 2020; CSS Modules, CSS-in-JS, and native scoping/nesting/cascade layers solve by platform the global-namespace problem BEM solved by convention
Conventional Commits
Details
Core Concepts:
-
A specification for adding human and machine readable meaning to commit messages
-
Determining a semantic version bump (based on the types of commits landed)
-
Communicating the nature of changes to teammates, the public, and other stakeholders
- Schema
-
<type>[!][(optional scope)]: <description> + optional body/footer
- Common Types
-
feat: - introduce new feature to the codebase (→ Semver Minor)
-
fix: - patches a bug in your codebase (→ SemVer Patch)
-
docs: - documentation improvements to the codebase
-
chore: - codebase/repository housekeeping changes
-
style: - formatting changes that do not affect the meaning of the code
-
refactor: - implementation changes that do not affect the meaning of the code
-
! - BREAKING CHANGE (→ SemVer Major)
-
BREAKING CHANGE: introduces a breaking API change
- Key Proponents
-
Benjamin E. Coe, James J. Womack, Steve Mao
When to Use:
-
everything-as-code paradigm targeted
-
team-/community-communication
-
repository quality improvements
Definition of Done
Details
- Also known as
-
DoD, Done Criteria, Acceptance Criteria (team-level)
Core Concepts:
- Shared agreement
-
A formal, team-wide checklist of quality criteria that every increment must satisfy before it is declared "done"
- Increment quality gates
-
Concrete, verifiable conditions — e.g., code reviewed, tests passing, documentation updated, no known defects
- Transparency
-
Makes the meaning of "done" visible and unambiguous to all stakeholders, preventing hidden technical debt
- Sprint-level vs. product-level DoD
-
Teams may maintain separate DoD lists for Sprint increments and for releasable product increments
- Continuous refinement
-
The DoD evolves as the team matures; stricter gates are added over time
- Undone work
-
Work that does not meet the DoD is not counted as complete; it returns to the Product Backlog
- Shared responsibility
-
The entire Scrum team (Developers, Product Owner, Scrum Master) owns and respects the DoD
- Key Proponents
-
Ken Schwaber & Jeff Sutherland ("The Scrum Guide", 2020); Mike Cohn ("Succeeding with Agile", 2009)
When to Use:
-
Establishing a consistent quality standard across a Scrum or agile team
-
Onboarding new team members so they understand what "finished" means
-
Reducing rework and late-cycle defects by agreeing on criteria upfront
-
Aligning developers, QA, and product owners on release readiness
Related Anchors:
-
BDD (Behavior-Driven Development) - Given-When-Then scenarios that operationalize acceptance criteria
-
User Story Mapping - Planning technique that identifies the scope Definition of Done must cover
-
MoSCoW - Prioritization method used to decide which DoD items are must-haves
Effective Go
Details
Core Concepts:
- Formatting (gofmt)
-
Code is auto-formatted; style debates are eliminated by tooling
- Package names
-
Short, lowercase, no underscores; package name is part of the qualified identifier
- Named return values
-
Return values can be named and used as documentation
- Defer
-
Deferred function calls run in LIFO order when the surrounding function returns; used for cleanup (close, unlock)
- Goroutines
-
Lightweight concurrently executing functions; "Don’t communicate by sharing memory; share memory by communicating"
- Channels
-
Typed conduits for goroutine communication; first-class synchronization primitive
- Interfaces
-
Implicit satisfaction — a type implements an interface simply by implementing its methods; enables duck typing
- Error handling
-
Errors are values; idiomatic pattern is
if err != nilat each call site; no exceptions - Blank identifier (_)
-
Discard unwanted values from multi-value returns without compiler error
- Embedding
-
Composition over inheritance; types can embed other types to gain their methods
- Key Proponent
-
The Go Authors (https://go.dev/doc/effective_go)
When to Use:
-
Onboarding new Go developers to idiomatic Go style
-
Code review discussions about Go conventions
-
Establishing team-wide Go coding standards
-
Explaining Go idioms that differ from other languages (e.g. error handling, interfaces)
-
Prompting an LLM to produce idiomatic, production-quality Go code
Current Status:
-
Dated by its own admission — the document opens with: "This document was written for Go’s release in 2009 and is not actively updated. While it remains a good guide for using the core language, it does not cover significant changes to the language (generics), ecosystem (modules), or libraries added since." The Go team has deliberately frozen it (golang/go #28782, still open)
-
It predates the entire modern toolchain era — modules (2018/19) and generics (Go 1.18, 2022) — so its guidance is silent on these topics rather than wrong about the core language
-
Modern complements: the curated Go Code Review Comments (self-described "supplement to Effective Go") and Google’s maintained Go Style series (Guide, Decisions, Best Practices)
GitHub Flow
Details
Core Concepts:
-
A lightweight, branch-based workflow where
mainis always deployable -
Feature branches are short-lived, created from
mainfor every change -
Pull Requests are the central collaboration mechanism — used for code review, discussion, and CI validation before merging
-
Merging to
maintriggers immediate deployment (continuous delivery) -
Branch naming reflects the work: issue number or short descriptive slug
- Workflow steps
-
-
Create a branch from
main(named after the issue or feature) -
Commit changes with descriptive messages
-
Open a Pull Request early for visibility and feedback
-
Discuss, review, and iterate until the PR is approved
-
Merge to
main—mainis always in a deployable state -
Deploy immediately after merge
-
- Key Proponent
-
Scott Chacon ("GitHub Flow", 2011)
When to Use:
-
Teams practicing continuous delivery or continuous deployment
-
Projects where
mainmust always be production-ready -
Issue-driven or ticket-driven development workflows
-
Agentic coding workflows where context brevity matters
Related Anchors:
Current Status:
-
The prior most plausibly reproduces Scott Chacon’s original 2011 formulation, where continuous deployment is the point — "anything in the master branch is deployable", and merged work is deployed immediately, often several times a day
-
GitHub’s current official description has narrowed to a generic branch → PR → review → merge workflow with no deployment step at all — say which of the two you mean
Programming as Theory Building (Naur)
Details
- Also known as
-
Mental Model according to Naur
Core Concepts:
- Theory building
-
Programming is creating a mental model, not just writing code. The real program exists in developers' minds, not in the code.
- Document the Why
-
Code shows what the system does. The theory captures why it is built this way — the reasoning, trade-offs, and domain understanding behind the design.
- Theory decay
-
When original developers leave, the theory is lost. Written code alone cannot reconstruct it. This explains why maintenance by new teams is so difficult.
- Complement to ADRs
-
ADRs document individual architectural decisions. Theory Building goes deeper: document the overarching understanding of why the system is shaped the way it is.
- Communication is key
-
Theory must be shared through collaboration, conversation, and documentation that captures intent, not just structure.
- Key Proponent
-
Peter Naur (Turing Award winner, 1978)
- Original Work
-
"Programming as Theory Building" (1985)
When to Use:
-
Tell an LLM: "Document the theory behind this code according to Naur — not what it does, but why it is built this way"
-
Capturing design rationale beyond individual ADRs
-
Onboarding documentation that explains the mental model behind a system
-
Justifying time for knowledge transfer, pair programming, and code walkthroughs
-
Explaining technical debt accumulation when teams change
Related Anchors:
-
ADR according to Nygard — complementary: ADRs for individual decisions, Theory Building for overarching understanding
-
Docs-as-Code — the practice of maintaining this documentation alongside code
Mikado Method
Details
- Also known as
-
Mikado Graph Method
Core Concepts:
- Mikado Goal
-
The clear desired future state of the code after refactoring; the root of the dependency graph and success criterion of the change
- Prerequisite discovery
-
Reveal blocking dependencies by attempting the change and noting what breaks
- Use experiments
-
Prefer quick or time-boxed empirical attempts over long upfront analysis
- Always revert
-
IMPORTANT: After discovering a prerequisite, always revert to the last known working state before addressing it
- Mikado Graph
-
A directed acyclic graph where goals and prerequisites are nodes and arrows show dependencies
- Leaf-first resolution
-
Resolve the leaf nodes (no further prerequisites) first, working back to the root goal
- Small reversible steps
-
Revert failed experiments immediately; keep or commit only coherent healthy changes
- Meaningful commits
-
Commit only when the code compiles, tests run, the product is in a good state, and the change makes sense on its own
- Key Proponents
-
Ola Ellnestam, Daniel Brolund ("The Mikado Method", 2012)
When to Use:
-
Tackling large refactorings in legacy or complex codebases
-
When a direct change breaks too many things to fix at once
-
Coordinating multi-developer refactoring efforts safely
-
Making incremental improvements without blocking the team
-
Brownfield development with hidden dependencies
Mikado Method Recipe (Canonical Form)
-
Start here: Draw the Mikado Goal.
-
Implement the goal or prerequisite naively.
-
Are there any errors?
-
Examples: compiler errors, failing tests, runtime errors, broken builds.
-
If Yes, go to step 4.
-
If No, go to step 9.
-
-
Come up with immediate solutions to the errors.
-
Draw the solutions as new prerequisites in the Mikado Graph.
-
Revert all changes and return to the last known good state.
-
Select the next prerequisite to work with.
-
Go to step 2.
-
Does the change make sense?
-
Examples: understandable, internally consistent, safe to keep, useful on its own.
-
If Yes, go to step 10.
-
If No, go to step 7.
-
-
Commit the change.
-
Is the Mikado Goal met?
-
If Yes, go to step 12.
-
If No, go to step 7.
-
-
DONE!
Related Anchors:
Regulated Environment
Details
- Also known as
-
Compliance Environment, Validated Environment, Regulated Industry Development
Core Concepts:
- Traceability
-
Every requirement, design decision, implementation, and test must be linked end-to-end; changes traceable from origin to deployment
- Validation & Verification (V&V)
-
Formal proof that a system does what it is intended to do (validation) and is built correctly (verification)
- Audit Trail
-
Immutable, timestamped record of who changed what, when, and why; essential for regulatory inspections
- Change Control
-
Formal process for evaluating, approving, implementing, and documenting any change to a validated system
- Documentation requirements
-
Specifications (URS, FS, DS), SOPs, test protocols, validation reports, and risk assessments are mandatory deliverables
- Risk-based approach
-
Effort and rigor proportional to the risk posed by the system (e.g., GAMP 5 categories, FMEA)
- Separation of environments
-
Strict segregation of development, testing/qualification, and production environments
- Reproducibility
-
Builds, deployments, and test results must be reproducible; version-pinned dependencies and infrastructure-as-code
- Electronic signatures & records
-
Legally binding digital sign-off on documents and data (e.g., FDA 21 CFR Part 11)
- Supplier qualification
-
Third-party components and vendors must be qualified and audited
Applicable Standards & Frameworks:
-
FDA 21 CFR Part 11 – Electronic records and signatures (US pharmaceutical/medical)
-
EU GMP Annex 11 – Computerised systems in pharmaceutical manufacturing
-
GAMP 5 – Good Automated Manufacturing Practice (risk-based validation guidance)
-
ISO 9001 – Quality management systems
-
IEC 62304 – Medical device software lifecycle
-
ISO 26262 – Functional safety for automotive systems
-
SOX (Sarbanes-Oxley) – Financial reporting systems (IT general controls)
-
ISO/IEC 27001 – Information security management
When to Use:
-
Developing software for pharmaceutical, biotech, or medical device industries
-
Building systems subject to FDA, EMA, or other regulatory body oversight
-
Any project where an audit by an external authority is anticipated
-
Financial systems subject to SOX, PCI-DSS, or similar controls
-
Safety-critical systems in automotive, aerospace, or industrial automation
-
Setting up CI/CD pipelines that must satisfy validation requirements
Related Anchors:
Semantic Versioning (SemVer)
Details
- Full Name
-
Semantic Versioning Specification
Core Concepts:
- Version format
-
- MAJOR
-
Incompatible API changes (breaking changes)
- MINOR
-
Backward-compatible functionality additions
- PATCH
-
Backward-compatible bug fixes
- Pre-release versions
-
Append hyphen and identifiers (e.g., 1.0.0-alpha.1)
- Build metadata
-
Append plus sign and identifiers (e.g., 1.0.0+20241111)
- Version precedence
-
Clear rules for version comparison
- Initial development
-
0.y.z for initial development (API unstable)
- Public API declaration
-
Once public API declared, version dependencies matter
- Key Proponent
-
Tom Preston-Werner
When to Use:
-
Libraries and APIs consumed by other software
-
Software with defined public interfaces
-
Projects requiring dependency management
-
Communication of change impact to users/consumers
Site Reliability Engineering
Details
- Full Name
-
Site Reliability Engineering (SRE)
- Also known as
-
"Operations as a software problem", Google SRE
Core Concepts:
- Operations as a software problem
-
Apply software engineering to operations work instead of manual administration.
- SLI / SLO / SLA
-
Service Level Indicators measure behavior; Objectives set internal targets; Agreements are external commitments.
- Error budget
-
100% reliability is the wrong target; the allowed unreliability (1 − SLO) is a budget spent on feature velocity and risk.
- Embrace risk
-
Reliability is balanced against the cost and speed of change, not maximized blindly.
- Eliminate toil
-
Reduce repetitive, manual, automatable operational work; cap operational load (~50%) to protect engineering time.
- Blameless postmortems
-
Learn from incidents by analyzing systems and processes rather than assigning blame.
- Monitoring & observability
-
Measure the four golden signals — latency, traffic, errors, saturation.
- Release & capacity engineering
-
Automate launches, rollouts, and capacity planning to make change safe and repeatable.
- Key Proponents
-
Ben Treynor Sloss (coined the term at Google); Betsy Beyer, Chris Jones, Jennifer Petoff, Niall Richard Murphy ("Site Reliability Engineering", O’Reilly 2016, and "The Site Reliability Workbook")
When to Use:
-
Operating production services where reliability must be measured and managed
-
Defining SLOs and error budgets to balance reliability against feature velocity
-
Establishing on-call, incident response, and blameless postmortem practices
-
Reducing operational toil through automation
-
Distinguishing reliability ownership from generic DevOps culture
Related Anchors:
Current Status:
-
The prior serves the canon well: the 2016 SRE Book and 2018 Workbook (SLOs, error budgets, toil, postmortems) remain authoritative, and Google publishes all three books — including "Building Secure and Reliable Systems" (2020) — free at sre.google/books
-
What moved since the books is the organisational frame: SRE practice increasingly converges with platform engineering, with reliability capabilities embedded into internal platforms rather than delivered solely by standalone SRE teams — reflected in Google’s own platform-engineering guidance
SOTA (State-of-the-Art)
Details
- Full Name
-
State-of-the-Art
Core Concepts:
- Latest approaches
-
Focus on the most current, cutting-edge methods and techniques
- Research-grounded
-
Reference current research papers, benchmarks, and empirical results
- Comparative analysis
-
Compare new approaches with existing or previous methods
- Performance-focused
-
Emphasize benchmark-leading and best-performing solutions
- Up-to-date information
-
Provide current, grounded information rather than outdated practices
- Evidence-based
-
Support claims with recent studies, benchmarks, and real-world implementations
- Contextual awareness
-
Consider the specific domain and timeframe for "state-of-the-art"
Usage Patterns:
-
"Learn SOTA for [topic]" - triggers research and comprehensive information gathering
-
"What’s SOTA for [topic]?" - requests current best practices and approaches
-
"Give me the SOTA approach for [problem]" - asks for cutting-edge solutions
Example Usage:
-
"Learn SOTA for RAG implementations"
-
"What’s SOTA for code generation in 2024?"
-
"Give me the SOTA approach for semantic search"
-
"What’s the SOTA in transformer architectures?"
- Key Proponent
-
Widely used in ML/AI research community
When to Use:
-
Researching current best practices in a technical domain
-
Comparing different approaches to solve a problem
-
Staying updated with rapidly evolving fields (AI/ML, web technologies)
-
Making technology decisions based on current benchmarks
-
Learning about cutting-edge implementations
-
Avoiding outdated or deprecated approaches
Why It Works:
-
Heavily represented in ML/AI papers, benchmarks, and technical discussions
-
Consistent meaning across contexts: "best performing" and "most current"
-
Concise trigger for comprehensive research behavior
-
Activates research-oriented response patterns in LLMs
Current Status:
-
"SOTA" is a timestamp, not a fact: any model’s state-of-the-art knowledge is frozen at its training cutoff — and even the reference infrastructure churns: Papers with Code, long the canonical SOTA tracker, now redirects to Hugging Face and no longer exists as a leaderboard site (verified June 2026)
-
When writing or reading "SOTA", attach an explicit date and source; for current rankings consult a live leaderboard (e.g. lmarena.ai) at the time of reading rather than any list a model produces from memory
Spike Solution
Details
- Also known as
-
Spike, Technical Spike, Research Spike
Core Concepts:
- Time-boxed
-
A spike has an explicit, non-negotiable deadline (hours or days, not weeks). When time runs out, the spike ends — even if the answer is incomplete. An unbounded spike has become speculative development.
- Single question
-
A spike answers one specific technical question: "Can library X handle our throughput?", "Will the auth provider accept these claims?", "Is Approach A or B faster?". Multiple questions mean multiple spikes.
- Disposable
-
The code is throwaway. It lives in a branch (or scratch repo), gets studied, and gets deleted. Reusing spike code in production defeats the purpose — spike quality is deliberately rough.
- Output is a decision, not a deliverable
-
The point of a spike is to reduce uncertainty so a decision can be made. Common outputs: a short writeup, a benchmark number, a "yes/no" answer, an ADR. Never a pull request to main.
- Reduces estimation risk
-
Spikes are commonly used when a story cannot be estimated because of unknown unknowns. After the spike, the team can estimate with confidence.
- Low ceremony, high focus
-
No code review, no test coverage, no polish. The constraint is "learn the answer as fast as possible", which is the opposite of production code.
- Explicit in the backlog
-
"Spike: investigate X" is a legitimate work item. Teams should track spikes as first-class, not hide them inside regular stories.
- Key Proponents
-
Kent Beck ("Extreme Programming Explained", 1999, 2nd ed. 2004); Ron Jeffries popularized the term in early XP writings
When to Use:
-
Estimating a story is impossible because of unknown technical risk
-
Choosing between two approaches requires empirical evidence rather than debate
-
A new library, framework, or API is being evaluated
-
Performance, scalability, or integration assumptions need verification before commitment
-
LLM prompting: "spike the approach" cleanly signals explore, don’t build
Related Anchors:
-
Tracer Bullet - Also exploratory, but tracer bullets are kept and iterated on, not discarded
-
Walking Skeleton - Production-capable end-to-end scaffolding; the opposite of a spike on the throwaway axis
-
Pugh Matrix - Decision-support technique a spike often feeds into
Thin Vertical Slice
Details
- Also known as
-
Vertical Slicing, End-to-End Slice
Core Concepts:
- One feature, all layers
-
Each increment implements a single small feature end-to-end through every technical layer (UI → logic → persistence → integration) in one piece of work.
- Releasable after every slice
-
The goal of slicing is to keep the system shippable after each increment. "Done" means users can use it, not that one layer is finished.
- Cross-cutting, not horizontal
-
Horizontal slicing ("finish the DB layer, then the API, then the UI") delays delivery and hides integration problems. Vertical slicing inverts that.
- Small but complete
-
A thin slice is small in scope but complete in depth. Removing any layer breaks the feature; shortening any layer is fine.
- Avoid integration surprises
-
Because every slice touches every layer, integration issues surface early and often, not as a terrifying end-of-project merge.
- Value per slice
-
Each slice should produce a user-observable change. "Refactor the user service" is not a vertical slice; "user can change their email" is.
- Distinct from Vertical Slice Architecture
-
VSA is a structural pattern for organizing code; thin vertical slicing is a delivery technique for organizing work. They are complementary but independent — you can slice thinly with or without VSA.
- Key Proponents
-
Alistair Cockburn ("Agile Software Development", 2001); Mike Cohn ("User Stories Applied", 2004)
When to Use:
-
Breaking down user stories or epics into deliverable increments
-
Avoiding big-bang integrations at the end of a sprint or project
-
When the team needs early, frequent user feedback on actual working software
-
Reducing risk on long-running feature work by shipping usable subsets
-
Any agile delivery context where "done" should mean "shipped"
Related Anchors:
-
Walking Skeleton - The first thin slice in a greenfield system; architecture validation
-
Tracer Bullet - Exploratory end-to-end slice for direction validation
-
Vertical Slice Architecture - Structural pattern that organizes code to match sliced delivery
-
User Story Mapping - Technique for identifying which slices to cut first
TIMTOWTDI
Details
- Full Name
-
There Is More Than One Way To Do It
- Also known as
-
Tim Toady
Core Concepts:
- Multiple valid approaches
-
Acknowledges that problems can be solved in different, equally valid ways
- Developer freedom
-
Trust developers to choose the right approach for their context
- Expressiveness
-
Languages and tools should support diverse problem-solving styles
- Context-dependent decisions
-
The "best" solution depends on constraints, team, and situation
- No single canonical form
-
Resist dogma — flexibility over prescription
- Trade-off awareness
-
Different approaches have different trade-offs; none is universally superior
- Pragmatism over purity
-
Practical results matter more than theoretical elegance
- Collaborative decision-making
-
When working with others, discuss approach rather than assume
- Key Proponent
-
Larry Wall (Perl programming language)
Contrast:
-
Python’s Zen: "There should be one-- and preferably only one --obvious way to do it" (opposite philosophy)
-
TIMTOWTDI favors flexibility and expressiveness over enforced uniformity
When to Use:
-
Choosing between multiple valid architectural or design approaches
-
Code reviews where different styles achieve the same goal
-
Team discussions about tooling, frameworks, or methodologies
-
LLM-assisted development: ask for alternatives rather than accepting the first suggestion
-
Avoiding premature standardization before understanding trade-offs
-
Resisting "one true way" dogma in technology choices
-
Architecture Decision Records (ADRs): documenting why one approach was chosen over other valid alternatives
-
KonsenT-based decisions: finding solutions with no objections rather than forcing one "right" way
Dialogue Interaction
Socratic Method
Details
- Full Name
-
Socratic Method (also Socratic Dialogue, Elenchus)
Core Concepts:
- Guided Discovery
-
Lead learners to insights through questions rather than direct instruction
- Elenchus
-
Cross-examination technique to expose contradictions in beliefs
- Maieutics
-
"Midwifery of ideas" – helping others give birth to knowledge they already possess
- Aporia
-
State of productive confusion that motivates deeper inquiry
- Question Hierarchy
-
Progress from clarifying questions to probing assumptions to exploring implications
- Dialectic Method
-
Structured dialogue to arrive at truth through reasoned argument
- Non-assertive Teaching
-
Teacher claims ignorance, guides through questions
- Assumption Surfacing
-
Make implicit beliefs explicit through systematic questioning
- Logical Consistency
-
Test ideas for internal coherence and contradictions
- Key Proponent
-
Socrates (via Plato’s dialogues, ~400 BCE)
- Historical Context
-
2400+ years of philosophical tradition, foundational to Western philosophy and critical thinking education
When to Use:
-
Teaching complex concepts where understanding must be constructed, not transmitted
-
Helping someone work through a problem without giving direct answers
-
Uncovering hidden assumptions in arguments or designs
-
Exploring the implications of a decision or belief
-
Encouraging deeper thinking about a topic
-
Code review or design review where understanding, not compliance, is the goal
Related Concepts:
-
Cognitive apprenticeship
-
Constructivist learning theory
-
Critical thinking pedagogy
Systemic Consulting (Heidelberg School)
Details
- Full Name
-
Systemic Consulting according to the Heidelberg School
- Also known as
-
Systemische Beratung, Systemic Therapy and Consulting, Heidelberg Model
Core Concepts:
- Consulting as Communication
-
"Was all diese Beratungsansätze miteinander verbindet: Es sind Formen der Kommunikation." (Simon, Einführung in die (System-)Theorie der Beratung, 2014) — The consulting process is analyzed through the lens of communication theory.
- All-Partiality (Allparteilichkeit)
-
The consultant takes no side but is partial to all sides simultaneously. "Rollenklärung des Therapeuten sowie Allparteilichkeit und das Prinzip der Neutralität." (Simon/Rech-Simon, Zirkuläres Fragen)
- Neutrality
-
The consultant remains neutral toward persons, toward the problem, and toward change. Not cold distance, but active multiperspectivity.
- Circular Questions
-
Instead of linear cause-effect questions ("Why did X happen?"), circular questions explore relationships, differences, and feedback loops: "What would Y say about X’s behavior?" "What needs to happen for the pattern to change?" "Zirkuläres Fragen zielt darauf, die gegenseitige Bedingtheit des Verhaltens von Menschen zu verdeutlichen."
- Context Clarification
-
"Die Kontextklärung für Therapeuten ist immer klarer als für Patienten." — Before any intervention, the context must be clarified: who referred, what are the expectations, what is the mandate?
- Problem as Emergent Pattern
-
Problems arise from relational patterns, not from individual deficiencies. Changing the pattern changes the problem.
- No Instruction, Only Irritation
-
The consultant cannot dictate changes (systems are operatively closed) but can offer perturbations that the system may or may not integrate.
- Reframing / Positive Connotation
-
Every behavior that appears dysfunctional is reframed as having a positive function for the system. "Which adaptive function does the status quo serve?"
- Hypothesizing
-
Before meeting a client, the team generates hypotheses about the system’s dynamics. Hypotheses are treated as provisional and falsifiable.
- Systemic Interview Structure
-
Clarify referral context → define goals → explore attempted solutions → identify resources → hypothesize patterns → offer intervention.
- Key Proponents
-
Fritz B. Simon (Einführung in die (System-)Theorie der Beratung, 2014), Helm Stierlin, Gunthard Weber (Heidelberg School), Paul Watzlawick, Jay Haley, John Weakland (MRI Palo Alto), Mara Selvini Palazzoli (Milan Group)
When to Use:
-
Facilitating organizational change where linear approaches have failed
-
Mediating conflicts between stakeholders with incompatible perspectives
-
Designing human-centered automation that respects user autonomy
-
Coaching teams through complex adaptive challenges
-
Any situation where the interventionist is part of the system (no external vantage point)
-
Evaluating whether a proposed technical solution addresses relational dynamics
Relationship to Other Anchors:
-
Operationalizes Simon’s Constructivism into concrete practice
-
Provides the "how" for the System-Theoretic Semantic Anchors framework (especially Stakeholder and Trust anchors, see separate proposal)
-
Direct precursor to Semantic Contracts — the consulting mandate functions as a semantic contract between consultant and client (see separate proposal)
-
Complements Cynefin Framework by providing intervention methods for the Complex domain
-
Contrasts with expert-driven consulting (which assumes instruction is possible)
XY Problem
Details
- Also known as
-
Solution Fixation, Asking the Wrong Question
Core Concepts:
- X is the Real Problem
-
The underlying goal the asker actually wants to achieve
- Y is the Attempted Solution
-
The approach the asker has chosen, often based on an incomplete model of X
- The Question Hides X
-
The asker phrases their request as "How do I do Y?" — X is never stated, only assumed by the asker
- Solution Fixation
-
Commitment to Y obscures whether Y solves X at all, and may rule out simpler approaches
- Goal-Step Confusion
-
Conflating "what I want" with "the steps I think will get me there"
- Recognition Heuristic
-
Y looks unusual, brittle, or disproportionate to the questioner’s apparent expertise — usually a sign that X is hidden
- Resolution by Probing
-
Ask "What are you actually trying to accomplish?" — surface X, then propose solutions for X (which may or may not include Y)
- Asker’s Discipline
-
State X first, then your attempted Y, then the specific blocker — this lets the helper validate the whole chain
- Key Proponents
-
Mark Jason Dominus (coined the term in a 2001 post to comp.lang.perl.misc), Eric S. Raymond ("How To Ask Questions The Smart Way", 2001 — "describe the goal, not the step")
- Historical Context
-
Crystallized in Usenet and IRC help culture of the early 2000s; canonical reference at https://xyproblem.info/ and Greg’s Wiki (mywiki.wooledge.org/XyProblem); now part of the standard vocabulary on Stack Overflow, Hacker News, and software help channels.
When to Use:
-
As a helper, when a question feels strange, over-specific, or asks for an awkward technical workaround — pause and ask for the underlying goal
-
In LLM dialogues, to break out of solution-fixation when a model keeps trying to make Y work
-
In requirements clarification, when a stakeholder demands a specific feature that looks like a workaround for an unstated need
-
In code review, when a change looks like a hack — check whether the wrong problem is being solved
-
In support tickets and bug reports, to redirect from "this UI doesn’t let me do Y" toward "what task X were you doing?"
-
As an asker, to discipline yourself to state the goal before the attempt
Related Anchors:
-
Socratic Method — questioning to surface the underlying problem
-
BLUF — the asker’s analogue: lead with the goal, not the step
-
Problem Space (NVC) — distinguish needs from strategies, the same X/Y move from a Nonviolent Communication frame
- Counter-example
-
Concrete reproduction steps for a confirmed bug — the steps are the problem, not a workaround for it.
Documentation
Diátaxis Framework
Details
- Full Name
-
Diátaxis Documentation Framework according to Daniele Procida
Core Concepts:
- Four documentation types
-
- Tutorials
-
Learning-oriented, lessons for beginners
- How-to guides
-
Task-oriented, directions for specific goals
- Reference
-
Information-oriented, technical descriptions
- Explanation
-
Understanding-oriented, conceptual discussions
- Two dimensions
-
-
Practical vs. Theoretical
-
Acquisition (learning) vs. Application (working)
-
- Separation of concerns
-
Each type serves a distinct purpose
- User needs
-
Different users need different documentation at different times
- Quality criteria
-
Each type has specific quality indicators
- Systematic approach
-
Framework for organizing any documentation
- Key Proponent
-
Daniele Procida
When to Use:
-
Organizing technical documentation
-
Improving existing documentation
-
Planning documentation structure
-
Evaluating documentation quality
-
Complementing Docs-as-Code approaches
Current Status:
-
The four-quadrant core (tutorials, how-to guides, reference, explanation) is stable; diataxis.fr is a living, unversioned site — the colophon says the work "continues to be elaborated and explored"
-
The site has grown around the core: a theory section (the map, foundations, quality) and newer practical guidance such as "Diátaxis in complex hierarchies" — a prior anchored on the older Divio four-quadrant article (2014–2021) misses these refinements and the points where Procida has since revised his earlier presentation
Docs-as-Code according to Ralf D. Müller
Details
- Full Name
-
Docs-as-Code Approach according to Ralf D. Müller
Core Concepts:
- Plain text formats
-
AsciiDoc, Markdown
- Version control
-
Documentation in Git alongside code
- Automated toolchains
-
Build pipelines for documentation
- Single source of truth
-
Generate multiple output formats from one source
- Diagrams as code
-
PlantUML, Mermaid, Graphviz, Kroki
- Continuous documentation
-
Updated with every commit
- Developer-friendly
-
Use same tools and workflows as for code
- Review process
-
Pull requests for documentation changes
- Modular documentation
-
Includes and composition
- Key Proponent
-
Ralf D. Müller (docToolchain creator)
Technical Stack:
-
AsciiDoc/Asciidoctor
-
docToolchain
-
Gradle-based automation
-
Kroki for diagram rendering
-
Arc42 template integration
When to Use:
-
Technical documentation for software projects
-
When documentation needs to stay synchronized with code
-
Distributed teams collaborating on documentation
-
Projects requiring multiple output formats (HTML, PDF, etc.)
Knowledge Management
GTD — Getting Things Done
Details
- Full Name
-
Getting Things Done (GTD)
- Also known as
-
GTD, GTD by David Allen, GTD Methodology
Core Concepts:
- Capture
-
Collect everything that has your attention — tasks, ideas, commitments — into trusted external "inboxes" so nothing is held in your head
- Clarify
-
Process each captured item: Is it actionable? If yes, define the next physical action. If no, trash it, incubate it, or file it as reference
- Organize
-
Place clarified items into the right lists — Next Actions, Projects, Waiting For, Someday/Maybe, Calendar — so they are retrievable at the right moment
- Reflect
-
Review your system regularly (Weekly Review) to keep it current, complete, and trusted
- Engage
-
Choose which actions to take based on context, time available, energy, and priority
- Two-Minute Rule
-
If an action takes less than two minutes, do it immediately rather than deferring it
- Projects List
-
Any desired outcome requiring more than one action step is a "project" tracked on a dedicated list with at least one next action
- Contexts
-
Next actions are tagged by context (e.g., @computer, @phone, @errands) to batch work efficiently
- Trusted System
-
All commitments are stored externally so the mind is free to focus on doing rather than remembering
- Key Proponent
-
David Allen ("Getting Things Done: The Art of Stress-Free Productivity")
When to Use:
-
Managing a high volume of tasks, projects, and commitments across work and personal life
-
Reducing mental load and anxiety caused by open loops (unfinished commitments)
-
Setting up a reliable personal productivity and task management system
-
Improving focus by clarifying next actions rather than vague to-do items
-
Onboarding teams or individuals to structured workflow management
-
Combining with note-taking systems such as P.A.R.A. or todo.txt
Related Anchors:
Hemingway Bridge
Details
- Full Name
-
Hemingway Bridge
- Also known as
-
Stop Mid-Sentence Technique, Re-entry Point Strategy
Core Concepts:
- Stop Before You Are Finished
-
End each work session deliberately before reaching a natural stopping point, while you still know exactly what comes next — preserving momentum for the next session
- Re-entry Point
-
Leave a clear "bridge" to the next session: an unfinished sentence, a comment, a TODO note, or a short summary of the next steps so you can re-engage immediately without warm-up
- Creative Energy Management
-
Avoid depleting all creative or cognitive energy in one session; stopping when energy is still high makes it easier to start again
- Reduce Blank-Page Anxiety
-
By never fully stopping, you eliminate the paralysing "blank page" moment at the start of the next session
- Momentum Preservation
-
The psychological state of "knowing what comes next" is transferred across time boundaries, keeping flow intact across interruptions
- Session Notes
-
A brief note written at the end of a session ("next: implement X, blocked by Y") acts as an explicit Hemingway Bridge — a ready-made launchpad
- Key Proponent
-
Ernest Hemingway (interviewed in George Plimpton (ed.), "The Paris Review Interviews"; practical elaboration by Steven Pressfield and others in the context of creative work)
When to Use:
-
Ending a coding, writing, or design session mid-task to ensure smooth re-entry next time
-
Managing long-horizon creative or analytical projects across multiple sessions
-
Combating procrastination and "blank page" paralysis at the start of work
-
Pair programming or team handovers — leaving an explicit next-action note in comments or a ticket
-
Daily work planning: close the day by writing tomorrow’s first action
-
Any knowledge work where cognitive warm-up cost is high
Related Anchors:
P.A.R.A. Method
Details
- Full Name
-
P.A.R.A. Method (Projects, Areas, Resources, Archive)
- Also known as
-
PARA Framework, Second Brain Organization System
Core Concepts:
- Projects
-
Short-term efforts with a specific goal and deadline (e.g., "Launch website", "Write article")
- Areas
-
Long-term responsibilities with a standard to maintain over time (e.g., "Health", "Finances", "Team Management")
- Resources
-
Topics of ongoing interest or future relevance without a current action (e.g., "Machine Learning", "Design Patterns")
- Archive
-
Inactive items from the other three categories — completed projects, dropped areas, or obsolete resources
- Actionability principle
-
Items are organized by how actionable they are, not by topic or type
- Tool-agnostic
-
Applicable to any note-taking or file management system (Notion, Obsidian, Roam Research, plain folders)
- Single source of truth
-
Each piece of information belongs in exactly one of the four categories
- Key Proponent
-
Tiago Forte ("Building a Second Brain")
When to Use:
-
Organizing notes, documents, or files across tools
-
Managing knowledge work with multiple concurrent projects
-
Setting up a "Second Brain" personal knowledge management system
-
Reducing time spent searching for information
-
Separating actionable work from reference material
-
Onboarding teams to a shared information architecture
-
Structuring documentation repositories or wikis
Related Anchors:
todo.txt-flavoured Markdown
Details
- Full Name
-
todo.txt-flavoured Markdown Task Lists
- Also known as
-
Enhanced Markdown Tasks, Markdown with todo.txt conventions
Core Concepts:
- Markdown task lists
-
Standard GitHub-flavoured markdown syntax (
- [ ]uncompleted,- [x]completed) - Priority markers
-
Uses todo.txt priority notation
(A),(B),©where(A)is highest priority - Project tags
-
Prefixed with
+to group related tasks (e.g.,+website,+semantic-anchors) - Context tags
-
Prefixed with
@to indicate location/tool/context (e.g.,@computer,@home,@research) - Key-value metadata
-
Structured data pairs like
due:YYYY-MM-DD,priority:high, or custom fields - Date tracking
-
Creation dates and completion dates in ISO format (YYYY-MM-DD)
- Human readability
-
Plain text format that remains readable without special tools
- Tool-agnostic
-
Can be processed by both markdown renderers and todo.txt tools
- Searchable and filterable
-
Easy to grep/search by tags, priorities, or metadata
Pattern Structure:
- [ ] (Priority) Task description +project @context key:value
- [x] YYYY-MM-DD (Priority) Completed task +project
Example Usage:
- [ ] (A) Review PR for +website @computer due:2024-02-03
- [x] 2024-02-01 (B) Update documentation +docToolchain
- [ ] (C) Research new feature +semantic-anchors @research
- [ ] Call team meeting @phone +project-planning due:2024-02-05
- [x] 2024-01-30 Fix bug in authentication +backend @computer
- Key Proponents
-
Combines GitHub-flavoured Markdown task lists with Gina Trapani’s todo.txt format
Original References:
-
GitHub-flavoured Markdown task lists
-
todo.txt format specification by Gina Trapani
When to Use:
-
Task management in markdown documentation
-
Project planning and tracking in README files
-
GitHub issues and pull request descriptions requiring structured task lists
-
Personal productivity systems using plain text
-
Documentation that combines narrative with actionable tasks
-
When you need both human readability and programmatic parsing
-
Team collaboration where tasks need clear priorities and contexts
-
Generating consistent task list formats with LLMs
Benefits:
-
Leverages two well-established, widely recognized standards
-
Renders nicely in GitHub, GitLab, and other markdown viewers
-
Remains fully functional in plain text editors
-
Enables rich metadata without sacrificing readability
-
Facilitates both manual and automated task tracking
Current Status:
-
The underlying todo.txt format is alive and canonical at todotxt.org (Gina Trapani): one task per line, priorities as
(A), projects as+project, contexts as@context -
The prior is thin twice over: todo.txt itself is a single-maintainer niche ecosystem from the plain-text-productivity scene, and the Markdown-flavoured combination this anchor describes is a project-level convention on top — paste the concrete conventions into the prompt rather than relying on the name
Meta
Luhmann’s System Theory
Details
- Full Name
-
Luhmann’s Sociological System Theory (Luhmannsche Systemtheorie)
- Also known as
-
Theory of Autopoietic Social Systems, Functional-Structural Systems Theory
Core Concepts:
- System/Environment Difference
-
A system defines itself by drawing a distinction (Differenz) between itself and its environment. "Es gibt kein System ohne Umwelt. Hier ist das System, dort die Umwelt. Wer das sagt, unterscheidet zwischen diesen beiden." (Luhmann, Einführung in die Systemtheorie, Kap. II)
- Operational Closure
-
Systems reproduce themselves through their own operations. Social systems operate through communication, psychic systems through thought. No operation crosses the boundary. "Selbstreferentielle Geschlossenheit ist nur in einer Umwelt, ist nur unter ökologischen Bedingungen möglich."
- Autopoiesis
-
Systems produce and reproduce their own elements. A system exists as long as operations connect to operations. "Ein System erhält sich dadurch, dass Operationen aneinander anschließen."
- Structural Coupling
-
Systems cannot directly interact, but they can build expectation structures that make them sensitive to specific irritations from their environment. Language couples psychic and social systems.
- Double Contingency
-
The foundational paradox of social interaction: "I will do what you want if you do what I want" — resolved only through the emergence of social systems. "Das gesamte Soziale kann als Antwort auf das Problem der doppelten Kontingenz gesehen werden." (Soziale Systeme, Kap. IV)
- Self-Reference / Self-Observation
-
Systems observe themselves by distinguishing self-reference from external reference (Fremdreferenz). "Beobachten heißt: unterscheiden (→ differenzieren)."
- Communication as Operation
-
Social systems consist of communication, not of people. Communication is the synthesis of information, utterance, and understanding.
- Complexity Reduction
-
Systems reduce environmental complexity through selection. "Sinn" (meaning) is the medium through which psychic and social systems process complexity.
- Functional Differentiation
-
Modern society differentiates into function systems (economy, law, politics, science, religion) each with their own binary code.
- Key Proponents
-
Niklas Luhmann (Soziale Systeme, 1984; Einführung in die Systemtheorie, Vorlesung 1991/92, hg. v. Dirk Baecker), Humberto Maturana (autopoiesis, biological roots)
When to Use:
-
Analyzing complex socio-technical systems where boundaries are contested
-
Designing system architectures that respect operational closure of subsystems
-
Understanding why direct control often fails (systems can only be perturbed, not instructed)
-
Modeling emergent behavior in multi-agent or organizational systems
-
Identifying feedback loops and unintended consequences in automation design
-
Distinguishing between the system’s perspective and the observer’s perspective
Relationship to Other Anchors:
-
Foundation for the System-Theoretic Semantic Anchors framework (see separate proposal)
-
Complements Cynefin Framework (complexity classification) with operational theory
-
Provides the theoretical basis for Semantic Contracts (structural coupling, see separate proposal)
-
Contrasts with simpler input-output models of systems (e.g., early cybernetics)
-
Related to Feynman Technique at the meta-level: Luhmann demands understanding systems through their own logic
- Historical Context
-
Luhmann developed his theory across 30+ books and 500+ articles. The Einführung in die Systemtheorie is a transcribed lecture course from 1991/92 and is considered the most accessible entry point. His work fundamentally challenges common-sense notions of communication, causality, and control.
Simon’s Constructivism
Details
- Full Name
-
Simon’s Introduction to System Theory and Constructivism
- Also known as
-
Simon’s Systemic Epistemology, Clinical Epistemology
Core Concepts:
- Systemic Thinking = System-Theoretic Explanation
-
"Systemtheorie beschäftigt sich mit der 'Welt der Objekte'; aber sie isoliert sie nicht aus ihren realen Zusammenhängen, sondern setzt sie in Beziehung zueinander." Systemisches Denken ist systemtheoretisches Erklären — nicht nur Beschreiben. (Simon, Einführung in Systemtheorie und Konstruktivismus, Vorbemerkung)
- Emergent Properties
-
"Systeme sind aus mehreren Teilen zusammengesetzte Einheiten, deren Eigenschaften emergent, d.h. nicht durch die schlichte Addition der Eigenschaften ihrer Teile herstellbar waren." (Kap. 1)
- Trivial vs. Non-Trivial Machines
-
Trivial machines are predictable (same input → same output). Non-trivial machines depend on internal state — they are history-dependent and not fully predictable. Social systems are non-trivial machines. (Kap. 3.1)
- Cybernetics of Cybernetics (2nd Order)
-
The observer is always part of the observed system. "Die Kybernetik der Kybernetik — der Beobachter wird in die Beobachtung einbezogen." (Kap. 3.2)
- Viability vs. Truth
-
"Wahrheit vs. Viabilität — Die 'Passung' zwischen Landschaft und Landkarte." Knowledge is not "true" in an absolute sense, but viable if it enables successful operation in a given environment. (Kap. 4.5)
- Information as "Differences that Make a Difference"
-
(Gregory Bateson) Information is not transmitted but created by the receiver. "Unterschiede, die Unterschiede machen." The Sender-Receiver model is replaced by circular causality. (Kap. 4.1)
- Beobachtung = Unterscheiden und Bezeichnen
-
Every observation draws a distinction and names one side. The other side remains unmarked. (Kap. 4.3, following George Spencer-Brown)
- Operational Closure
-
"Systeme sind operativ geschlossen und können nur nach ihrer eigenen Logik operieren." (Kap. 3.4)
- Perturbation vs. Instruction
-
"Systeme können nicht instruiert, nur irritiert (perturbiert) werden." — A crucial principle for any intervention design. (Kap. 3.5)
- Structural Coupling + Co-Evolution
-
Systems shape each other’s environments over time, leading to coordinated structural drift without direct causality. (Kap. 5.1)
- Meaning Dimensions (Social, Factual, Temporal)
-
Every communication (in Luhmann’s sense) operates simultaneously in three dimensions: social (who), factual (what), temporal (when). (Kap. 6.4, following Luhmann)
- Key Proponents
-
Fritz B. Simon (Einführung in Systemtheorie und Konstruktivismus, 2006, 8. Aufl. 2017), Humberto Maturana (autopoiesis), Gregory Bateson (cybernetics), Heinz von Foerster (constructivism), Ernst von Glasersfeld (radical constructivism)
When to Use:
-
Training teams in systemic thinking for complex problem-solving
-
Designing interventions where direct control is impossible (organizations, families, ecosystems)
-
Understanding why the same input produces different results in human systems
-
Developing feedback-aware designs for socio-technical systems
-
Distinguishing between explanation, description, and evaluation in requirements
-
Building awareness of observer bias in system design and analysis
Relationship to Other Anchors:
-
Pedagogical bridge between Luhmann’s System Theory and practical application
-
Theoretical foundation for Systemic Consulting methods
-
Provides the epistemological basis for the System-Theoretic Semantic Anchors framework (see separate proposal)
-
"Ten Commandments of Systemic Thinking" (Kap. 7) are a direct precursor to Semantic Contracts (see separate proposal)
-
Contrasts with purely technical systems theory (e.g., general systems theory, Bertalanffy)
- Quote
-
"Regeln kann man leichter verändern als Menschen." (Fritz B. Simon)
The Spectrum of Semantic Anchors
What Qualifies as a Semantic Anchor
A term qualifies as a semantic anchor when it activates a rich, well-defined conceptual framework in the LLM’s training data. The key differentiator is definition depth – not whether the anchor is about domain knowledge or interaction patterns.
A good semantic anchor is:
- Precise
-
It references a specific, established body of knowledge or methodology with clear boundaries
- Rich
-
It activates multiple interconnected concepts, not just a single instruction or directive
- Consistent
-
Different users invoking it will get similar conceptual activation across contexts
- Attributable
-
It can be traced to key proponents, publications, established practices, or documented standards
Semantic anchors exist on a spectrum from domain-heavy to interaction-heavy:
Domain-heavy ◄──────────────────────► Interaction-heavy
arc42 Pyramid Principle Socratic Method
SOLID Rubber Duck Debugging BLUF
DDD Five Whys Chain of Thought
The distinction isn’t a strict category but rather a matter of emphasis. Most anchors have both dimensions:
- Pyramid Principle
-
Domain knowledge about structured communication + behavior change in how output is structured
- TDD, London School
-
Domain knowledge about testing + behavior change in how code is written
- Socratic Method
-
Interaction pattern for dialogue + domain knowledge from philosophical tradition
The quality bar is the same across this spectrum – all anchors must be well-defined, rich, and activatable.
Counter-Examples
Well-known terms that are not semantic anchors because they lack definition depth:
- "TLDR"
-
Underspecified, no defined structure or methodology, vague instruction to "be short"
- "ELI5"
-
Vague target level, no pedagogical framework, no consistent interpretation
- "Keep it short"
-
Pure instruction, no conceptual depth or established methodology
- "Make it simple"
-
Ambiguous directive without reference to specific simplification frameworks
These terms may be useful in conversation, but they don’t activate rich conceptual frameworks the way true semantic anchors do.
Below is a curated list of semantic anchors useful for software development, architecture, and requirements engineering. Each anchor includes related concepts and practices.
The catalog is organized into the following categories:
Problem Solving
Chain of Thought (CoT)
Details
- Full Name
-
Chain of Thought Prompting
Core Concepts:
- Step-by-Step Reasoning
-
Explicitly show intermediate reasoning steps before reaching a conclusion
- Reasoning Transparency
-
Make the thought process visible, not just the final answer
- Intermediate Representations
-
Break complex problems into smaller, manageable steps
- Error Reduction
-
Exposing reasoning allows detection of logical errors mid-process
- Complex Task Decomposition
-
Handle multi-step problems that cannot be solved in one jump
- Zero-Shot CoT
-
Simple prompt like "Let’s think step by step" to trigger CoT behavior
- Few-Shot CoT
-
Provide examples with reasoning chains to guide the model
- Self-Consistency
-
Generate multiple reasoning paths and select most consistent answer
- Key Proponents
-
Wei et al. (Google Research, 2022), "Chain-of-Thought Prompting Elicits Reasoning in Large Language Models"
- Historical Context
-
Breakthrough in LLM prompting research, significantly improved performance on reasoning tasks (math, logic, common sense)
When to Use:
-
Complex reasoning problems (multi-step math, logic puzzles)
-
When you need to verify the reasoning process, not just the answer
-
Debugging incorrect LLM outputs by seeing where reasoning went wrong
-
Teaching or explaining complex topics where steps matter
-
Problems requiring planning or strategy
-
Any task where intermediate steps provide value
Related Research:
-
Tree of Thoughts (ToT): Extension allowing branching and backtracking
-
Self-Consistency: Sample multiple reasoning paths
-
Least-to-Most Prompting: Build up from simple to complex
Example Prompt Pattern:
Problem: [Complex question] Let's solve this step by step: 1. [First step] 2. [Second step] ... Therefore: [Conclusion]
Current Status:
-
The core finding (Wei et al., NeurIPS 2022) is stable, but its practical relevance is cutoff-bound: reasoning models (late 2024 onward) internalise chain-of-thought during training — OpenAI’s own docs now advise against "think step by step" prompts for those models
-
Treat CoT output as a useful but unreliable window into model reasoning: Turpin et al., "Language Models Don’t Always Say What They Think" (2023) and Anthropic’s 2025 follow-up show stated reasoning can be unfaithful to the actual decision factors — not a safety or audit guarantee
Decisional Balance Sheet
Details
- Also known as
-
Benjamin Franklin Analysis, Moral Algebra, Pros-and-Cons Sheet
Core Concepts:
- Four-Cell Matrix
-
The full Janis & Mann form has four categories of consequence for each alternative — utilitarian gains/losses for self, utilitarian gains/losses for significant others, self-approval/disapproval, and approval/disapproval from others. Stretches "pros and cons" beyond instrumental outcomes into identity and social cost.
- Simplified Two-Column Form
-
The everyday "pros vs cons" list popularised by Benjamin Franklin (1772 letter to Joseph Priestley). Strictly a degenerate case of the four-cell matrix — useful for quick decisions, lossy for complex ones.
- Weighting
-
Each entry gets a numeric weight reflecting its importance. The decision is not a vote count — the discipline is to make trade-offs explicit, not to mechanise the choice.
- Resolving Ambivalence
-
The artifact’s primary purpose is not arithmetic but surfacing concerns the decider has not yet articulated. Listing the cons of a tempting option, or the pros of the rejected one, breaks the "all pros, no cons" framing that drives impulsive decisions.
- Decisional Conflict
-
Janis & Mann’s parent theory; high-stakes decisions produce stress that distorts judgment. The balance sheet is one of several debiasing techniques alongside vigilant information search and contingency planning.
- Motivational Interviewing Variant
-
In the Prochaska–DiClemente Stages of Change model and Miller & Rollnick’s Motivational Interviewing, the balance sheet is used to elicit change-talk: the client says the cons of staying the same and the pros of changing — moving them through ambivalence rather than persuading them.
- Limits
-
The model is deliberative, not intuitive. It works poorly under time pressure and for decisions dominated by uncertainty (where Pugh Matrix or scenario-based methods fit better). It also doesn’t surface options that aren’t on the list — separate from the option-generation step.
- Key Proponents
-
Irving Janis & Leon Mann ("Decision Making: A Psychological Analysis of Conflict, Choice, and Commitment", 1977 — the formal four-cell model). Benjamin Franklin (1772 letter, "moral algebra" — the informal pros/cons ancestor). William R. Miller & Stephen Rollnick ("Motivational Interviewing", 1991) for the clinical adaptation.
- Historical Context
-
Franklin’s pros/cons letter is one of the earliest documented decision-aid techniques in the Western tradition. Janis & Mann turned it into a research instrument in the 1970s; the simplified two-column form has spread through self-help, coaching, and Motivational Interviewing into mainstream use. Now a staple of decision coaching, financial advisory, and health-behaviour-change interventions.
When to Use:
-
Personal or career decisions where the alternatives are roughly comparable and the deciding factor is the decider’s own clarity
-
Coaching conversations where the client is stuck in ambivalence — the four-cell version surfaces concerns the simple pros/cons list misses
-
Pre-mortem variant: pre-listing the "approval/disapproval from others" cell often predicts political resistance the team forgot to address
-
Motivational Interviewing settings — health behaviour, addiction recovery, career changes
-
Decision documentation in low-formality contexts where a full ADR is overkill but "we considered the alternatives" must be visible
Related Anchors:
-
Pugh Matrix — scores alternatives against weighted criteria; complement when uncertainty or technical trade-offs dominate over personal/social cost
-
ADR according to Nygard — captures architecture decisions with Context/Decision/Consequences; the balance sheet feeds the Consequences section
-
MoSCoW — prioritisation among items chosen after the decision is made; the balance sheet helps decide whether to do the work at all
Devil’s Advocate
Details
- Full Name
-
Devil’s Advocate (Latin: Advocatus Diaboli)
Core Concepts:
- Systematic Counter-Argumentation
-
Present opposing viewpoints even if not personally held
- Assumption Challenging
-
Question premises and surface hidden assumptions
- Stress-Testing Ideas
-
Identify weaknesses before they become problems
- Steelmanning
-
Present the strongest version of the opposing argument, not a strawman
- Intellectual Honesty
-
Separate idea evaluation from ego or political concerns
- Pre-Mortem Thinking
-
Imagine failure scenarios to prevent them
- Dialectical Reasoning
-
Thesis + Antithesis → Synthesis
- Risk Identification
-
Surface potential problems proactively
- Key Origin
-
Catholic Church canonization process (Promotor Fidei role, formalized 1587), secularized in critical thinking and decision-making
- Historical Context
-
400+ years as formalized practice in the Church, adopted widely in law, philosophy, business strategy, and red teaming
When to Use:
-
Critical design or architecture decisions where failure is costly
-
Security threat modeling (red teaming)
-
Evaluating business strategies or proposals
-
Pre-mortems before launching significant initiatives
-
Code review where you want to challenge assumptions
-
Risk assessment and contingency planning
-
Any high-stakes decision where being wrong is expensive
Related Concepts:
-
Red teaming (security context)
-
Pre-mortem analysis
-
Dialectical reasoning
-
Critical thinking frameworks
-
Steelmanning (vs. strawmanning)
Example Prompt Pattern:
I propose [idea/design/decision]. Play devil's advocate: What are the strongest arguments against this approach?
Double Diamond
Details
- Full Name
-
Double Diamond Design Process Model
- Also known as
-
4Ds Model, Design Council Double Diamond
Core Concepts:
- Two Diamonds, Four Phases
-
Discover → Define → Develop → Deliver. Each diamond is one divergent-convergent cycle. The first diamond explores and frames the problem; the second diamond explores and ships the solution.
- Discover (Divergent, Problem Space)
-
Broad research — interviews, observation, immersion, data analysis. Goal: widen the understanding of what’s actually going on, not jump to causes.
- Define (Convergent, Problem Space)
-
Synthesize findings into a sharp problem statement. The famous slogan: "Are we solving the right problem?" — the diamond ends with a problem worth solving, not a list of features.
- Develop (Divergent, Solution Space)
-
Generate many candidate solutions — sketches, prototypes, co-design workshops. Diverge widely before narrowing; resist solution fixation.
- Deliver (Convergent, Solution Space)
-
Test, refine, ship. The chosen concept is iterated until it’s production-ready; failed candidates are explicitly killed rather than left lingering.
- Design the Right Thing, Then Design the Thing Right
-
The canonical summary. The first diamond addresses "right thing" (problem worth solving); the second addresses "thing right" (solution that works).
- Divergent Before Convergent
-
A hard discipline at every phase. Premature convergence — picking the obvious problem or obvious solution — is the failure mode the model is designed to prevent.
- Iteration, Not Waterfall
-
The diamonds are not strictly linear. Learnings in Develop frequently send the team back to Discover or Define. The 2019 Framework for Innovation update made this explicit.
- Mindsets and Principles
-
The Design Council pairs the four phases with four principles (Put people first, Communicate visually and inclusively, Collaborate and co-create, Iterate, iterate, iterate) — the diamonds without the mindset is just process theater.
- Key Proponents
-
UK Design Council (originally published 2005; expanded as Framework for Innovation in 2019). Built on the divergent-convergent tradition of J.P. Guilford (1956) and Béla H. Bánáthy.
- Historical Context
-
Developed by the Design Council in 2005 after research into how leading design organizations actually worked. The 2019 update reframed it as a system-level innovation framework, adding the principles, key roles, and explicit iteration arrows. Adopted broadly in UX, service design, government innovation (UK GDS, NHS, Danish Mindlab), and design education.
When to Use:
-
Framing UX or service design projects when the team is at risk of jumping to solutions
-
Innovation workshops and design sprints — the diamonds give a shared visual model for sequencing divergent and convergent work
-
Discovery phases of product development when the problem itself is not yet well understood
-
Teaching design thinking — the model is more concrete than abstract "design thinking" because it names the four moves
-
Communicating why a discovery phase is necessary to stakeholders who want to skip straight to delivery
Related Anchors:
-
Jobs to be Done — sharpens the Define output by reframing customer needs as functional, emotional, and social jobs
-
Problem Space (NVC) — separates needs from strategies; complements the first-diamond discipline of staying in problem space
-
XY Problem — anti-pattern that the first diamond is designed to prevent (solving Y before understanding X)
-
MVP — the Deliver output is often shaped as an MVP to validate the chosen solution against the defined problem
Feynman Technique
Details
- Full Name
-
Feynman Technique (also Feynman Learning Method)
Core Concepts:
- Explain Simply
-
Teach the concept in simple language as if to a beginner (traditionally "explain to a 12-year-old")
- Identify Gaps
-
When you struggle to explain, you’ve found gaps in your understanding
- Return to Source Material
-
Go back and re-learn the parts you couldn’t explain clearly
- Simplify and Use Analogies
-
Refine explanation using plain language and concrete examples
- Iterative Refinement
-
Repeat the cycle until you can explain clearly and simply
- No Jargon Hiding
-
Inability to avoid jargon signals lack of true understanding
- Active Learning
-
Transform passive reading into active teaching
- Metacognition
-
Become aware of what you don’t know
- Key Attribution
-
Richard Feynman (Nobel Prize-winning physicist, 1965), famous for making complex physics accessible
- Historical Context
-
Feynman was renowned for his teaching ability and his belief that deep understanding meant being able to explain simply. The "technique" is a formalization of his learning approach.
When to Use:
-
Learning new technical concepts or frameworks
-
Validating your understanding before using knowledge in practice
-
Preparing to teach or present a topic
-
Debugging conceptual confusion
-
Code review where you explain your design choices simply
-
Documentation writing (if you can’t explain it simply, you don’t understand it)
Four Steps (Canonical Form):
-
Choose a concept: Pick the topic you want to understand
-
Teach it to a child: Write an explanation in simple terms
-
Identify gaps and review: Where you struggle, study more
-
Simplify and analogize: Refine your explanation, use examples
Related Concepts:
-
Rubber Duck Debugging (explaining to understand)
-
Learning by teaching
-
Active recall
-
Elaborative interrogation
-
Plain language movement
- Quote
-
"If you can’t explain it simply, you don’t understand it well enough." (Often attributed to Einstein, but embodies Feynman’s philosophy)
First Principles Thinking
Details
- Full Name
-
First Principles Thinking
- Also known as
-
Reasoning from First Principles, Reasoning from Fundamentals
Core Concepts:
- Reduce to fundamentals
-
Break a problem down to the basic truths that cannot be deduced from anything more fundamental, then reason upward from those
- Reason vs. analogy
-
Contrast with reasoning by analogy ("we do it this way because that’s how it’s done") — first principles rebuild the answer from the ground up
- Challenge inherited assumptions
-
Each "requirement" or "constraint" is interrogated: is it a law of nature, or merely convention/legacy that can be discarded?
- Ground-up synthesis
-
After identifying the irreducible elements, recombine them into a solution unconstrained by how the problem was solved before
- Cost of the method
-
Powerful but expensive — reserve it for high-stakes or stuck problems; reasoning by analogy is fine for routine decisions
- Key Proponents
-
Rooted in Aristotle (the "first cause"/archē); sharpened by René Descartes' methodical doubt; popularized in modern engineering discourse (e.g. Elon Musk’s cost-of-batteries example)
When to Use:
-
A problem feels blocked because "that’s just how it’s done"
-
Re-examining requirements, cost structures, or architecture constraints
-
High-stakes design decisions where analogy may mislead
-
Teaching learners to separate fundamental truths from convention
When NOT to Use:
-
Routine decisions where established patterns are good enough — the method is costly
-
When proven best practices already encode hard-won fundamentals
Related Anchors:
-
Feynman Technique — explain from fundamentals to expose gaps
-
Socratic Method — question assumptions to reach bedrock
-
Five Whys — drill from symptom toward a root cause
Five Whys (Ohno)
Details
- Full Name
-
Five Whys Root Cause Analysis
Core Concepts:
- Iterative Causal Analysis
-
Ask "Why?" repeatedly (typically ~5 times) to drill down to root causes
- Root Cause vs. Symptom
-
Distinguish between surface symptoms and underlying causes
- Causal Chain
-
Each answer becomes the subject of the next "Why?" question
- Actionable Root Cause
-
Continue until you reach a cause that can be acted upon
- Simplicity
-
No complex tools or statistical analysis required
- Team-Based Investigation
-
Collaborative exploration of causal relationships
- Avoiding Blame
-
Focus on process failures, not individual fault
- Countermeasure Identification
-
Once root cause is found, design interventions
- Key Proponent
-
Taiichi Ohno (Toyota Production System, 1950s)
- Historical Context
-
Core tool in Lean Manufacturing and Toyota Production System (TPS), foundational to continuous improvement (Kaizen)
When to Use:
-
Incident post-mortems in software/DevOps
-
Debugging when surface fixes don’t resolve the issue
-
Process improvement initiatives
-
Understanding recurring problems
-
Quality defect analysis
-
Any situation where symptoms are clear but causes are not
Related Concepts:
-
Kaizen (continuous improvement)
-
Root Cause Analysis (RCA)
-
Fishbone Diagram (Ishikawa) – complementary tool
-
A3 Problem Solving (Toyota)
-
DevOps post-mortem culture
Pitfall to Avoid:
-
Stopping too early at a symptom rather than root cause
-
Pursuing a single causal chain when multiple factors contribute (use Fishbone Diagram for complex causality)
-
Blame-focused questioning rather than system-focused
Example Application:
Problem: Website is down Why? → Database connection failed Why? → Connection pool exhausted Why? → Long-running queries not timing out Why? → No query timeout configured Why? → Default configuration was never reviewed for production Root Cause: Configuration review process missing Countermeasure: Establish pre-production configuration checklist
Criticism:
-
Alan J. Card, "The problem with '5 whys'" (BMJ Quality & Safety, 2017) — no evidence of effectiveness despite wide institutional adoption; the technique pushes investigators down a single linear causal path and its results are not reproducible across teams
-
John Allspaw, "The Infinite Hows (or, the Dangers of the Five Whys)" (2014) — "why" questions invite blame and narrative bias in complex systems; he proposes asking "how" about the conditions instead
-
The deeper objection: in complex systems a single root cause often does not exist — incidents emerge from interacting contributing factors, which a five-step linear chain cannot represent
Luhmann’s System Theory
Details
- Full Name
-
Luhmann’s Sociological System Theory (Luhmannsche Systemtheorie)
- Also known as
-
Theory of Autopoietic Social Systems, Functional-Structural Systems Theory
Core Concepts:
- System/Environment Difference
-
A system defines itself by drawing a distinction (Differenz) between itself and its environment. "Es gibt kein System ohne Umwelt. Hier ist das System, dort die Umwelt. Wer das sagt, unterscheidet zwischen diesen beiden." (Luhmann, Einführung in die Systemtheorie, Kap. II)
- Operational Closure
-
Systems reproduce themselves through their own operations. Social systems operate through communication, psychic systems through thought. No operation crosses the boundary. "Selbstreferentielle Geschlossenheit ist nur in einer Umwelt, ist nur unter ökologischen Bedingungen möglich."
- Autopoiesis
-
Systems produce and reproduce their own elements. A system exists as long as operations connect to operations. "Ein System erhält sich dadurch, dass Operationen aneinander anschließen."
- Structural Coupling
-
Systems cannot directly interact, but they can build expectation structures that make them sensitive to specific irritations from their environment. Language couples psychic and social systems.
- Double Contingency
-
The foundational paradox of social interaction: "I will do what you want if you do what I want" — resolved only through the emergence of social systems. "Das gesamte Soziale kann als Antwort auf das Problem der doppelten Kontingenz gesehen werden." (Soziale Systeme, Kap. IV)
- Self-Reference / Self-Observation
-
Systems observe themselves by distinguishing self-reference from external reference (Fremdreferenz). "Beobachten heißt: unterscheiden (→ differenzieren)."
- Communication as Operation
-
Social systems consist of communication, not of people. Communication is the synthesis of information, utterance, and understanding.
- Complexity Reduction
-
Systems reduce environmental complexity through selection. "Sinn" (meaning) is the medium through which psychic and social systems process complexity.
- Functional Differentiation
-
Modern society differentiates into function systems (economy, law, politics, science, religion) each with their own binary code.
- Key Proponents
-
Niklas Luhmann (Soziale Systeme, 1984; Einführung in die Systemtheorie, Vorlesung 1991/92, hg. v. Dirk Baecker), Humberto Maturana (autopoiesis, biological roots)
When to Use:
-
Analyzing complex socio-technical systems where boundaries are contested
-
Designing system architectures that respect operational closure of subsystems
-
Understanding why direct control often fails (systems can only be perturbed, not instructed)
-
Modeling emergent behavior in multi-agent or organizational systems
-
Identifying feedback loops and unintended consequences in automation design
-
Distinguishing between the system’s perspective and the observer’s perspective
Relationship to Other Anchors:
-
Foundation for the System-Theoretic Semantic Anchors framework (see separate proposal)
-
Complements Cynefin Framework (complexity classification) with operational theory
-
Provides the theoretical basis for Semantic Contracts (structural coupling, see separate proposal)
-
Contrasts with simpler input-output models of systems (e.g., early cybernetics)
-
Related to Feynman Technique at the meta-level: Luhmann demands understanding systems through their own logic
- Historical Context
-
Luhmann developed his theory across 30+ books and 500+ articles. The Einführung in die Systemtheorie is a transcribed lecture course from 1991/92 and is considered the most accessible entry point. His work fundamentally challenges common-sense notions of communication, causality, and control.
Morphological Box
Details
- Full Name
-
Morphological Analysis / Morphological Box (German: Morphologischer Kasten)
Core Concepts:
- Multi-dimensional decomposition
-
Break complex problem into independent parameters/dimensions
- Variant enumeration
-
Identify possible values/options for each parameter
- Matrix construction
-
Organize parameters and variants in table/box form
- Combinatorial exploration
-
Systematically examine combinations of variants
- Constraint filtering
-
Eliminate infeasible or contradictory combinations
- Novel solution discovery
-
Find non-obvious solutions through systematic recombination
- Complete solution space
-
Ensure all possibilities are considered
- Structured creativity
-
Systematic approach to innovation and ideation
- Key Proponent
-
Fritz Zwicky (1940s-1960s, California Institute of Technology)
- Historical Context
-
Developed for aerospace engineering problems (jet engines, spacecraft propulsion), now widely applied in product development, system design, and innovation management.
When to Use:
-
Exploring design alternatives for complex systems
-
Product feature combination analysis
-
Technology selection with multiple dimensions
-
Architecture decision-making with independent parameters
-
Innovation workshops and ideation sessions
-
Requirements engineering for product variants
-
Solution space mapping before evaluation
Example Application:
Problem: Design a developer documentation system Parameters: ├─ Format: Markdown, AsciiDoc, reStructuredText, API-first ├─ Hosting: GitHub Pages, Netlify, Read the Docs, S3+CloudFront ├─ Generator: Static (Hugo, Jekyll), Dynamic (Docusaurus), Custom └─ Versioning: Git-based, Version selector, Branch-per-version Matrix generates 4 × 4 × 3 × 3 = 144 possible combinations Filter by constraints (e.g., "AsciiDoc + Hugo not well-supported") → Identify ~20 feasible solutions for evaluation with Pugh Matrix
Related Concepts:
-
MECE Principle (for parameter independence)
-
Pugh Matrix (for evaluating generated alternatives)
-
Design of Experiments (DOE)
-
Combinatorial design
-
Solution space exploration
Complementary Tools:
-
Use Morphological Box to generate alternatives
-
Then apply Pugh Matrix to evaluate and select best option
-
Use MECE to ensure parameter independence
Pitfalls to Avoid:
-
Parameters that are not independent (violates combinatorial logic)
-
Too many parameters leading to combinatorial explosion
-
Stopping at matrix creation without exploring combinations
-
Forgetting to filter out infeasible combinations
Occam’s Razor
Details
- Full Name
-
Occam’s Razor (also spelled Ockham’s Razor)
- Also known as
-
Law of Parsimony, Principle of Parsimony, Lex Parsimoniae, "Entities should not be multiplied beyond necessity"
Core Concepts:
- Core rule
-
Among competing hypotheses that explain the same observations equally well, prefer the one that requires the fewest assumptions. The razor shaves off unnecessary entities, causes, or mechanisms.
- What it is not
-
-
Not a rule to be brief or terse — that is a stylistic choice, not an epistemic one.
-
Not a proof that the simpler answer is true — only a guide to which hypothesis to prefer, investigate first, or commit to under uncertainty.
-
Not a licence for KISS-style solution simplification — Occam operates at the level of explanations, KISS at the level of solutions. They overlap but are not the same razor.
-
- How it is used
-
-
As a selection filter under uncertainty — when two stories fit the data, start with the one that assumes less.
-
As a debugging heuristic — before assuming a bug requires a race condition plus caching layer plus stale DNS, check whether a single off-by-one explains everything.
-
In architecture decisions — a design that needs three new components to justify itself is evidentially weaker than one that reuses existing pieces.
-
In diagnostic reasoning — prefer explanations grounded in the system’s known mechanics over ones that require novel failure modes.
-
- Limits and counters
-
The razor is a prior, not a verdict. Reality is frequently non-parsimonious, and "simpler" is relative to a chosen ontology. Einstein’s corollary — "as simple as possible, but no simpler" — warns against under-fitting. Pair Occam with evidence, not as a substitute for it.
- Key Proponents
-
William of Ockham (c. 1287–1347, Summa Logicae, Quodlibetal Questions); the principle predates Ockham in Aristotle and Scotus but carries his name due to his repeated methodological use of it. Modernised by Bertrand Russell and formalised as minimum-description-length / Bayesian simplicity priors in 20th-century philosophy of science.
When to Use:
-
Debugging: triage competing theories of a bug before instrumenting for all of them
-
Architecture review: challenge proposals that introduce new components to explain observed requirements
-
Root-cause analysis: pair with Five Whys to avoid stopping at an elaborate but unjustified explanation
-
Incident response: the outage likely has one cause matching the data, not a conspiracy
-
Requirements clarification: pick the interpretation that requires fewest hidden assumptions about the user
-
LLM prompting: ask the model to prefer the explanation with the fewest moving parts when diagnosing
Related Anchors:
-
KISS Principle - Sibling razor applied to solutions rather than explanations
-
YAGNI - Applies parsimony to future requirements: don’t build what you can’t justify
-
Five Whys - Occam helps pick which "why" to pursue when the chain forks
-
MECE Principle - Both disciplines of hypothesis hygiene; MECE ensures coverage, Occam ranks by parsimony
-
Devil’s Advocate - Devil’s Advocate stress-tests the hypothesis Occam has selected
Simon’s Constructivism
Details
- Full Name
-
Simon’s Introduction to System Theory and Constructivism
- Also known as
-
Simon’s Systemic Epistemology, Clinical Epistemology
Core Concepts:
- Systemic Thinking = System-Theoretic Explanation
-
"Systemtheorie beschäftigt sich mit der 'Welt der Objekte'; aber sie isoliert sie nicht aus ihren realen Zusammenhängen, sondern setzt sie in Beziehung zueinander." Systemisches Denken ist systemtheoretisches Erklären — nicht nur Beschreiben. (Simon, Einführung in Systemtheorie und Konstruktivismus, Vorbemerkung)
- Emergent Properties
-
"Systeme sind aus mehreren Teilen zusammengesetzte Einheiten, deren Eigenschaften emergent, d.h. nicht durch die schlichte Addition der Eigenschaften ihrer Teile herstellbar waren." (Kap. 1)
- Trivial vs. Non-Trivial Machines
-
Trivial machines are predictable (same input → same output). Non-trivial machines depend on internal state — they are history-dependent and not fully predictable. Social systems are non-trivial machines. (Kap. 3.1)
- Cybernetics of Cybernetics (2nd Order)
-
The observer is always part of the observed system. "Die Kybernetik der Kybernetik — der Beobachter wird in die Beobachtung einbezogen." (Kap. 3.2)
- Viability vs. Truth
-
"Wahrheit vs. Viabilität — Die 'Passung' zwischen Landschaft und Landkarte." Knowledge is not "true" in an absolute sense, but viable if it enables successful operation in a given environment. (Kap. 4.5)
- Information as "Differences that Make a Difference"
-
(Gregory Bateson) Information is not transmitted but created by the receiver. "Unterschiede, die Unterschiede machen." The Sender-Receiver model is replaced by circular causality. (Kap. 4.1)
- Beobachtung = Unterscheiden und Bezeichnen
-
Every observation draws a distinction and names one side. The other side remains unmarked. (Kap. 4.3, following George Spencer-Brown)
- Operational Closure
-
"Systeme sind operativ geschlossen und können nur nach ihrer eigenen Logik operieren." (Kap. 3.4)
- Perturbation vs. Instruction
-
"Systeme können nicht instruiert, nur irritiert (perturbiert) werden." — A crucial principle for any intervention design. (Kap. 3.5)
- Structural Coupling + Co-Evolution
-
Systems shape each other’s environments over time, leading to coordinated structural drift without direct causality. (Kap. 5.1)
- Meaning Dimensions (Social, Factual, Temporal)
-
Every communication (in Luhmann’s sense) operates simultaneously in three dimensions: social (who), factual (what), temporal (when). (Kap. 6.4, following Luhmann)
- Key Proponents
-
Fritz B. Simon (Einführung in Systemtheorie und Konstruktivismus, 2006, 8. Aufl. 2017), Humberto Maturana (autopoiesis), Gregory Bateson (cybernetics), Heinz von Foerster (constructivism), Ernst von Glasersfeld (radical constructivism)
When to Use:
-
Training teams in systemic thinking for complex problem-solving
-
Designing interventions where direct control is impossible (organizations, families, ecosystems)
-
Understanding why the same input produces different results in human systems
-
Developing feedback-aware designs for socio-technical systems
-
Distinguishing between explanation, description, and evaluation in requirements
-
Building awareness of observer bias in system design and analysis
Relationship to Other Anchors:
-
Pedagogical bridge between Luhmann’s System Theory and practical application
-
Theoretical foundation for Systemic Consulting methods
-
Provides the epistemological basis for the System-Theoretic Semantic Anchors framework (see separate proposal)
-
"Ten Commandments of Systemic Thinking" (Kap. 7) are a direct precursor to Semantic Contracts (see separate proposal)
-
Contrasts with purely technical systems theory (e.g., general systems theory, Bertalanffy)
- Quote
-
"Regeln kann man leichter verändern als Menschen." (Fritz B. Simon)
Systemic Consulting (Heidelberg School)
Details
- Full Name
-
Systemic Consulting according to the Heidelberg School
- Also known as
-
Systemische Beratung, Systemic Therapy and Consulting, Heidelberg Model
Core Concepts:
- Consulting as Communication
-
"Was all diese Beratungsansätze miteinander verbindet: Es sind Formen der Kommunikation." (Simon, Einführung in die (System-)Theorie der Beratung, 2014) — The consulting process is analyzed through the lens of communication theory.
- All-Partiality (Allparteilichkeit)
-
The consultant takes no side but is partial to all sides simultaneously. "Rollenklärung des Therapeuten sowie Allparteilichkeit und das Prinzip der Neutralität." (Simon/Rech-Simon, Zirkuläres Fragen)
- Neutrality
-
The consultant remains neutral toward persons, toward the problem, and toward change. Not cold distance, but active multiperspectivity.
- Circular Questions
-
Instead of linear cause-effect questions ("Why did X happen?"), circular questions explore relationships, differences, and feedback loops: "What would Y say about X’s behavior?" "What needs to happen for the pattern to change?" "Zirkuläres Fragen zielt darauf, die gegenseitige Bedingtheit des Verhaltens von Menschen zu verdeutlichen."
- Context Clarification
-
"Die Kontextklärung für Therapeuten ist immer klarer als für Patienten." — Before any intervention, the context must be clarified: who referred, what are the expectations, what is the mandate?
- Problem as Emergent Pattern
-
Problems arise from relational patterns, not from individual deficiencies. Changing the pattern changes the problem.
- No Instruction, Only Irritation
-
The consultant cannot dictate changes (systems are operatively closed) but can offer perturbations that the system may or may not integrate.
- Reframing / Positive Connotation
-
Every behavior that appears dysfunctional is reframed as having a positive function for the system. "Which adaptive function does the status quo serve?"
- Hypothesizing
-
Before meeting a client, the team generates hypotheses about the system’s dynamics. Hypotheses are treated as provisional and falsifiable.
- Systemic Interview Structure
-
Clarify referral context → define goals → explore attempted solutions → identify resources → hypothesize patterns → offer intervention.
- Key Proponents
-
Fritz B. Simon (Einführung in die (System-)Theorie der Beratung, 2014), Helm Stierlin, Gunthard Weber (Heidelberg School), Paul Watzlawick, Jay Haley, John Weakland (MRI Palo Alto), Mara Selvini Palazzoli (Milan Group)
When to Use:
-
Facilitating organizational change where linear approaches have failed
-
Mediating conflicts between stakeholders with incompatible perspectives
-
Designing human-centered automation that respects user autonomy
-
Coaching teams through complex adaptive challenges
-
Any situation where the interventionist is part of the system (no external vantage point)
-
Evaluating whether a proposed technical solution addresses relational dynamics
Relationship to Other Anchors:
-
Operationalizes Simon’s Constructivism into concrete practice
-
Provides the "how" for the System-Theoretic Semantic Anchors framework (especially Stakeholder and Trust anchors, see separate proposal)
-
Direct precursor to Semantic Contracts — the consulting mandate functions as a semantic contract between consultant and client (see separate proposal)
-
Complements Cynefin Framework by providing intervention methods for the Complex domain
-
Contrasts with expert-driven consulting (which assumes instruction is possible)
What Would Chuck Norris Do? (WWCND)
Details
- Full Name
-
What Would Chuck Norris Do?
- Also known as
-
WWCND, Chuck Norris framing, "What would Chuck do?"
Core Concepts:
- What the anchor activates
-
A disposition, not a methodology: commit to the most direct, effective solution; refuse hedging; refuse premature optimisation; refuse ceremony that does not buy risk reduction. The activation is driven by the Chuck Norris facts meme corpus (circa 2005–) and its well-established software subcorpus ("Chuck Norris doesn’t write unit tests — the code is too afraid to fail"), both of which are densely present in modern LLM training data.
- Scope note
-
WWCND is a Tier 3, qualified anchor. It is not self-standing in the way that GoF Patterns or DDD are. Used bare it produces humour with signal; used with a short qualifier — "WWCND: commit to the most direct solution" — it behaves reliably across scenarios. It activates one disposition, not an interconnected body of engineering knowledge.
- How it differs from neighbours
-
-
Devil’s Advocate activates contrary-argument generation — a rhetorical operation against a stated position. WWCND activates direct-commitment problem-solving. Complementary, not substitutable, in the same way KISS and YAGNI coexist.
-
KISS constrains the shape of a solution toward simplicity. WWCND constrains the stance toward commitment under uncertainty. A WWCND recommendation can still be a complex solution if that is the most direct one.
-
Rambo and other action-hero framings produce convergent recommendations but different vocabulary: military metaphors ("fortify the perimeter") rather than software-native framing ("Microservices migrate to Chuck Norris, not the other way around").
-
- Why it works
-
The Chuck Norris humour format is built on absurd competence — the subject overcomes constraints that would stop anyone else. Applied to software problems, that frame consistently steers the model toward action-biased, commitment-first answers and away from multi-option hedging. Cross-model testing (see below) shows the activation is stable enough to treat as an anchor rather than a stylistic quirk.
- Empirical validation
-
Validated by Cornelius Schumacher (Protocol v3, April 2026) across Claude Sonnet 4.6, Gemini 3.1 Pro, and GPT-5.3 Codex: 19 prompts × N=2 = 114 manually scored responses. Key results: WWCND exceeds a "be direct, don’t hedge" control condition on engagement (12/12 scenario-model pairs) and insight quality (12/12); three independent models converged on the same primary recommendation in all four test scenarios (12/12 agreement); five architectural patterns (Strangler Fig, modular monolith / packwerk, team expertise, regression-for-specific-bug, CI gate) appeared unprompted across all three models. Full report: https://github.com/cornelius/what-would-chuck-norris-do
- Known limitation
-
GPT-5.3 Codex activates the decisiveness signal but not the character voice — it treats all persona anchors with a uniform pragmatic style. Expect diminished distinctiveness on Codex-class models. The recommendation content is consistent; the framing is muted.
- Key Proponents
-
Ian Spector, The Truth About Chuck Norris (Gotham Books, 2007); Ian Spector and Chuck Norris, The Official Chuck Norris Fact Book (Thomas Nelson, 2009) — co-authored with Norris. Empirical catalog validation: Cornelius Schumacher, Protocol v3 (April 2026).
When to Use:
-
Breaking decision paralysis — teams stuck in a prolonged trade-off debate where any reasonable commitment is better than continued deliberation
-
Counter-balancing excessive hedging — when a previous answer is multi-optioned to the point of uselessness, apply WWCND to collapse to a recommendation
-
Architecture or technology picks where the differences are marginal and the cost of not deciding exceeds the cost of a suboptimal pick
-
Pairing with Devil’s Advocate — WWCND commits, Devil’s Advocate then stress-tests the commitment. Together they avoid both paralysis and overcommitment.
-
Avoid in situations that require calibrated judgment between genuinely different outcomes — the anchor’s commitment bias can underweight nuance
Related Anchors:
-
Devil’s Advocate - Complementary partner: WWCND commits, Devil’s Advocate challenges
-
KISS Principle - Sibling in the simplification family, applied to solutions rather than stance
-
YAGNI - Both resist ceremony and speculative complexity
-
Occam’s Razor - Occam selects the most parsimonious explanation; WWCND commits to the most direct response
XY Problem
Details
- Also known as
-
Solution Fixation, Asking the Wrong Question
Core Concepts:
- X is the Real Problem
-
The underlying goal the asker actually wants to achieve
- Y is the Attempted Solution
-
The approach the asker has chosen, often based on an incomplete model of X
- The Question Hides X
-
The asker phrases their request as "How do I do Y?" — X is never stated, only assumed by the asker
- Solution Fixation
-
Commitment to Y obscures whether Y solves X at all, and may rule out simpler approaches
- Goal-Step Confusion
-
Conflating "what I want" with "the steps I think will get me there"
- Recognition Heuristic
-
Y looks unusual, brittle, or disproportionate to the questioner’s apparent expertise — usually a sign that X is hidden
- Resolution by Probing
-
Ask "What are you actually trying to accomplish?" — surface X, then propose solutions for X (which may or may not include Y)
- Asker’s Discipline
-
State X first, then your attempted Y, then the specific blocker — this lets the helper validate the whole chain
- Key Proponents
-
Mark Jason Dominus (coined the term in a 2001 post to comp.lang.perl.misc), Eric S. Raymond ("How To Ask Questions The Smart Way", 2001 — "describe the goal, not the step")
- Historical Context
-
Crystallized in Usenet and IRC help culture of the early 2000s; canonical reference at https://xyproblem.info/ and Greg’s Wiki (mywiki.wooledge.org/XyProblem); now part of the standard vocabulary on Stack Overflow, Hacker News, and software help channels.
When to Use:
-
As a helper, when a question feels strange, over-specific, or asks for an awkward technical workaround — pause and ask for the underlying goal
-
In LLM dialogues, to break out of solution-fixation when a model keeps trying to make Y work
-
In requirements clarification, when a stakeholder demands a specific feature that looks like a workaround for an unstated need
-
In code review, when a change looks like a hack — check whether the wrong problem is being solved
-
In support tickets and bug reports, to redirect from "this UI doesn’t let me do Y" toward "what task X were you doing?"
-
As an asker, to discipline yourself to state the goal before the attempt
Related Anchors:
-
Socratic Method — questioning to surface the underlying problem
-
BLUF — the asker’s analogue: lead with the goal, not the step
-
Problem Space (NVC) — distinguish needs from strategies, the same X/Y move from a Nonviolent Communication frame
- Counter-example
-
Concrete reproduction steps for a confirmed bug — the steps are the problem, not a workaround for it.
Requirements Engineering
Cockburn Use Cases
Details
- Full Name
-
Cockburn Use Cases (Writing Effective Use Cases)
- Also known as
-
Fully Dressed Use Cases, Goal-Level Use Cases, Cockburn Format
Core Concepts:
- Fully Dressed Format
-
A structured textual template for describing system behavior from the actor’s perspective. Each use case includes: Primary Actor, Stakeholders & Interests, Preconditions, Trigger, Main Success Scenario (numbered steps), Extensions (alternative/failure paths with step references), Postconditions (success guarantee and minimal guarantee), and Technology & Data Variations.
- Goal Levels
-
Three abstraction levels that organise use cases into a hierarchy:
-
Summary (Kite/Cloud) — business-process-level goals spanning multiple user sessions. Example: "Manage customer lifecycle."
-
User Goal (Sea Level) — the sweet spot: one actor, one sitting, one measurable outcome. Example: "Place an order." Most use cases live here.
-
Subfunction (Fish/Clam) — steps that support a user goal but are not goals in themselves. Example: "Authenticate user." Extract only when reused across multiple user-goal use cases.
-
- Scope
-
Defines the system boundary — what is inside the "design scope" and what is an external actor. Cockburn uses icons (a box for the system, a person for actors) to make the boundary visual. Getting scope right prevents use cases from being either too vague (organisational scope) or too detailed (component scope).
- Actor-Goal List
-
The discovery technique: list every actor and every goal they have against the system. This produces a candidate use case list before writing any prose. The goal level test: "Does the actor go home happy if this goal is achieved?" filters out subfunctions masquerading as user goals.
- What Cockburn does not prescribe
-
Cockburn’s format is deliberately prose-based and notation-agnostic. It does not mandate Activity Diagrams, Gherkin, EARS, or any formal syntax. Those are complementary representations that can be layered on top — Activity Diagrams for visual flow, Gherkin for executable acceptance criteria, EARS for structured requirement statements.
- Key Proponents
-
Alistair Cockburn (Writing Effective Use Cases, Addison-Wesley, 2001). The book remains the canonical reference; Cockburn also contributed to the Agile Manifesto and Crystal methodologies.
When to Use:
-
Discovering what a system needs to do before deciding how to build it — the Actor-Goal List is a fast, structured brainstorm
-
Structuring requirements conversations with stakeholders who think in scenarios, not features
-
Decomposing a large system into manageable behavioural units at the right granularity (goal-level test)
-
Brownfield theory recovery: reconstructing what a system does by writing use cases from observed behaviour
-
Feeding downstream artifacts: each use case becomes a natural unit for Activity Diagrams, Gherkin scenarios, and test plans
-
Complementing arc42: use cases populate Section 6 (Runtime View) and inform Section 3 (Context and Scope)
Related Anchors:
-
Gherkin - Executable acceptance criteria that can be derived from each extension path in a use case
-
BDD Given/When/Then - Formalises the scenario steps that Cockburn describes in prose
-
EARS Requirements - Structured syntax for individual requirement statements; complements Cockburn’s scenario-level structure
-
arc42 - Use cases feed Section 6 (Runtime View) and inform Section 3 (Context and Scope)
-
ISO 25010 - Quality goals that use case extensions should address (error handling, performance, security)
Further Reading:
-
Anchors and Training Data - why this anchor reflects Cockburn’s craft rather than Jacobson’s later Use-Case 2.0/3.0, and what that reveals about how anchors depend on training data.
Current Status:
-
Writing Effective Use Cases (2001) never had a second edition and remains the canonical craft text — and the densest, most reliably activated LLM prior for use-case writing
-
Jacobson’s successor exists and works as an anchor of its own: Use-Case 2.0 (Jacobson, Spence & Bittner, free ebook, 2011) adapts use cases to iterative delivery via use-case slices
-
Use Case 3.0 (de Mendonca & Jacobson, v1.0, 2024) does exist — but it is too young to be an anchor: LLMs hold no dense prior for it (see Further Reading above), so supply its definition in the prompt if you want 3.0 semantics. Jacobson and Cockburn realigned their craft in "Use Cases are Essential" (ACM Queue, 2023)
Double Diamond
Details
- Full Name
-
Double Diamond Design Process Model
- Also known as
-
4Ds Model, Design Council Double Diamond
Core Concepts:
- Two Diamonds, Four Phases
-
Discover → Define → Develop → Deliver. Each diamond is one divergent-convergent cycle. The first diamond explores and frames the problem; the second diamond explores and ships the solution.
- Discover (Divergent, Problem Space)
-
Broad research — interviews, observation, immersion, data analysis. Goal: widen the understanding of what’s actually going on, not jump to causes.
- Define (Convergent, Problem Space)
-
Synthesize findings into a sharp problem statement. The famous slogan: "Are we solving the right problem?" — the diamond ends with a problem worth solving, not a list of features.
- Develop (Divergent, Solution Space)
-
Generate many candidate solutions — sketches, prototypes, co-design workshops. Diverge widely before narrowing; resist solution fixation.
- Deliver (Convergent, Solution Space)
-
Test, refine, ship. The chosen concept is iterated until it’s production-ready; failed candidates are explicitly killed rather than left lingering.
- Design the Right Thing, Then Design the Thing Right
-
The canonical summary. The first diamond addresses "right thing" (problem worth solving); the second addresses "thing right" (solution that works).
- Divergent Before Convergent
-
A hard discipline at every phase. Premature convergence — picking the obvious problem or obvious solution — is the failure mode the model is designed to prevent.
- Iteration, Not Waterfall
-
The diamonds are not strictly linear. Learnings in Develop frequently send the team back to Discover or Define. The 2019 Framework for Innovation update made this explicit.
- Mindsets and Principles
-
The Design Council pairs the four phases with four principles (Put people first, Communicate visually and inclusively, Collaborate and co-create, Iterate, iterate, iterate) — the diamonds without the mindset is just process theater.
- Key Proponents
-
UK Design Council (originally published 2005; expanded as Framework for Innovation in 2019). Built on the divergent-convergent tradition of J.P. Guilford (1956) and Béla H. Bánáthy.
- Historical Context
-
Developed by the Design Council in 2005 after research into how leading design organizations actually worked. The 2019 update reframed it as a system-level innovation framework, adding the principles, key roles, and explicit iteration arrows. Adopted broadly in UX, service design, government innovation (UK GDS, NHS, Danish Mindlab), and design education.
When to Use:
-
Framing UX or service design projects when the team is at risk of jumping to solutions
-
Innovation workshops and design sprints — the diamonds give a shared visual model for sequencing divergent and convergent work
-
Discovery phases of product development when the problem itself is not yet well understood
-
Teaching design thinking — the model is more concrete than abstract "design thinking" because it names the four moves
-
Communicating why a discovery phase is necessary to stakeholders who want to skip straight to delivery
Related Anchors:
-
Jobs to be Done — sharpens the Define output by reframing customer needs as functional, emotional, and social jobs
-
Problem Space (NVC) — separates needs from strategies; complements the first-diamond discipline of staying in problem space
-
XY Problem — anti-pattern that the first diamond is designed to prevent (solving Y before understanding X)
-
MVP — the Deliver output is often shaped as an MVP to validate the chosen solution against the defined problem
EARS-Requirements
Details
- Full Name
-
Easy Approach to Requirements Syntax
Core Concepts:
- Ubiquitous requirements
-
"The <system> shall <requirement>"
- Event-driven requirements
-
"WHEN <trigger> the <system> shall <requirement>"
- Unwanted behavior
-
"IF <condition>, THEN the <system> shall <requirement>"
- State-driven requirements
-
"WHILE <state>, the <system> shall <requirement>"
- Optional features
-
"WHERE <feature is included>, the <system> shall <requirement>"
- Structured syntax
-
Consistent templates for clarity
- Testability
-
Requirements written to be verifiable
- Key Proponent
-
Alistair Mavin (Rolls-Royce)
When to Use:
-
Safety-critical systems
-
Regulated industries (aerospace, automotive, medical)
-
When requirements traceability is essential
-
Large, distributed teams
Event Storming according to Alberto Brandolini
Details
- Full Name
-
Event Storming
- Also known as
-
EventStorming (Brandolini)
Core Concepts:
- Domain events on a timeline
-
Model the domain as past-tense domain events (orange stickies) placed left-to-right on a wide wall, reconstructing how the business actually unfolds over time
- The colour notation
-
A fixed sticky vocabulary — orange = Domain Event, blue = Command, yellow = Aggregate, lilac = Policy (reactive "whenever… then…"), green = Read Model, pink = External System, red = Hotspot (conflict, question, assumption)
- Three levels
-
Big Picture (explore the whole domain with all stakeholders), Process Modeling (zoom into one flow: command → event → policy → command), Design Level (aggregates, commands and events detailed enough to drive implementation)
- Pivotal events
-
Events that mark phase transitions or boundaries — strong candidates for bounded context seams
- Hotspots
-
Make conflicts, unknowns and assumptions explicit on the wall instead of glossing over them — they become the agenda
- Chaotic exploration → enforced timeline
-
Everyone adds events in parallel first (diverge), then the group orders and de-duplicates them into a coherent line (converge)
- Key Proponents
-
Alberto Brandolini (first run 2012, "Introducing EventStorming" blog post 2013; Leanpub book, continuously updated)
When to Use:
-
Kicking off a Domain-Driven Design effort — discovering bounded contexts and aggregate boundaries collaboratively
-
Aligning business and engineering on a shared, visual domain model
-
Before deciding on an event-driven or CQRS architecture — discover the events/commands first
-
Reverse Event Storming on legacy systems (well suited to an AI agent): extract state transitions → map to Domain Events → cluster into Aggregates → surface Bounded Contexts
When NOT to Use:
-
Trivial CRUD domains with no meaningful process or business rules
-
Solo modeling where the collaborative, cross-role discovery — the whole point — is absent
Related Anchors:
-
Domain-Driven Design — the vocabulary (aggregates, bounded contexts) Event Storming discovers; often the on-ramp to DDD
-
User Story Mapping — activity-centric mapping vs. event-centric discovery
-
CQRS — commands and read models found on the wall feed a later CQRS decision
-
Event-Driven Architecture — the modeling step that precedes deciding how events are routed
INVEST
Details
- Full Name
-
INVEST Criteria for User Stories
- Also known as
-
INVEST Checklist, INVEST Mnemonic
Core Concepts:
INVEST = Independent / Negotiable / Valuable / Estimable / Small / Testable
- Independent
-
Stories should be self-contained and deliverable in any order; avoid dependencies between stories that force a fixed implementation sequence
- Negotiable
-
Stories are not contracts; the details are open to discussion between team and stakeholders until they enter a sprint
- Valuable
-
Every story must deliver clear value to the user or business; stories that only serve technical needs should be wrapped in user-visible value
- Estimable
-
The team must be able to estimate the story’s size; if they cannot, the story is too large, too vague, or requires a spike
- Small
-
Stories should be small enough to complete within a single sprint; large epics must be broken down before entering a sprint
- Testable
-
Stories require concrete acceptance criteria so developers and testers can verify completion; untestable stories hide ambiguity
- Key Proponent
-
Bill Wake ("INVEST in Good Stories, and SMART Tasks", 2003)
When to Use:
-
Reviewing user stories before sprint planning to assess readiness
-
Splitting epics into smaller, deliverable stories
-
Coaching teams on what constitutes a well-formed user story
-
During backlog refinement to identify stories that need more work
-
As a Definition of Ready checklist for story acceptance into a sprint
Related Anchors:
Kano Model
Details
- Also known as
-
Kano Analysis, Kano-Modell, Customer Satisfaction Model
Core Concepts:
- Two-dimensional Quality
-
Customer satisfaction is not the simple inverse of dissatisfaction — they are two separate axes (presence/absence of a feature × resulting satisfaction)
- Five Feature Categories
-
Every feature falls into one of five classes that map differently onto the satisfaction curve
- Must-be (Basic, Threshold)
-
Expected baseline — absence causes strong dissatisfaction, presence is taken for granted and earns no credit (e.g., car has wheels, app does not lose data)
- One-dimensional (Performance, Linear)
-
Satisfaction grows roughly linearly with how well the feature is delivered (e.g., fuel efficiency, response time, battery life)
- Attractive (Excitement, Delighter)
-
Unexpected — absence causes no dissatisfaction, presence delights and differentiates (e.g., a thoughtful onboarding gesture, a surprising shortcut)
- Indifferent
-
Customer does not care either way — flag for cost reduction
- Reverse
-
Presence actually causes dissatisfaction for the target segment — flag for removal or segmentation
- Functional / Dysfunctional Questionnaire
-
For each candidate feature, ask the user two paired questions: "How would you feel if this feature were present?" and "How would you feel if it were absent?". The cross-tab of answers maps the feature to one of the five categories
- Time Decay
-
Categories migrate over time. Today’s Delighter becomes tomorrow’s Performer and eventually a Must-be as the market matures (mobile camera, HTTPS, dark mode)
- Key Proponent
-
Noriaki Kano (Tokyo University of Science), originally published in 1984 in the Japanese journal Hinshitsu ("Quality")
- Historical Context
-
Developed in the context of Japanese quality management, alongside Total Quality Management and the Kaizen movement; widely adopted in product management, UX research, and requirements engineering since the late 1990s.
When to Use:
-
Prioritising features in a product backlog beyond raw business value
-
Distinguishing the "non-negotiables" (Must-be) from the "wow features" (Delighter) before estimation
-
User research where you need to understand why a feature affects satisfaction, not just whether users like it
-
MVP scoping: ensure all Must-be features are covered before investing in Delighters
-
Product strategy reviews: spot Delighters that have decayed into Performers or Must-be and update positioning
-
Combining with MoSCoW Method — Must-be → Must, Performance → Should, Delighter → Could
Related Anchors:
-
MoSCoW Method — complementary prioritisation lens (organisation-driven), often combined with Kano (customer-driven)
-
Jobs To Be Done — discovery side: what job is the customer hiring the feature for, before classifying its impact
-
EARS Requirements — once a feature is classified as Must-be, EARS gives it the unambiguous wording
- Counter-example
-
Pure ROI-based ranking — useful but blind to the asymmetry between dissatisfaction (Must-be) and delight (Attractive). Kano corrects that.
MoSCoW
Details
- Full Name
-
MoSCoW Prioritization Method
- Also known as
-
MoSCoW Analysis, MoSCoW Method
Core Concepts:
MoSCoW = Must have / Should have / Could have / Won’t have
- Must have
-
Non-negotiable requirements essential for the current delivery; without them the solution is unusable or unsafe
- Should have
-
Important requirements that are not vital; painful to leave out but the solution is still viable without them
- Could have
-
Desirable but not necessary requirements; included only if time and resources permit
- Won’t have (this time)
-
Requirements explicitly agreed to be out of scope for the current iteration; may be reconsidered in future
- Timeboxed context
-
Prioritization is always relative to a fixed timebox, not permanent
- Stakeholder alignment
-
Prioritization is a collaborative activity that builds shared understanding
- Scope control
-
Explicit "Won’t have" category reduces scope creep by surfacing deferred items
- Key Proponent
-
Dai Clegg (Dynamic Systems Development Method / DSDM, 1994)
When to Use:
-
Sprint and release planning in agile teams
-
Scoping a Minimum Viable Product (MVP)
-
Negotiating scope with stakeholders under time or budget constraints
-
Prioritizing a backlog when resources are limited
-
Aligning cross-functional teams on delivery expectations
Related Anchors:
PRD
Details
- Full Name
-
Product Requirements Document
- Also known as
-
Product Spec, Feature Spec, Requirements Specification
Core Concepts:
- Problem statement
-
Clear articulation of the problem to be solved and the target users
- Goals and success metrics
-
Measurable outcomes that define what "done" looks like (KPIs, OKRs)
- User personas and use cases
-
Who will use the product and what they are trying to accomplish
- Functional requirements
-
What the system must do — features, behaviors, and capabilities
- Non-functional requirements
-
Quality attributes — performance, security, scalability, accessibility
- Scope and out-of-scope
-
Explicit boundaries to prevent scope creep and align stakeholders
- Constraints and assumptions
-
Technical, business, regulatory, or timeline constraints
- Open questions
-
Unresolved decisions or dependencies that must be tracked
- Key Proponents
-
Marty Cagan ("Inspired"), Roman Pichler ("Strategize")
When to Use:
-
Before starting design or development of a new product or major feature
-
When aligning cross-functional teams (engineering, design, marketing, legal)
-
To provide a shared reference for scope negotiations and tradeoff decisions
-
When stakeholder sign-off or compliance documentation is required
-
As a living document updated throughout the product discovery process
Related Anchors:
Nonviolent Communication (Rosenberg)
Details
- Also known as
-
NVC, Problem Space NVC, Gewaltfreie Kommunikation (GFK)
Core Concepts:
- Observations
-
Concrete, objective facts without evaluation or judgment. "The deploy failed three times this week" instead of "The deploy always fails."
- Feelings
-
Emotions arising from observations. "I feel frustrated" instead of "This is frustrating."
- Needs
-
Universal human needs underlying feelings. Reliability, autonomy, clarity, safety. The real driver behind every request.
- Requests
-
Specific, actionable asks (not demands). "Could we add a pre-deploy check?" instead of "Fix the deploy process."
- Four-step process
-
Observe → Feel → Need → Request. Each step builds on the previous one.
- Key Proponent
-
Marshall Rosenberg ("Nonviolent Communication: A Language of Life", 1999)
When to Use:
-
Tell an LLM: "Reformulate this complaint using NVC according to Rosenberg"
-
Tell an LLM: "Write this stakeholder email in NVC style — observation, feeling, need, request"
-
Requirements elicitation that uncovers real user needs behind feature requests
-
Conflict resolution in teams and retrospectives
-
Transforming vague complaints into actionable requirements
Related Anchors:
-
Socratic Method — complementary: NVC for expressing, Socratic for exploring
-
BLUF — contrasting style: BLUF is conclusion-first, NVC is empathy-first
Quality Attribute Scenario
Details
- Full Name
-
Quality Attribute Scenario
- Also known as
-
Quality Scenario, Six-Part Scenario
Core Concepts:
- Purpose
-
Turn a vague quality goal ("the system must be fast") into a concrete, testable statement. A scenario without a measurable response is a wish, not a requirement.
- Six Parts
-
Every scenario is specified through six elements: Source (the entity generating the stimulus), Stimulus (the condition arriving at the system), Artifact (the part of the system stimulated), Environment (the conditions under which it occurs — normal load, overload, startup, degraded mode), Response (the activity that results), Response Measure (the response quantified so the requirement is verifiable).
- Response Measure
-
The decisive part. Without a measure — a latency, a percentile, a throughput, a recovery time — a scenario cannot be tested and is not a requirement.
- General vs. Concrete Scenarios
-
A general scenario is a reusable template for a quality attribute; a concrete scenario instantiates it for one specific system with literal values.
- Relation to Quality Attributes
-
Scenarios make ISO/IEC 25010 characteristics operational — each characteristic (performance efficiency, reliability, security…) is expressed as one or more concrete scenarios.
- Key Proponents
-
Len Bass, Paul Clements, Rick Kazman ("Software Architecture in Practice", SEI / Carnegie Mellon University)
When to Use:
-
Writing arc42 Chapter 10 quality requirements as testable statements rather than adjectives
-
Building an ATAM utility tree, where each leaf is a prioritized concrete scenario
-
Specifying non-functional requirements that QA must later verify
-
Recovering quality requirements from a brownfield codebase — deriving the response measure from a literal threshold, timeout, or budget in the code
Related Anchors:
-
ATAM — uses quality attribute scenarios as the leaves of its utility tree
-
arc42 Architecture Documentation — Chapter 10 quality requirements are expressed as scenarios
-
ISO/IEC 25010 — the quality characteristics that scenarios make concrete
-
EARS Requirements — a comparable discipline of making requirements precise and testable
User Story Mapping
Details
- Full Name
-
User Story Mapping according to Jeff Patton
Core Concepts:
- Narrative flow
-
Horizontal arrangement of user activities
- User activities
-
High-level tasks users perform
- User tasks
-
Steps within activities
- Walking skeleton
-
Minimal end-to-end functionality first
- Release planning
-
Horizontal slices for releases
- Prioritization by value
-
Vertical ordering by importance
- Shared understanding
-
Collaborative mapping builds team alignment
- Big picture view
-
See the whole journey, not just backlog items
- Opportunity for conversation
-
Stories as placeholders for discussion
- Key Proponent
-
Jeff Patton ("User Story Mapping", 2014)
When to Use:
-
Planning new products or major features
-
When backlog feels overwhelming or fragmented
-
Release planning for incremental delivery
-
Onboarding team members to product vision
Software Architecture
ADR according to Nygard
Details
- Full Name
-
Architecture Decision Records according to Michael Nygard
Core Concepts:
- Lightweight documentation
-
Short, focused records
- Standard structure
-
-
Title
-
Status (proposed, accepted, deprecated, superseded)
-
Context (forces at play)
-
Decision (what was chosen)
-
Consequences (both positive and negative)
-
- Immutability
-
ADRs are never deleted, only superseded
- Version control
-
ADRs stored with code
- Decision archaeology
-
Understanding why past decisions were made
- Evolutionary architecture
-
Supporting architecture that changes over time
- Key Proponent
-
Michael Nygard
When to Use:
-
All software projects (low overhead, high value)
-
Distributed teams needing shared understanding
-
When onboarding new team members
-
Complex systems with evolving architecture
arc42 Architecture Documentation
Details
- Full Name
-
arc42 Architecture Documentation Template
Core Concepts:
- 12 standardized sections
-
From introduction to glossary
- Section 1
-
Introduction and Goals
- Section 2
-
Constraints
- Section 3
-
Context and Scope
- Section 4
-
Solution Strategy
- Section 5
-
Building Block View
- Section 6
-
Runtime View
- Section 7
-
Deployment View
- Section 8
-
Crosscutting Concepts
- Section 9
-
Architecture Decisions (ADRs)
- Section 10
-
Quality Requirements
- Section 11
-
Risks and Technical Debt
- Section 12
-
Glossary
- Pragmatic documentation
-
Document only what’s necessary
- Multiple formats
-
AsciiDoc, Markdown, Confluence, etc.
- Key Proponents
-
Gernot Starke, Peter Hruschka
When to Use:
-
Medium to large software projects
-
When stakeholder communication is critical
-
Long-lived systems requiring maintainability
Current Status:
-
The current release is template version 9.0 (July 2025); the 12-section structure has been stable for many years — v9’s main change splits Section 10 into a quality-requirements overview (10.1) and detailed scenarios (10.2)
-
What evolves is the material around the skeleton: help texts, translations, the tips-and-examples site docs.arc42.org, and the arc42 quality model (Q42) — a prior trained on v7/v8 material knows the section structure correctly but misses the Section-10 split and Q42
ATAM
Details
- Full Name
-
Architecture Tradeoff Analysis Method
- Also known as
-
Architecture Evaluation, ATAM Review
Core Concepts:
- Utility Tree
-
Hierarchical decomposition of system quality goals into concrete, prioritized quality attribute scenarios (e.g., Performance → Response Time → "Search results returned in < 1s under peak load")
- Quality Attribute Scenarios
-
Testable, concrete expressions of quality requirements consisting of stimulus, source, environment, artifact, response, and response measure
- Architectural Approaches
-
Design decisions and patterns (e.g., caching, replication, layering) used to achieve quality attributes
- Sensitivity Points
-
Architectural decisions that significantly affect one specific quality attribute
- Tradeoff Points
-
Architectural decisions that affect two or more quality attributes in conflicting ways — the core insight of ATAM
- Risks and Non-risks
-
Identified architectural decisions that may (risks) or demonstrably will not (non-risks) lead to future problems
- Nine-step process
-
Presentation of ATAM → presentation of business drivers → presentation of architecture → identification of architectural approaches → generation of utility tree → analysis of architectural approaches → brainstorming scenarios → analysis of scenarios → presentation of results
- Key Proponents
-
Rick Kazman, Mark Klein, Paul Clements (SEI / Carnegie Mellon University)
When to Use:
-
Evaluating a software architecture before major investment in implementation
-
When multiple stakeholders have conflicting quality requirements (e.g., performance vs. security)
-
During architecture reviews of safety-critical or high-availability systems
-
When making buy-vs.-build decisions or selecting between competing architectural styles
Related Anchors:
C4-Diagrams
Details
- Full Name
-
C4 Model for Software Architecture Diagrams
Core Concepts:
- Four levels of abstraction
-
- Level 1 - Context
-
System in its environment (users, external systems)
- Level 2 - Container
-
Applications and data stores that make up the system
- Level 3 - Component
-
Components within containers
- Level 4 - Code
-
Class diagrams, entity relationships (optional)
- Zoom in/out
-
Progressive disclosure of detail
- Simple notation
-
Boxes and arrows, minimal notation overhead
- Audience-appropriate
-
Different diagrams for different stakeholders
- Supplementary diagrams
-
Deployment, dynamic views, etc.
- Key Proponent
-
Simon Brown
When to Use:
-
Communicating architecture to diverse stakeholders
-
Onboarding new team members
-
Architecture documentation and review
-
Replacing or supplementing UML
Current Status:
-
The four levels (System Context, Container, Component, Code) and the supporting diagrams (system landscape, dynamic, deployment) are stable; c4model.com remains actively maintained by Simon Brown with edits into 2026
-
In September 2024 the site was rewritten from a single long page into a multi-page reference with new guidance (modelling microservices, queues and topics, a review checklist) — a prior trained on the old one-pager misses this guidance and the sharpened diagramming-vs-modelling framing around tooling such as Structurizr
CAP Theorem
Details
- Full Name
-
CAP Theorem (Consistency, Availability, Partition tolerance)
- Also known as
-
Brewer’s Theorem
Core Concepts:
- The three properties
-
Consistency (every read sees the most recent write), Availability (every request gets a non-error response), Partition tolerance (the system keeps working despite dropped/delayed messages between nodes)
- The trade-off
-
When a network partition occurs, a distributed system must choose between consistency and availability — it cannot have both during the partition
- Partitions are not optional
-
Real networks partition, so P is a given; the genuine design choice is CP vs AP behaviour while partitioned
- Common misreading
-
"Pick 2 of 3" is a simplification; outside a partition a system can be both consistent and available
- PACELC extension
-
Else (no partition), trade Latency against Consistency — captures the everyday tuning that CAP alone omits (Abadi, 2012)
- Key Proponents
-
Eric Brewer (2000 conjecture, PODC keynote); formally proved by Seth Gilbert & Nancy Lynch (2002); PACELC by Daniel Abadi (2012)
When to Use:
-
Choosing or evaluating a distributed datastore (CP vs AP behaviour)
-
Framing a concrete consistency/availability trade-off for a feature
-
Reasoning about behaviour during network partitions and failover
-
Explaining why strong consistency costs availability or latency
When NOT to Use:
-
For single-node systems with no replication (no partitions to tolerate)
-
As a crude "2 of 3" slogan — prefer the partition-time framing or PACELC
Related Anchors:
-
Event-Driven Architecture — eventual consistency as an AP design choice
-
Fallacies of Distributed Computing — the network assumptions CAP makes explicit
Criticism:
-
Eric Brewer himself, "CAP Twelve Years Later: How the 'Rules' Have Changed" (IEEE Computer, 2012) — the "2 of 3" formulation is misleading; the trade-off is narrower and more nuanced than the slogan suggests
-
Martin Kleppmann, "Please stop calling databases CP or AP" (2015) — CAP’s formal definitions are too narrow to classify real systems; many databases are neither CP nor AP under the theorem’s own terms
-
Alternative named in the discourse: reason with precise consistency models (linearizability, causal consistency, etc.) and the PACELC framing instead of the CP/AP dichotomy
Clean Architecture
Details
- Full Name
-
Clean Architecture according to Robert C. Martin
Core Concepts:
- The Dependency Rule
-
Dependencies only point inward
- Concentric circles
-
Entities → Use Cases → Interface Adapters → Frameworks & Drivers
- Independent of frameworks
-
Architecture doesn’t depend on libraries
- Testable
-
Business rules testable without UI, database, or external elements
- Independent of UI
-
UI can change without changing business rules
- Independent of database
-
Business rules not bound to database
- Independent of external agencies
-
Business rules don’t know about outside world
- Screaming Architecture
-
Architecture reveals the intent of the system
- SOLID principles
-
Foundation of the architecture
- Key Proponent
-
Robert C. Martin ("Uncle Bob")
When to Use:
-
Enterprise applications with complex business logic
-
Systems requiring long-term maintainability
-
When team size and turnover are high
-
Projects where business rules must be protected from technology changes
Criticism:
-
Jimmy Bogard, "Vertical Slice Architecture" (2018) — calls the "traditional layered/onion/clean architecture" monolithic in its approach and appropriate for only a minority of requests, criticizing mock-heavy tests and abstractions "around concepts that really shouldn’t be abstracted"; his alternative is Vertical Slice Architecture
-
Derek Comartin, "'Clean Architecture' and indirection. No thanks." (CodeOpinion) — dismisses canonical Clean Architecture examples as "useless indirection": the layering adds cost without paying for itself in typical systems
-
The critiques converge: the dependency rule imposes a fixed indirection tax on every feature, while most changes cut across all layers anyway — the coupling Vertical Slice Architecture organizes around instead
Conway’s Law
Details
- Full Name
-
Conway’s Law
- Also known as
-
The Mirroring Hypothesis
Core Concepts:
- Homomorphic force
-
"Any organization that designs a system will produce a design whose structure is a copy of the organization’s communication structure" — system boundaries mirror team boundaries
- Communication paths
-
Interfaces in the software appear wherever two teams must coordinate; the cost and friction of cross-team communication shapes where modules are split
- Inverse Conway Maneuver
-
Deliberately structure teams to match the desired architecture, rather than letting an accidental org chart dictate the system
- Team Topologies
-
Modern operationalization (Skelton & Pais) — stream-aligned, platform, enabling, and complicated-subsystem teams sized for a manageable cognitive load
- Sociotechnical view
-
Architecture is not purely technical; org design and system design are two sides of the same decision
- Key Proponents
-
Melvin E. Conway ("How Do Committees Invent?", Datamation 1968); popularized by Fred Brooks ("The Mythical Man-Month"); modern form in Matthew Skelton & Manuel Pais ("Team Topologies", 2019)
When to Use:
-
Planning team structure for a new system or a re-architecture
-
Diagnosing why module boundaries are awkward or why integration is painful
-
Justifying microservice/bounded-context splits along team lines
-
Reviewing whether the org chart is fighting the intended architecture
When NOT to Use:
-
As a deterministic prediction — it is a strong tendency, not a law of physics
-
For tiny single-team systems where there is only one communication path
Related Anchors:
-
Domain-Driven Design — bounded contexts as team-aligned boundaries
-
Cohesion Criteria — module cohesion that team boundaries should respect
-
Vertical Slice Architecture — slices that map to stream-aligned teams
CQRS (Command Query Responsibility Segregation)
Details
- Also known as
-
CQS at architectural scale
Core Concepts:
- Command Query Separation (CQS)
-
Bertrand Meyer’s principle — methods either change state (commands) or return data (queries), never both
- Commands
-
Write operations that change state and return void; represent intent as immutable command objects
- Queries
-
Read operations that return data with no side effects; safe to retry and cache
- Separate read/write models
-
Independent data models optimized for their respective purpose
- Eventual consistency
-
Read model may lag behind write model; acceptable trade-off for scalability
- Event-based synchronization
-
Domain events propagate changes from write side to read side projections
- Independent scalability
-
Read and write sides can be scaled, deployed, and optimized independently
- Event sourcing optional
-
CQRS does not require event sourcing; the patterns are complementary but independent
- Key Proponents
-
Greg Young (coined CQRS), Bertrand Meyer (CQS origin, "Object-Oriented Software Construction", 1988), Udi Dahan
When to Use:
-
Systems with asymmetric read/write workloads
-
Complex domains where read and write models diverge significantly
-
Event-sourced systems requiring materialized views
-
High-performance systems needing independent scaling of reads and writes
-
Collaborative domains with task-based UIs
Related Anchors:
-
Domain-Driven Design - Often combined with CQRS for complex domains
-
Hexagonal Architecture - Ports and adapters complement CQRS separation
-
Fowler Patterns - CQRS builds on enterprise application patterns
Criticism:
-
Martin Fowler, bliki: CQRS — warns that "for most systems CQRS adds risky complexity", a "significant mental leap" that pays off only in specific bounded contexts, not as a default pattern
-
Udi Dahan, one of CQRS’s main proponents, opens "When to avoid CQRS" (2011) with "Most people using CQRS (and Event Sourcing too) shouldn’t have done so" — and adds that CQRS "should not be your top-level architectural pattern"
-
Greg Young himself pushed back on scope creep in "CQRS is not an Architecture" (2012, archived): CQRS is a pattern applied inside a single component, not an architectural style for a whole system
Domain-Driven Design according to Evans
Details
- Full Name
-
Domain-Driven Design according to Eric Evans
Core Concepts:
- Ubiquitous Language
-
Shared vocabulary between developers and domain experts
- Bounded Context
-
Explicit boundaries where a model is defined and applicable
- Aggregates
-
Cluster of domain objects treated as a single unit
- Entities
-
Objects defined by identity, not attributes
- Value Objects
-
Immutable objects defined by their attributes
- Repositories
-
Abstraction for object persistence and retrieval
- Domain Events
-
Significant occurrences in the domain
- Strategic Design
-
Context mapping, anti-corruption layers
- Tactical Design
-
Building blocks (entities, value objects, services)
- Model-Driven Design
-
Code that expresses the domain model
- Key Proponent
-
Eric Evans ("Domain-Driven Design: Tackling Complexity in the Heart of Software", 2003)
When to Use:
-
Complex business domains with intricate rules
-
Long-lived systems requiring deep domain understanding
-
When business and technical teams need close collaboration
-
Systems where the domain logic is the core value
Event-Driven Architecture
Details
- Also known as
-
EDA, Message-Driven Architecture
Core Concepts:
- Event producers and consumers
-
Components communicate by emitting and reacting to events rather than direct calls
- Publish-subscribe
-
Producers publish events without knowing which consumers will process them
- Asynchronous decoupling
-
Sender and receiver operate independently in time; no blocking request-response
- Message queue
-
Intermediary that buffers events between producers and consumers (SQS, RabbitMQ, Kafka)
- At-least-once delivery
-
Most messaging systems guarantee delivery but may deliver duplicates, requiring idempotent consumers
- Eventual consistency
-
System state converges over time rather than being immediately consistent after each operation
- Event notification
-
Lightweight event signals that something happened; consumers decide whether to act
- Event-carried state transfer
-
Events carry enough data for consumers to process without calling back to the producer
- Choreography vs. orchestration
-
Events can trigger distributed workflows implicitly (choreography) or via a central coordinator (orchestration)
- Key Proponents
-
Gregor Hohpe, Bobby Woolf ("Enterprise Integration Patterns", 2003), Martin Fowler ("What do you mean by Event-Driven?", 2017)
When to Use:
-
Systems requiring loose coupling between components
-
Workloads with asynchronous processing pipelines
-
Architectures that need independent scaling of producers and consumers
-
Distributed systems where components must evolve independently
Related Anchors:
-
Domain-Driven Design - Domain events are a DDD building block
-
Hexagonal Architecture - Message queues as driven adapters
-
Clean Architecture - Events cross architectural boundaries via interfaces
Event Storming according to Alberto Brandolini
Details
- Full Name
-
Event Storming
- Also known as
-
EventStorming (Brandolini)
Core Concepts:
- Domain events on a timeline
-
Model the domain as past-tense domain events (orange stickies) placed left-to-right on a wide wall, reconstructing how the business actually unfolds over time
- The colour notation
-
A fixed sticky vocabulary — orange = Domain Event, blue = Command, yellow = Aggregate, lilac = Policy (reactive "whenever… then…"), green = Read Model, pink = External System, red = Hotspot (conflict, question, assumption)
- Three levels
-
Big Picture (explore the whole domain with all stakeholders), Process Modeling (zoom into one flow: command → event → policy → command), Design Level (aggregates, commands and events detailed enough to drive implementation)
- Pivotal events
-
Events that mark phase transitions or boundaries — strong candidates for bounded context seams
- Hotspots
-
Make conflicts, unknowns and assumptions explicit on the wall instead of glossing over them — they become the agenda
- Chaotic exploration → enforced timeline
-
Everyone adds events in parallel first (diverge), then the group orders and de-duplicates them into a coherent line (converge)
- Key Proponents
-
Alberto Brandolini (first run 2012, "Introducing EventStorming" blog post 2013; Leanpub book, continuously updated)
When to Use:
-
Kicking off a Domain-Driven Design effort — discovering bounded contexts and aggregate boundaries collaboratively
-
Aligning business and engineering on a shared, visual domain model
-
Before deciding on an event-driven or CQRS architecture — discover the events/commands first
-
Reverse Event Storming on legacy systems (well suited to an AI agent): extract state transitions → map to Domain Events → cluster into Aggregates → surface Bounded Contexts
When NOT to Use:
-
Trivial CRUD domains with no meaningful process or business rules
-
Solo modeling where the collaborative, cross-role discovery — the whole point — is absent
Related Anchors:
-
Domain-Driven Design — the vocabulary (aggregates, bounded contexts) Event Storming discovers; often the on-ramp to DDD
-
User Story Mapping — activity-centric mapping vs. event-centric discovery
-
CQRS — commands and read models found on the wall feed a later CQRS decision
-
Event-Driven Architecture — the modeling step that precedes deciding how events are routed
Fallacies of Distributed Computing
Details
- Full Name
-
The Eight Fallacies of Distributed Computing
- Also known as
-
Deutsch’s Fallacies, Fallacies of Networked Computing
Core Concepts:
- The eight false assumptions
-
(1) The network is reliable. (2) Latency is zero. (3) Bandwidth is infinite. (4) The network is secure. (5) Topology doesn’t change. (6) There is one administrator. (7) Transport cost is zero. (8) The network is homogeneous
- Why it matters
-
Each assumption is comfortable in local development and false in production; building on them produces systems that fail under real network conditions
- As an audit checklist
-
Invoke the list to interrogate a distributed design — for each fallacy, ask what happens when the real-world opposite is true (retries, timeouts, backpressure, encryption, service discovery, capacity limits, protocol negotiation)
- Mitigation cues
-
Reliability → retries/idempotency; latency → batching/locality; security → zero-trust; topology → service discovery; homogeneity → explicit contracts and versioning
- Key Proponents
-
L. Peter Deutsch (first seven, Sun Microsystems, c. 1994); James Gosling added the eighth ("the network is homogeneous"); early items credited to Bill Joy and Tom Lyon
When to Use:
-
Reviewing or hardening a distributed/microservice design
-
Writing resilience requirements (timeouts, retries, circuit breakers)
-
Onboarding developers moving from monolith to distributed thinking
-
Post-incident analysis of network-related outages
When NOT to Use:
-
For purely in-process, single-machine logic with no network calls
-
As a substitute for measuring your actual network’s behaviour
Related Anchors:
-
CAP Theorem — the consistency/availability consequence of partitions
-
Event-Driven Architecture — async patterns that assume unreliable networks
-
Hexagonal Architecture — isolating network adapters behind ports
GoM
Details
- Full Name
-
Grundsätze ordnungsmäßiger Modellierung (Principles of Proper Modeling)
- Also known as
-
GoM Principles, Principles of Well-formed Modeling
Core Concepts:
- Correctness (Richtigkeit)
-
The model must accurately reflect the reality it represents — both syntactically (follows notation rules) and semantically (describes the real subject matter truthfully)
- Relevance (Relevanz)
-
A model should include only elements that are relevant to the intended purpose; unnecessary details reduce usability
- Economic Efficiency (Wirtschaftlichkeit)
-
The benefit gained from a model must justify the effort and cost of creating and maintaining it
- Clarity (Klarheit)
-
The model must be understandable to its intended audience; layout, notation, and level of detail must support comprehension
- Comparability (Vergleichbarkeit)
-
Models of the same subject should follow consistent conventions so they can be meaningfully compared
- Systematic Design (Systematischer Aufbau)
-
Models should be constructed using a consistent, structured approach to enable reuse and integration across a model landscape
- Key Proponents
-
Jörg Becker, Michael Rosemann, Rolf Schütte ("Grundsätze ordnungsmäßiger Modellierung", WIRTSCHAFTSINFORMATIK, 1995)
When to Use:
-
Evaluating or reviewing the quality of business process models (BPMN, EPC)
-
Establishing modeling standards within an organization or project
-
Enterprise architecture modeling to ensure consistent, reusable model artifacts
-
ERP implementation projects requiring traceable and auditable process documentation
-
Assessing whether a model is fit for its intended purpose
-
Onboarding teams to structured modeling practices
Related Anchors:
Current Status:
-
The canonical reference is Becker, Rosemann & Schütte, "Grundsätze ordnungsmäßiger Modellierung", Wirtschaftsinformatik 37(5), 1995, pp. 435–445 — no DOI exists; stable records: dblp and the University of Münster publication page
-
The prior is thin: a German-language-only academic paper from the Wirtschaftsinformatik community with virtually no English-language footprint — supply the six principles in the prompt rather than relying on the term
Hexagonal Architecture (Ports & Adapters)
Details
- Also known as
-
Ports and Adapters, Onion Architecture (variant)
Core Concepts:
- Hexagonal structure
-
Core domain at the center, isolated from external concerns
- Ports
-
Interfaces defining how the application communicates
- Adapters
-
Implementations that connect to external systems
- Dependency inversion
-
Dependencies point inward toward the domain
- Technology independence
-
Core logic doesn’t depend on frameworks or infrastructure
- Primary/Driving adapters
-
User interfaces, APIs (inbound)
- Secondary/Driven adapters
-
Databases, message queues (outbound)
- Testability
-
Easy to test core logic in isolation
- Symmetry
-
All external interactions are treated uniformly
- Key Proponent
-
Alistair Cockburn (2005)
When to Use:
-
Applications requiring high testability
-
Systems that need to support multiple interfaces (web, CLI, API)
-
When you want to defer infrastructure decisions
-
Microservices with clear domain boundaries
ISO/IEC 25010
Details
- Full Name
-
ISO/IEC 25010 — Systems and Software Quality Requirements and Evaluation (SQuaRE) — Product Quality Model
- Also known as
-
SQuaRE Quality Model, Software Product Quality Model, ISO 25010
Core Concepts:
- Product Quality Model
-
Eight top-level quality characteristics that describe the quality of a software product: Functional Suitability, Performance Efficiency, Compatibility, Usability, Reliability, Security, Maintainability, and Portability
- Functional Suitability
-
The degree to which the product provides functions that meet stated and implied needs — sub-characteristics: Functional Completeness, Functional Correctness, Functional Appropriateness
- Performance Efficiency
-
How the product achieves its functions relative to the amount of resources used — sub-characteristics: Time Behaviour, Resource Utilisation, Capacity
- Compatibility
-
The ability to exchange information with other products — sub-characteristics: Co-existence, Interoperability
- Usability
-
The degree to which a product can be used to achieve goals effectively, efficiently, and satisfactorily — sub-characteristics: Appropriateness Recognisability, Learnability, Operability, User Error Protection, User Interface Aesthetics, Accessibility
- Reliability
-
The ability of the product to perform its functions under stated conditions for a specified period — sub-characteristics: Maturity, Availability, Fault Tolerance, Recoverability
- Security
-
The degree to which the product protects information and data from unauthorized access — sub-characteristics: Confidentiality, Integrity, Non-repudiation, Accountability, Authenticity
- Maintainability
-
The effectiveness and efficiency with which the product can be modified — sub-characteristics: Modularity, Reusability, Analysability, Modifiability, Testability
- Portability
-
The ability of the product to be transferred from one environment to another — sub-characteristics: Adaptability, Installability, Replaceability
- Quality in Use Model
-
Five characteristics that describe quality from the user’s perspective: Effectiveness, Efficiency, Satisfaction, Freedom from Risk, Context Coverage
- Key Proponents
-
ISO/IEC JTC 1/SC 7 (replaces ISO/IEC 9126)
When to Use:
-
Conducting structured software quality assessments or architecture reviews
-
Communicating quality requirements to diverse stakeholders using a shared vocabulary
-
Defining and prioritizing non-functional requirements at the start of a project
-
Documenting architecture quality goals in arc42 or similar frameworks (e.g., section 10 "Quality Requirements")
-
Evaluating competing architectural approaches using quality attribute scenarios (combined with ATAM)
-
Creating a quality tree or quality scenarios for an architecture documentation
Related Anchors:
Current Status:
-
The eight-characteristic model described above is the 2011 edition — which ISO has withdrawn. The current edition, ISO/IEC 25010:2023, expands the model to nine characteristics: Safety is new, Usability was renamed to Interaction Capability, Portability to Flexibility (free change summary: arc42 Quality Model)
-
Most published material still describes the 2011 model — as of mid-2026 even the English Wikipedia article — so an LLM’s training-data prior for "ISO 25010" most plausibly serves the older eight-characteristic edition
-
Name the edition explicitly ("ISO/IEC 25010:2023") whenever the distinction matters; the bare term will usually resolve to the 2011 model
LASR according to Toth/Zörner
Details
- Full Name
-
LASR – Lightweight Approach for Software Reviews (Stefan Toth & Stefan Zörner)
- Also known as
-
LASR Reviews
Core Concepts:
- A review method
-
LASR is a structured method for efficient software reviews — it uncovers weaknesses in software solutions and challenges technical and architectural ideas. More streamlined than ATAM, but still focused on key quality aspects
- Lean Mission Statement
-
Condense the system’s vision into a short, shared statement as the review’s reference point
- Evaluation Criteria
-
Identify the system’s top quality attributes — the quantified objectives form the review benchmark
- Risk-based Review
-
Identify the most significant risks against those objectives
- Quality-focused Analysis
-
Analyze the controversial gaps (or their absence) in depth
- LASR Result Diagram
-
Quantifies the review: the objectives form a benchmark line, the system assessment a second line — the gaps between them drive the deeper analysis
- Workshop format
-
A moderated, game-like team event (LASR-Cards, templates and checklists as Print & Play material); works with few people, on site or remote, first results within hours
- Community-driven and free
-
Open license, free to use in commercial contexts; supported by embarc
- Key Proponents
-
Stefan Toth & Stefan Zörner ("Reviewing Software Systems", Leanpub, 2023; German edition "Software-Systeme reviewen"); canonical site lasr-reviews.org
When to Use:
-
Reviewing a software system or solution idea when ATAM is too heavyweight
-
Validating an architecture against its most important quality attributes
-
Uncovering and prioritising technical risks with the whole team in a short workshop
-
Establishing a recurring, lightweight review practice
Related Anchors:
-
ATAM — the heavyweight scenario-based evaluation method LASR streamlines
-
arc42 Architecture Documentation — the documentation counterpart; LASR reviews what arc42 documents
-
Quality Attribute Scenario — a rigorous form the evaluation criteria can take
Current Status:
-
The canonical sources are lasr-reviews.org and the book "Reviewing Software Systems" (Toth & Zörner, Leanpub, 2023)
-
The prior is thin — a 2023 self-published method from two German consultants with essentially one community site. LLMs reliably know the name at best, not the method: supply the steps from lasr-reviews.org in the prompt rather than trusting the anchor alone
-
A cautionary tale from this catalog itself: an earlier version of this entry confidently described LASR as a "lightweight architecture documentation template" with an invented acronym expansion — silent substitution on a thin prior, exactly the Use-Case-3.0 failure mode. Corrected against the verified sources in June 2026
Lehman’s Software Classification
Details
- Full Name
-
Lehman’s Classification of Software (S-/P-/E-type) and Laws of Software Evolution
- Also known as
-
SPE Classification, Lehman’s SPE Taxonomy
Core Concepts:
Three software types, classified by their relationship to the real world:
- S-type (Specification)
-
Software whose problem can be fully and formally specified. Correctness is provable against the specification. The world outside the program is irrelevant to its validity. Example: a sorting algorithm, a compiler for a formally defined language.
- P-type (Problem)
-
Software that addresses a real-world problem which cannot be fully specified, only approximated. The specification is a model of the real problem; the solution must be validated against the actual problem, not just the spec. Example: a chess-playing program, a weather forecasting system.
- E-type (Embedded)
-
Software that becomes part of the real world and changes it through its use. This use in turn changes the environment and thereby the requirements — creating a feedback loop. Most business and organizational software is E-type. A "correct" E-type system drifts out of correctness over time even if nothing in it changes.
- Laws of Software Evolution
-
Lehman derived eight laws from observing E-type systems, including Continuing Change (E-type systems must be continually adapted or become progressively less satisfactory), Increasing Complexity (complexity increases unless work is done to reduce it), Self-Regulation, Conservation of Organisational Stability, Conservation of Familiarity, Continuing Growth, Declining Quality, and Feedback System.
- Key Proponents
-
Meir M. Lehman ("Programs, life cycles, and laws of software evolution", Proceedings of the IEEE, 1980); later developed with Laszlo Belady ("Program Evolution: Processes of Software Change", 1985).
When to Use:
-
Explaining why "finished" business software still needs ongoing investment
-
Deciding how much effort to spend on formal specification vs. validation with users
-
Framing requirements discussions — E-type means requirements will keep changing by nature, not by failure
-
Reasoning about why TDD and formal proofs map cleanly onto S-type but are subtler for E-type
-
Estimating maintenance budgets and justifying them to stakeholders
-
Architectural trade-offs: E-type systems need change-friendliness above all
Related Anchors:
-
arc42 - Documentation template well suited for evolving E-type systems
-
Cohesion Criteria - High cohesion reduces the cost of continuing change in E-type systems
MADR
Details
- Full Name
-
Markdown Architectural Decision Records
Core Concepts:
- Structured template
-
Well-defined format with specific sections
- Standard fields
-
-
Title (short noun phrase)
-
Status (proposed, accepted, rejected, deprecated, superseded)
-
Context and Problem Statement
-
Decision Drivers (forces influencing the decision)
-
Considered Options (alternatives evaluated)
-
Decision Outcome (chosen option with justification)
-
Pros and Cons of the Options (trade-off analysis)
-
Links (related decisions, references)
-
- Markdown format
-
Uses standard Markdown for wide compatibility
- Clear structure
-
More detailed than basic ADRs, includes explicit alternatives
- Trade-off documentation
-
Explicitly captures pros/cons of each option
- Version control
-
Stored with code, immutable like other ADRs
- Lightweight yet comprehensive
-
Balances completeness with maintainability
- Key Proponents
-
Oliver Kopp, Olaf Zimmermann (and MADR community)
- Reference
When to Use:
-
When you need more structure than basic ADRs
-
Projects requiring explicit documentation of alternatives
-
Teams that need to justify decisions with detailed trade-offs
-
Organizations using Markdown-based documentation workflows
-
When LLM assistance is needed to generate consistent decision records
-
Complementing arc42 Section 9 (Architecture Decisions)
Current Status:
-
The current release is MADR 4.0.0 (September 2024). The name changed twice along the way: MADR 3.x (2022) renamed "Markdown Architectural Decision Records" to "Markdown Any Decision Records"; 4.0 renamed it back, while keeping the template usable for any decision
-
An LLM’s training-data prior most plausibly reproduces the 2.x-era format (2018–2022, the longest-lived and most widely copied variant): inline
* Status:/* Deciders:/* Date:bullets and split "Positive/Negative Consequences" sections — rather than the current YAML front matter withdecision-makers, the merged "Consequences" section, and the "Confirmation" element introduced in 3.x/4.x -
When the exact format matters, point the model at the current template or paste it into the prompt — the anchor name reliably evokes the concept, but not the current field set
Quality Attribute Scenario
Details
- Full Name
-
Quality Attribute Scenario
- Also known as
-
Quality Scenario, Six-Part Scenario
Core Concepts:
- Purpose
-
Turn a vague quality goal ("the system must be fast") into a concrete, testable statement. A scenario without a measurable response is a wish, not a requirement.
- Six Parts
-
Every scenario is specified through six elements: Source (the entity generating the stimulus), Stimulus (the condition arriving at the system), Artifact (the part of the system stimulated), Environment (the conditions under which it occurs — normal load, overload, startup, degraded mode), Response (the activity that results), Response Measure (the response quantified so the requirement is verifiable).
- Response Measure
-
The decisive part. Without a measure — a latency, a percentile, a throughput, a recovery time — a scenario cannot be tested and is not a requirement.
- General vs. Concrete Scenarios
-
A general scenario is a reusable template for a quality attribute; a concrete scenario instantiates it for one specific system with literal values.
- Relation to Quality Attributes
-
Scenarios make ISO/IEC 25010 characteristics operational — each characteristic (performance efficiency, reliability, security…) is expressed as one or more concrete scenarios.
- Key Proponents
-
Len Bass, Paul Clements, Rick Kazman ("Software Architecture in Practice", SEI / Carnegie Mellon University)
When to Use:
-
Writing arc42 Chapter 10 quality requirements as testable statements rather than adjectives
-
Building an ATAM utility tree, where each leaf is a prioritized concrete scenario
-
Specifying non-functional requirements that QA must later verify
-
Recovering quality requirements from a brownfield codebase — deriving the response measure from a literal threshold, timeout, or budget in the code
Related Anchors:
-
ATAM — uses quality attribute scenarios as the leaves of its utility tree
-
arc42 Architecture Documentation — Chapter 10 quality requirements are expressed as scenarios
-
ISO/IEC 25010 — the quality characteristics that scenarios make concrete
-
EARS Requirements — a comparable discipline of making requirements precise and testable
Tracer Bullet
Details
- Also known as
-
Tracer Bullet Development, Tracer Code
Core Concepts:
- End-to-end but lightweight
-
Build a thin slice that touches all the pieces of the final system — in realtime, on real infrastructure — to see whether your architectural direction lands where you aimed.
- Real ammo, not blanks
-
Unlike a spike or prototype, tracer bullet code is kept and refined. It becomes part of the final system, not throwaway. The distinction: you iterate on it rather than rewrite it.
- Immediate feedback on integration
-
You learn quickly whether your chosen tech stack, service boundaries, and data flow actually work together, not just whether each piece works in isolation.
- Aim, fire, adjust
-
The metaphor is a tracer round in a machine gun — you see where the shot lands in real time and adjust your aim for the next burst. Tracer bullets enable rapid directional correction.
- Not feature-complete
-
The first tracer is deliberately incomplete. One feature, end-to-end, good enough to validate the shape of the solution without committing to full functionality.
- Architecture validation over feature delivery
-
The primary goal is answering "will this architecture work?", not "is this feature done?".
- Iterative refinement
-
Subsequent tracers refine the aim — adjusting interfaces, choosing different libraries, or repositioning service boundaries based on what the first shot revealed.
- Key Proponents
-
Andrew Hunt and David Thomas ("The Pragmatic Programmer", 1999; 20th Anniversary Edition 2019)
When to Use:
-
Unfamiliar technology stacks where integration risk is unknown
-
Complex system boundaries (microservices, event-driven architectures) where interaction patterns are hard to predict
-
Exploratory projects where requirements are still being discovered
-
When architectural commitments need to be validated before scaling the team
-
Projects where early user or stakeholder feedback on the shape of the solution is more valuable than a polished prototype
Related Anchors:
-
Walking Skeleton - Similar end-to-end approach, but production-capable from day one rather than exploratory
-
Spike Solution - Also exploratory, but spikes are throwaway and answer a single question
-
Thin Vertical Slice - Delivery technique that shares the end-to-end philosophy at the feature level
Vertical Slice Architecture (VSA)
Details
- Also known as
-
VSA, Feature Slices
Core Concepts:
- Vertical slices
-
Each feature is organized as an end-to-end slice spanning all layers (request, validation, domain logic, persistence, API)
- Feature cohesion
-
Code for a feature lives together regardless of technical layer
- No horizontal layers
-
Avoids traditional layered architecture (controllers, services, repositories) as primary organizing principle
- CQRS alignment
-
Naturally pairs with Command/Query separation per slice
- Thin shared layer
-
Minimal shared infrastructure; each slice owns its behavior
- Screaming intent
-
Folder/namespace structure reflects features, not technical concerns
- Independent evolution
-
Slices can evolve independently with minimal cross-cutting changes
- Reduced coupling
-
Changes to one feature rarely affect other features
- Key Proponents
-
Jimmy Bogard
When to Use:
-
Applications with many distinct business features
-
When feature teams own end-to-end delivery
-
To reduce merge conflicts in large teams
-
When traditional layered architecture creates too much coupling across features
Related Anchors:
Walking Skeleton
Details
- Also known as
-
Skeleton Architecture, End-to-End Thin Implementation
Core Concepts:
- End-to-end from day one
-
A minimal implementation that touches every architectural layer — UI, application logic, domain, persistence, deployment pipeline — before any significant feature work begins.
- Production-capable
-
Unlike a throwaway prototype, the walking skeleton is real code that can be shipped to production. It passes through CI/CD, runs on target infrastructure, and forms the foundation for subsequent features.
- Minimal functionality, maximum structure
-
A single trivial user journey (one button, one form, one record) is enough. The value is in proving the structure, not the feature set.
- Early risk reduction
-
Integration risks (does the DB driver work in prod? does auth talk to the identity provider? does the deploy pipeline reach the target?) surface on day one instead of week twelve.
- Walking = working
-
"Walking" is the defining verb — the skeleton must move through its full lifecycle (build, deploy, serve a request, return a response, log an event), not just compile.
- Foundation for iteration
-
Once the skeleton walks, adding real features becomes additive work on a known-good structure. No "big bang" integration later.
- Not a prototype
-
A prototype is discarded; a walking skeleton is grown. The distinction matters — prototype code tempts shortcuts that don’t belong in production.
- Key Proponents
-
Alistair Cockburn ("Agile Software Development", 2001); the term originates in his collaboration with Ralph Hodgson
When to Use:
-
Starting a new system where integration between layers carries architectural risk
-
Greenfield projects with unfamiliar tech stacks or deployment targets
-
Validating CI/CD, infrastructure, and cross-team contracts before scaling development
-
Distributed systems where the "it works on my machine" gap is dangerous
-
Any project where the first production deploy should happen early, not late
Related Anchors:
-
Tracer Bullet - Also end-to-end, but exploratory and direction-validating rather than production-capable
-
Thin Vertical Slice - Delivery technique for subsequent features on top of the skeleton
-
Clean Architecture - A common structural target the skeleton can instantiate from day one
-
Hexagonal Architecture - Ports/adapters structure the skeleton naturally exposes
Statistical Methods & Process Monitoring
Control Chart (Shewhart)
Details
- Full Name
-
Shewhart Control Chart
- Also known as
-
Process Control Chart, SPC Chart
Core Concepts:
- Time series diagram
-
Measured value plotted over time
- Centerline (CL)
-
Process mean
- Upper/Lower Control Limit (UCL/LCL)
-
Typically at ±3σ from the mean
- Zones A/B/C
-
Division into 6 areas (each 1σ wide) for pattern recognition
- Common Cause Variation
-
Inherent, random fluctuation of a stable process
- Special Cause Variation
-
Assignable, correctable deviation
- Chart Types
-
-
X-bar Chart: Subgroup means
-
R-Chart: Subgroup ranges
-
I-MR Chart: Individual values and moving range
-
p-Chart: Defect proportions
-
c-Chart: Defect counts per unit
-
- In-Control vs. Out-of-Control
-
Core decision based on rules (Nelson, Western Electric)
- Normal distribution assumption
-
Control limits are based on normally distributed data
- Key Proponent
-
Walter A. Shewhart (1920s, Bell Labs / Western Electric)
- Key Work
-
"Economic Control of Quality of Manufactured Product" (1931)
Relationship to Other Anchors:
- Nelson Rules
-
8 rules for pattern recognition on Control Charts
- SPC
-
Control Charts are the central tool of Statistical Process Control
- Six Sigma
-
Control Charts are used in the Control phase of DMAIC
When to Use:
-
Process monitoring in manufacturing and production
-
Quality assurance using statistical methods
-
Detection of process shifts and trends
-
Foundation for rule-based anomaly detection in time series
-
Conceptual basis — even when different terminology is used in IT monitoring
Nelson Rules
Details
- Full Name
-
Nelson Rules (Tests for Special Causes)
Core Concepts:
-
8 rules for detecting non-random patterns in Control Charts
- Rule 1
-
One point beyond 3σ (Outlier)
- Rule 2
-
9 consecutive points on the same side of the mean (Shift/Bias)
- Rule 3
-
6 consecutive points steadily increasing or decreasing (Trend)
- Rule 4
-
14 points alternating up and down (Oscillation)
- Rule 5
-
2 out of 3 points beyond 2σ on the same side
- Rule 6
-
4 out of 5 points beyond 1σ on the same side
- Rule 7
-
15 points within 1σ (suspiciously low variance)
- Rule 8
-
8 points outside ±1σ, but none beyond ±3σ (systematic oscillation)
- Common Cause vs. Special Cause
-
Distinguishing inherent from assignable variation
- Zones A/B/C
-
Dividing the Control Chart into 6 zones (each 1σ wide)
- False Positive Trade-off
-
More active rules = higher sensitivity, but more false alarms
- Key Proponent
-
Lloyd S. Nelson (1984, Journal of Quality Technology)
Relationship to Other Anchors:
- Control Chart (Shewhart)
-
Nelson Rules are applied to Control Charts
- SPC
-
Nelson Rules are a tool within Statistical Process Control
- Western Electric Rules
-
Predecessor; Nelson Rules extend these with Rules 5-8
When to Use:
-
Detecting non-random patterns in time series data
-
Process monitoring in manufacturing, pharmaceuticals, healthcare
-
Potential application in IT monitoring (memory leaks, performance degradation)
-
Quality assurance in Six Sigma / DMAIC Control Phase
SPC (Statistical Process Control)
Details
- Full Name
-
Statistical Process Control
Core Concepts:
- Process monitoring
-
Systematic statistical monitoring of running processes
- Common Cause Variation
-
Inherent, random fluctuation — stable and predictable
- Special Cause Variation
-
Assignable cause — unstable, correctable
- Control Charts
-
Central visual tool (see dedicated anchor)
- Detection rules
-
Nelson Rules, Western Electric Rules (see dedicated anchors)
- Process Capability
-
Indices Cp, Cpk (short-term) and Pp, Ppk (long-term)
- In-Control
-
Process exhibits only Common Cause Variation
- Out-of-Control
-
Special Cause detected — intervention required
- Continuous Improvement
-
SPC as a foundation for ongoing process improvement
- DMAIC Control Phase
-
SPC tools secure improvements within Six Sigma
- Key Proponents
-
Walter A. Shewhart (founder), W. Edwards Deming (dissemination), Western Electric Company
Relationship to Other Anchors:
- Control Chart (Shewhart)
-
Central tool within SPC
- Nelson Rules
-
Detection rules for Special Causes on Control Charts
- Six Sigma
-
Uses SPC particularly in the Control phase
- Testing Pyramid
-
Conceptual parallel — different levels of quality assurance
When to Use:
-
Monitoring manufacturing and business processes
-
Quality management per ISO 9001, IATF 16949, Six Sigma
-
Pharmaceutical Continuous Process Verification (CPV)
-
Conceptual foundation for anomaly detection in IT systems
-
When the question is: "Is my process stable, or has something changed?"
Strategic Planning
Cynefin Framework
Details
- Full Name
-
Cynefin Framework according to Dave Snowden
- Also known as
-
Cynefin sensemaking framework
Core Concepts:
- Five domains
-
- Clear (formerly "Simple")
-
Best practices apply, sense-categorize-respond
- Complicated
-
Good practices exist, sense-analyze-respond
- Complex
-
Emergent practices, probe-sense-respond
- Chaotic
-
Novel practices needed, act-sense-respond
- Confused (center)
-
Don’t know which domain you’re in
- Domain transitions
-
How situations move between domains
- Safe-to-fail probes
-
Experiments in complex domain
- Complacency risk
-
Moving from clear to chaotic
- Decision-making context
-
Different domains require different approaches
- Facilitation tool
-
Helps teams discuss and categorize challenges
- Key Proponents
-
Dave Snowden (1999)
When to Use:
-
Understanding what type of problem you’re facing
-
Choosing appropriate decision-making approaches
-
Facilitating team discussions about complexity
-
Strategic planning in uncertain environments
Related Anchors:
Decisional Balance Sheet
Details
- Also known as
-
Benjamin Franklin Analysis, Moral Algebra, Pros-and-Cons Sheet
Core Concepts:
- Four-Cell Matrix
-
The full Janis & Mann form has four categories of consequence for each alternative — utilitarian gains/losses for self, utilitarian gains/losses for significant others, self-approval/disapproval, and approval/disapproval from others. Stretches "pros and cons" beyond instrumental outcomes into identity and social cost.
- Simplified Two-Column Form
-
The everyday "pros vs cons" list popularised by Benjamin Franklin (1772 letter to Joseph Priestley). Strictly a degenerate case of the four-cell matrix — useful for quick decisions, lossy for complex ones.
- Weighting
-
Each entry gets a numeric weight reflecting its importance. The decision is not a vote count — the discipline is to make trade-offs explicit, not to mechanise the choice.
- Resolving Ambivalence
-
The artifact’s primary purpose is not arithmetic but surfacing concerns the decider has not yet articulated. Listing the cons of a tempting option, or the pros of the rejected one, breaks the "all pros, no cons" framing that drives impulsive decisions.
- Decisional Conflict
-
Janis & Mann’s parent theory; high-stakes decisions produce stress that distorts judgment. The balance sheet is one of several debiasing techniques alongside vigilant information search and contingency planning.
- Motivational Interviewing Variant
-
In the Prochaska–DiClemente Stages of Change model and Miller & Rollnick’s Motivational Interviewing, the balance sheet is used to elicit change-talk: the client says the cons of staying the same and the pros of changing — moving them through ambivalence rather than persuading them.
- Limits
-
The model is deliberative, not intuitive. It works poorly under time pressure and for decisions dominated by uncertainty (where Pugh Matrix or scenario-based methods fit better). It also doesn’t surface options that aren’t on the list — separate from the option-generation step.
- Key Proponents
-
Irving Janis & Leon Mann ("Decision Making: A Psychological Analysis of Conflict, Choice, and Commitment", 1977 — the formal four-cell model). Benjamin Franklin (1772 letter, "moral algebra" — the informal pros/cons ancestor). William R. Miller & Stephen Rollnick ("Motivational Interviewing", 1991) for the clinical adaptation.
- Historical Context
-
Franklin’s pros/cons letter is one of the earliest documented decision-aid techniques in the Western tradition. Janis & Mann turned it into a research instrument in the 1970s; the simplified two-column form has spread through self-help, coaching, and Motivational Interviewing into mainstream use. Now a staple of decision coaching, financial advisory, and health-behaviour-change interventions.
When to Use:
-
Personal or career decisions where the alternatives are roughly comparable and the deciding factor is the decider’s own clarity
-
Coaching conversations where the client is stuck in ambivalence — the four-cell version surfaces concerns the simple pros/cons list misses
-
Pre-mortem variant: pre-listing the "approval/disapproval from others" cell often predicts political resistance the team forgot to address
-
Motivational Interviewing settings — health behaviour, addiction recovery, career changes
-
Decision documentation in low-formality contexts where a full ADR is overkill but "we considered the alternatives" must be visible
Related Anchors:
-
Pugh Matrix — scores alternatives against weighted criteria; complement when uncertainty or technical trade-offs dominate over personal/social cost
-
ADR according to Nygard — captures architecture decisions with Context/Decision/Consequences; the balance sheet feeds the Consequences section
-
MoSCoW — prioritisation among items chosen after the decision is made; the balance sheet helps decide whether to do the work at all
Goodhart’s Law
Details
- Full Name
-
Goodhart’s Law
- Also known as
-
"When a measure becomes a target, it ceases to be a good measure" (Strathern’s formulation)
Core Concepts:
- The core claim
-
Once a metric is used as a target and tied to incentives, people optimize the metric rather than the underlying goal, so the metric stops reflecting what it once measured
- Proxy vs. goal
-
Most metrics are proxies for a goal that is hard to measure directly; pressure on the proxy widens the gap between proxy and goal
- Gaming and side effects
-
Targets invite gaming, narrow focus, and surrogation — chasing the number while the real objective degrades (e.g. test coverage % vs. actual test quality)
- Mitigations
-
Use baskets of balanced/counter metrics, keep some measures for learning rather than targets, pair quantitative with qualitative signals, and revisit metrics as behaviour adapts
- Relevance to this project
-
A direct lens for designing LLM-evaluation criteria and KPIs — guard against optimizing a score instead of the capability it stands for
- Key Proponents
-
Charles Goodhart (1975, monetary-policy context); pithy general formulation by Marilyn Strathern (1997); related to Campbell’s Law
When to Use:
-
Designing KPIs, OKRs, or team performance metrics
-
Reviewing whether a metric is being gamed or has surrogated the goal
-
Defining evaluation criteria for models, quality, or productivity
-
Arguing for balanced/counter metrics instead of a single target
When NOT to Use:
-
As a blanket excuse to avoid measurement altogether — metrics still inform
-
For purely descriptive measures that carry no incentive or target
Related Anchors:
-
LLM-Evaluations — guarding eval criteria against metric-gaming
-
Decisional Balance Sheet — weighing trade-offs beyond a single number
-
Kano Model — qualitative signal alongside quantitative targets
Hoshin Kanri
Details
- Full Name
-
Hoshin Kanri (方針管理 — "direction management")
- Also known as
-
Policy Deployment, Strategy Deployment, Hoshin Planning
Core Concepts:
- True North
-
The 3-5 year breakthrough objectives that define where the organization must be — chosen sparingly so the whole company can pull in the same direction.
- Annual Hoshin
-
The 1-year priorities derived from True North. Typically 3-5 organization-wide goals; everything else is "business as usual" and not on the hoshin.
- X-Matrix
-
Single-page A3 artifact that links four legs — long-term strategy, annual objectives, improvement priorities, and metrics/targets — plus the accountable owners. Correlations between legs are made explicit with symbols (strong/medium/weak).
- Catchball
-
Iterative two-way negotiation of goals between levels. Leadership proposes targets; teams respond with "what’s possible and what’s needed"; the ball passes back and forth until commitments are realistic and ambitious. Distinguishes Hoshin Kanri from top-down cascades.
- PDCA for Strategy
-
Plan-Do-Check-Act applied to the annual hoshin itself — monthly or quarterly check reviews ensure the strategy adapts to reality, not just the tactics.
- Cascade and Alignment
-
Each level translates the level above into its own X-Matrix. Vertical alignment is verified at every step; horizontal alignment is verified across peer teams to prevent local optimization.
- Bowling Chart / Hoshin Review
-
Monthly status board comparing actual vs target for each KPI; red/yellow/green status forces conversations about countermeasures rather than excuses.
- Few Vital, Not Many Trivial
-
A core discipline — restrict the hoshin to the small number of goals that require breakthrough thinking. Most organizational work continues outside the hoshin process.
- Key Proponents
-
Yoji Akao ("Hoshin Kanri: Policy Deployment for Successful TQM", 1991), Thomas L. Jackson ("Hoshin Kanri for the Lean Enterprise", 2006), Pascal Dennis ("Getting the Right Things Done", 2006)
- Historical Context
-
Emerged in Japanese manufacturing in the 1960s; Bridgestone Tire is widely credited with the first formalized use after winning the Deming Prize. Spread through Toyota, Komatsu, and the broader TQM movement; translated to Western practice in the 1980s as part of Lean. Now widely adopted in Lean enterprises, healthcare systems (Virginia Mason), and increasingly in scaled agile contexts.
When to Use:
-
Annual or multi-year strategic planning when alignment across many teams is the critical risk
-
Translating a vision or mission into measurable, accountable work
-
Scaling an organization where local optimization is starting to dominate over global goals
-
Lean transformations — Hoshin Kanri is the strategy-layer counterpart to Kaizen at the operational layer
-
As an alternative to OKRs when the organization needs explicit cause-and-effect links and stronger accountability than quarterly self-set objectives provide
Related Anchors:
-
Kotter’s 8-Step Change Model — large-scale transformation framework; Hoshin Kanri is the recurring discipline that operationalizes a Kotter-style vision year after year
-
MoSCoW — tactical prioritization within the hoshin’s improvement priorities
-
Kano Model — feature classification that often feeds the customer-facing leg of the X-Matrix
Impact Mapping
Details
- Full Name
-
Impact Mapping according to Gojko Adzic
Core Concepts:
- Four levels
-
Goal → Actors → Impacts → Deliverables
- Goal
-
Business objective (Why?)
- Actors
-
Who can produce or prevent desired impact? (Who?)
- Impacts
-
How can actors' behavior change? (How?)
- Deliverables
-
What can we build? (What?)
- Visual mapping
-
Mind-map style collaborative diagram
- Assumption testing
-
Make assumptions explicit
- Scope management
-
Prevent scope creep by linking to goals
- Roadmap alternative
-
Goal-oriented rather than feature-oriented
- Key Proponent
-
Gojko Adzic ("Impact Mapping", 2012)
When to Use:
-
Strategic planning for products or projects
-
When stakeholders disagree on priorities
-
Aligning delivery with business outcomes
-
Avoiding building features that don’t serve business goals
Jobs To Be Done (JTBD)
Details
- Full Name
-
Jobs To Be Done Framework (Christensen interpretation)
Core Concepts:
- Job definition
-
Progress people want to make in a particular context
- Functional job
-
Practical task to accomplish
- Emotional job
-
How people want to feel
- Social job
-
How people want to be perceived
- Hire and fire
-
Customers "hire" products to do a job, "fire" when inadequate
- Context matters
-
Jobs exist in specific circumstances
- Competition redefined
-
Anything solving the same job is competition
- Innovation opportunities
-
Unmet jobs or poorly served jobs
- Job stories
-
Alternative to user stories focusing on context and motivation
- Key Proponents
-
Clayton Christensen, Alan Klement, Bob Moesta
When to Use:
-
Product discovery and innovation
-
Understanding why customers choose solutions
-
Identifying true competition
-
Writing more meaningful user stories
-
Market segmentation based on jobs, not demographics
Criticism:
-
Two schools claim the same term: Alan Klement documents in "Know the Two — Very — Different Interpretations of Jobs to be Done" that Christensen/Moesta’s Jobs-as-Progress and Ulwick’s Jobs-as-Activities (Outcome-Driven Innovation) are incompatible interpretations that confuse practitioners
-
Even the origin is contested: Ulwick’s Strategyn states that "JTBD was created by Tony Ulwick in 1990" and merely popularized by Christensen ("Know Your Customers' 'Jobs to Be Done'", HBR 2016)
-
The bare acronym therefore activates two conflicting priors — say "JTBD (Christensen, jobs as progress)" or "JTBD (Ulwick, Outcome-Driven Innovation)"; this anchor’s full name carries the Christensen qualifier for exactly that reason
Kano Model
Details
- Also known as
-
Kano Analysis, Kano-Modell, Customer Satisfaction Model
Core Concepts:
- Two-dimensional Quality
-
Customer satisfaction is not the simple inverse of dissatisfaction — they are two separate axes (presence/absence of a feature × resulting satisfaction)
- Five Feature Categories
-
Every feature falls into one of five classes that map differently onto the satisfaction curve
- Must-be (Basic, Threshold)
-
Expected baseline — absence causes strong dissatisfaction, presence is taken for granted and earns no credit (e.g., car has wheels, app does not lose data)
- One-dimensional (Performance, Linear)
-
Satisfaction grows roughly linearly with how well the feature is delivered (e.g., fuel efficiency, response time, battery life)
- Attractive (Excitement, Delighter)
-
Unexpected — absence causes no dissatisfaction, presence delights and differentiates (e.g., a thoughtful onboarding gesture, a surprising shortcut)
- Indifferent
-
Customer does not care either way — flag for cost reduction
- Reverse
-
Presence actually causes dissatisfaction for the target segment — flag for removal or segmentation
- Functional / Dysfunctional Questionnaire
-
For each candidate feature, ask the user two paired questions: "How would you feel if this feature were present?" and "How would you feel if it were absent?". The cross-tab of answers maps the feature to one of the five categories
- Time Decay
-
Categories migrate over time. Today’s Delighter becomes tomorrow’s Performer and eventually a Must-be as the market matures (mobile camera, HTTPS, dark mode)
- Key Proponent
-
Noriaki Kano (Tokyo University of Science), originally published in 1984 in the Japanese journal Hinshitsu ("Quality")
- Historical Context
-
Developed in the context of Japanese quality management, alongside Total Quality Management and the Kaizen movement; widely adopted in product management, UX research, and requirements engineering since the late 1990s.
When to Use:
-
Prioritising features in a product backlog beyond raw business value
-
Distinguishing the "non-negotiables" (Must-be) from the "wow features" (Delighter) before estimation
-
User research where you need to understand why a feature affects satisfaction, not just whether users like it
-
MVP scoping: ensure all Must-be features are covered before investing in Delighters
-
Product strategy reviews: spot Delighters that have decayed into Performers or Must-be and update positioning
-
Combining with MoSCoW Method — Must-be → Must, Performance → Should, Delighter → Could
Related Anchors:
-
MoSCoW Method — complementary prioritisation lens (organisation-driven), often combined with Kano (customer-driven)
-
Jobs To Be Done — discovery side: what job is the customer hiring the feature for, before classifying its impact
-
EARS Requirements — once a feature is classified as Must-be, EARS gives it the unambiguous wording
- Counter-example
-
Pure ROI-based ranking — useful but blind to the asymmetry between dissatisfaction (Must-be) and delight (Attractive). Kano corrects that.
Kotter’s 8-Step Change Model
Details
- Also known as
-
Kotter’s 8 Steps for Leading Change, Kotter’s Change Process
Core Concepts:
- Step 1 — Establish a Sense of Urgency
-
Surface the threats and opportunities that make change necessary now; without urgency, the organisation defaults to the status quo
- Step 2 — Form a Guiding Coalition
-
Assemble a powerful enough cross-functional group with the credibility, authority and energy to lead the effort; lone champions fail
- Step 3 — Develop a Vision and Strategy
-
Create a clear, compelling vision of the future state and a strategy to reach it; the vision must be simple enough to communicate in five minutes
- Step 4 — Communicate the Change Vision
-
Use every channel and repeat the vision constantly; walk the talk — leadership behaviour speaks louder than memos
- Step 5 — Empower Broad-based Action
-
Remove the obstacles that block change — outdated structures, misaligned incentives, fearful middle management; enable people to act on the vision
- Step 6 — Generate Short-term Wins
-
Plan, create and visibly celebrate quick, unambiguous improvements within 6–18 months; wins fund credibility and silence sceptics
- Step 7 — Consolidate Gains and Produce More Change
-
Use the credibility from short-term wins to tackle bigger systems, structures and policies; do not declare victory too early
- Step 8 — Anchor the Changes in Corporate Culture
-
Make the new approaches "the way we do things around here" by tying them to leadership succession, hiring, onboarding and storytelling
- The 8 Errors
-
The model is the inversion of the eight common errors Kotter identified in failed transformations: complacency, no powerful coalition, underestimating vision, undercommunicating, ignoring obstacles, no short-term wins, premature victory, and not anchoring change in culture
- Linear but Iterative
-
Kotter presents the steps as sequential because each step builds on the credibility and infrastructure of the previous ones, but in practice teams loop within and across steps as the change scales
- Key Proponent
-
John P. Kotter (Harvard Business School), introduced in the 1995 Harvard Business Review article "Leading Change: Why Transformation Efforts Fail" and expanded in the 1996 book Leading Change (Harvard Business Press)
- Historical Context
-
One of the most cited change management frameworks in business literature; widely used in M&A integrations, digital transformations, agile rollouts and culture change programmes; later complemented by Kotter’s 2014 Accelerate (XLR8), which adds a "dual operating system" of hierarchy plus network for continuous change
When to Use:
-
Planning a non-trivial organisational change (digital transformation, agile rollout, restructuring, M&A integration)
-
Diagnosing why a stalled transformation is stalled — which of the 8 errors is biting?
-
Sequencing communication and intervention activities so that quick wins land before the political resistance forms
-
Stakeholder analysis and coalition building before kicking off a change initiative
-
Reviewing whether a "completed" change is actually anchored in culture, or just a temporary policy
Related Anchors:
-
SWOT — strategic analysis to feed the urgency and vision steps
-
Cynefin Framework — choose the right approach (Clear / Complicated / Complex / Chaotic) for the kind of change you face
-
Wardley Mapping — visualise where change is needed in the value chain before defining the vision
- Counter-example
-
Pure top-down mandate ("from Monday we will be agile") — Kotter’s whole point is that without urgency, coalition, vision and short-term wins, the mandate produces compliance theatre, not change.
Criticism:
-
No empirical validation of the whole model: Appelbaum, Habashy, Malo & Shafiq, "Back to the future: revisiting Kotter’s 1996 change model" (Journal of Management Development 31(8), 2012) reviewed 15 years of literature — support for most individual steps, but no formal study validating the model as a whole; its popularity "appears to derive more from its direct and usable format than from any scientific consensus on the results"
-
The evidence base of n-step change models in general is thin: Rune Todnem By, "Organisational change management: A critical review" (Journal of Change Management 5(4), 2005) finds planned, step-based approaches — of which Kotter’s is the best-known — "often contradictory, mostly lacking empirical evidence and supported by unchallenged hypotheses"
-
Kotter’s own revision concedes the linearity: his organization describes the original as "the linear 8 Step" that he evolved into the 8 Accelerators of Accelerate (2014; based on "Accelerate!", HBR 2012) with a "dual operating system" — an agile network running alongside the hierarchy
Meaningful Human Control (MHC)
Details
- Full Name
-
Meaningful Human Control
- Also known as
-
MHC, Meaningful Human Control over Individual Attacks
Core Concepts:
- Substantive human control
-
Humans must retain genuine, substantive control over autonomous systems making high-stakes decisions — not merely formulaic "human-in-the-loop" oversight
- Situational awareness
-
Human operators require adequate information about the target, context, weapon/system behavior, and foreseeable effects to make informed judgments
- Accountability chain
-
Those responsible for assessing information and executing actions must be clearly identifiable and accountable for outcomes; accountability cannot be transferred to machines
- Sharkey’s five levels
-
Operational framework for human supervisory control: (L1) human deliberates before attack → (L2) program suggests targets, human chooses → (L3) program selects, human approves → (L4) program acts, human has restricted veto → (L5) fully autonomous without human involvement
- Positive human action
-
Initiating critical actions (especially use of force) requires affirmative human authorization, not merely passive monitoring
- Predictable, reliable, transparent technology
-
Autonomous systems must be designed for predictability, graceful degradation, and transparency to enable meaningful control
- Timely intervention
-
Human operators must retain the capability for timely intervention, override, or abort — not just pre-programmed constraints
- Key Proponents
-
Article 36 (coined the term, 2013), Noel Sharkey (five-level framework, 2014), ICRC (endorsed MHC as legal/ethical requirement, 2018), UN CCW GGE (Guiding Principles, 2019), IEEE Global Initiative (Ethically Aligned Design, 2019)
When to Use:
-
Designing or evaluating autonomous systems in high-stakes domains (weapons systems, medical AI, autonomous driving, critical infrastructure)
-
Assessing whether human oversight of an AI system is genuinely effective or merely procedural
-
Defining accountability chains for autonomous decision-making
-
Requirements engineering for systems with autonomy in critical functions
-
AI governance and ethics discussions in product management and policy
-
Legal and compliance review of AI systems under emerging regulations (EU AI Act)
When NOT to Use:
-
Low-stakes automation decisions (content recommendations, spam filtering, routine data processing)
-
As a substitute for domain-specific legal requirements (IHL, medical device regulation, data protection law)
Related Anchors:
Quality Criteria Checklist (Tier-2 Justification)
This anchor is classified as Tier 2 — Needs qualification. It is not self-standing; it requires domain context and explicit verification criteria to be meaningfully applied. The following checklist documents the qualification requirements mapped to Issue #540.
-
Acceptance Criteria (measurable)
-
High-stakes domain identified: yes/no — specify domain (weapons, medical, autonomous driving, critical infrastructure, algorithmic sentencing)
-
Autonomy level classified: yes/no — specify Sharkey level (L1–L5) for each critical function
-
Human operator identified: yes/no — specify role, training level, and decision authority
-
Accountability chain documented: yes/no — specify who decides, who approves, who audits
-
Legal/regulatory framework identified: yes/no — specify applicable law (IHL, EU AI Act, GDPR, etc.)
-
-
Evidence Types Required
-
System specification documenting autonomy boundaries and human-machine interaction points
-
Operator training and qualification records
-
Audit trail design demonstrating human accountability at each decision point
-
Risk assessment showing residual risks after human oversight measures
-
Legal review confirming compliance with applicable regulatory framework
-
-
Minimum Documentation / Artifacts
-
Human-Machine Interface (HMI) specification with override and abort mechanisms
-
Decision authority matrix (who decides what, under what conditions)
-
Operator situational awareness requirements (information feed, latency, decision time)
-
Graceful degradation protocol for communication loss or system failure
-
Test protocol validating human intervention capability under operational conditions
-
-
Validation Methods
-
Simulated scenario testing with time-pressure and information-degradation conditions
-
Red-team evaluation of human-override effectiveness
-
Independent audit of accountability chain completeness
-
Legal review against applicable IHL or regulatory requirements
-
Post-deployment monitoring plan for measuring MHC erosion over time
-
-
Tier-2 Justification Summary
-
Why not Tier 3: MHC cannot be evaluated without domain-specific context (weapons vs. medical vs. automotive). The same system may satisfy MHC in one domain and fail in another. Sharkey level L3 may be sufficient for cargo ships but not for lethal targeting.
-
Why not Tier 1: MHC is a well-established, multi-source concept with clear definition, consistent usage across domains, attributable origin, and rich conceptual activation.
-
Qualification path: To apply MHC, the user must answer: "Who controls what, with what information, under what constraints, and who is accountable?" The five criteria above operationalize this question.
-
Current Status:
-
The canonical reference is Santoni de Sio & van den Hoven, "Meaningful Human Control over Autonomous Systems: A Philosophical Account" (Frontiers in Robotics and AI, 2018), proposing the "tracking" and "tracing" conditions
-
The prior is thin: an academic-only footprint anchored in one open-access philosophy paper (TU Delft ethics group) and a niche AI-ethics literature, with little practitioner coverage — supply the tracking/tracing definitions in the prompt when precision matters
Minimum Viable Product (MVP)
Details
- Full Name
-
Minimum Viable Product
- Also known as
-
MVP, Lean Startup MVP
Core Concepts:
- Smallest thing that tests a hypothesis
-
An MVP is the minimum product that allows a team to learn whether a specific hypothesis about user needs is valid — with the least amount of effort.
- Validated learning is the output
-
The defining output is not a feature set, not revenue, not users — it is learning. "Did we learn whether our hypothesis is true?" is the only success criterion.
- One hypothesis at a time
-
An MVP targets a single, falsifiable hypothesis ("users will pay for X", "users need feature Y more than feature Z"). Bundling hypotheses into one MVP makes the learning ambiguous.
- Minimum means minimum
-
If a hand-drawn mockup, a landing page, or a concierge service can test the hypothesis, that is the MVP. Code is often not required. The "P" stands for product, but the product can be an illusion.
- Build-measure-learn loop
-
The MVP is the first turn of a tight feedback cycle: build a minimal thing, measure how real users respond, learn from the data, then decide whether to pivot or persevere.
- Not a small v1
-
A common misuse is calling the first release of a polished product "the MVP". A real MVP would be embarrassing to ship in production — its job is learning, not market entry.
- Pivot or persevere
-
The MVP gives you the evidence to choose: continue in the same direction (persevere) or change course based on what you learned (pivot).
- Distinct from Walking Skeleton
-
A Walking Skeleton validates architecture; an MVP validates market demand. You can have one without the other.
- Key Proponents
-
Eric Ries ("The Lean Startup", 2011); Frank Robinson coined the term in 2001
When to Use:
-
Validating whether a new product or feature solves a real user problem before investing in full development
-
Testing pricing, positioning, or target-segment hypotheses with minimal risk
-
Early-stage startups with limited runway who cannot afford to build the wrong thing
-
Internal product experimentation where feature ideas need evidence before prioritization
-
LLM prompting: "design an MVP for X" signals test the hypothesis, don’t ship a complete product
Related Anchors:
-
Jobs to be Done - Framework for articulating the user need an MVP is trying to validate
-
Impact Mapping - Technique for aligning MVP scope with business outcomes
-
User Story Mapping - Visual tool for identifying the minimum set of stories for an MVP
-
Walking Skeleton - Architectural counterpart; validates structure rather than market demand
Criticism:
-
The term is diluted in practice: Nielsen Norman Group (Sara Paul, "Minimum Viable Product (MVP): Definition") notes that "'MVP' often means different things to different people" — from paper prototype to released product — and advises defining what you are testing and what you expect to learn before using the word
-
Henrik Kniberg’s widely cited corrective "Making sense of MVP — and why I prefer Earliest Testable/Usable/Lovable" (Crisp, 2016 — the skateboard→car drawing) argues "Minimum" and "Product" mislead teams into shipping useless fragments; each increment should be a smaller complete solution to the user’s need, not a piece of the final one
-
Disambiguation advice: state which sense you mean — Ries’s learning vehicle ("maximum validated learning for least effort") or Kniberg’s Earliest Testable/Usable/Lovable staging — rather than relying on the bare acronym
PERT
Details
- Full Name
-
Program Evaluation and Review Technique
- Also known as
-
Three-Point Estimation, PERT Network Analysis
Core Concepts:
- Three-Time Estimation
-
Each activity requires three duration estimates: Optimistic (O) — best case if everything goes well; Most Likely (M) — realistic expected duration; Pessimistic (P) — worst case if problems arise
- PERT Formula
-
Weighted average: E = (O + 4M + P) / 6 — weights the most likely estimate four times more than the extreme estimates
- Standard Deviation
-
σ = (P − O) / 6 — quantifies schedule uncertainty per activity; used to calculate confidence intervals for the project completion date
- Network Diagram
-
Activities are represented as nodes or arrows in a directed acyclic graph; dependencies between activities are modelled explicitly
- Critical Path
-
The longest path through the network determines the minimum project duration; any delay on the critical path delays the whole project
- Float / Slack
-
Time an activity can be delayed without affecting the project end date; activities on the critical path have zero float
- Probabilistic Scheduling
-
Unlike CPM (which uses single-point estimates), PERT treats duration as a random variable, enabling statistical confidence ranges for milestones
- Origin
-
Developed in 1958 by D.G. Malcolm, J.H. Roseboom, C.E. Clark, and W. Fazar at Booz Allen Hamilton for the US Navy’s Polaris submarine missile programme
- Key Proponents
-
D.G. Malcolm, J.H. Roseboom, C.E. Clark, W. Fazar ("Application of a Technique for Research and Development Program Evaluation", 1959)
When to Use:
-
Estimating effort and schedule for projects with significant uncertainty
-
Planning R&D, software development, or any novel work where duration is hard to predict
-
Communicating schedule risk and confidence levels to stakeholders
-
Identifying the critical path to focus risk management and resource allocation
-
Complementing Story Points or T-shirt sizing with a probabilistic time dimension
Related Anchors:
Pugh-Matrix
Details
- Full Name
-
Pugh Decision Matrix (also Pugh Controlled Convergence)
Core Concepts:
- Matrix layout
-
Criteria as ROWS, alternatives as COLUMNS
- Reference (baseline)
-
One alternative is designated as reference — scored entirely as 0/S
- Relative scoring
-
Each alternative rated against the reference: Better (+), Same (S), Worse (−)
- Summary rows
-
Σ(+), Σ(−), Σ(S), and Net Score per alternative at bottom of matrix
- Structured evaluation
-
Systematic comparison across multiple dimensions
- Team decision-making
-
Facilitates group consensus
- Hybrid solutions
-
Combine strengths of different alternatives
- Iterative refinement
-
Multiple rounds to converge on best solution
- Key Proponent
-
Stuart Pugh ("Total Design", 1991)
Variants (use as qualifier for consistent results):
- Unweighted 3-Point Pugh Matrix
-
Original form. Default when no qualifier is given.
- Weighted 3-Point Pugh Matrix
-
Criteria carry importance weights. Standard in Six Sigma / QFD contexts.
- Weighted 5-Point Pugh Matrix
-
Finer granularity for closely ranked alternatives.
- Pugh Controlled Convergence
-
Iterative multi-round process with elimination, hybrid creation, and reference rotation.
When to Use:
-
Multiple viable alternatives exist
-
Decision criteria are known but trade-offs are unclear
-
Team needs to reach consensus
-
Architecture or technology selection decisions
SWOT
Details
- Full Name
-
SWOT Analysis
- Also known as
-
SWOT Matrix, TOWS Analysis
Core Concepts:
SWOT = Strengths / Weaknesses / Opportunities / Threats
- Strengths
-
Internal positive attributes and resources that give the subject an advantage over others
- Weaknesses
-
Internal negative attributes or limitations that place the subject at a disadvantage relative to others
- Opportunities
-
External factors or trends that the subject could exploit to its advantage
- Threats
-
External factors or conditions that could cause problems or jeopardise the subject’s success
- Internal vs. External
-
Strengths and Weaknesses are internal (within control); Opportunities and Threats are external (environmental)
- Present vs. Future orientation
-
Strengths and Weaknesses reflect the current state; Opportunities and Threats look toward future conditions
- TOWS variant
-
Systematic derivation of strategies by cross-referencing SWOT quadrants (SO, ST, WO, WT strategies)
- Key Proponent
-
Albert Humphrey (Stanford Research Institute, 1960s–1970s)
When to Use:
-
Strategic planning for a product, project, organisation, or technology choice
-
Competitive analysis to understand market positioning
-
Evaluating an architectural or technology decision holistically
-
Team retrospectives to assess current state before planning next steps
-
Business case preparation and stakeholder communication
Related Anchors:
Criticism:
-
Hill & Westbrook, "SWOT Analysis: It’s Time for a Product Recall" (Long Range Planning, 1997) — in a study of 20 companies, SWOT produced long, vague, unweighted bullet lists that were never verified and never used in the subsequent strategy process
-
Criticized as a static snapshot: no prioritisation, no probability or impact weighting, and no built-in step from analysis to action — the TOWS variant exists precisely to patch this gap
-
Alternatives named in the discourse: structured option evaluation (e.g. Pugh Matrix) and evolution-aware positioning (Wardley Mapping) where SWOT’s four static quadrants fall short
Wardley Mapping
Details
Core Concepts:
- Value chain
-
Map components from user needs down
- Evolution axis
-
Genesis → Custom → Product → Commodity
- Movement
-
Components naturally evolve over time
- Situational awareness
-
Understanding the landscape before deciding
- Gameplay patterns
-
Common strategic moves
- Climatic patterns
-
Forces that affect all players
- Doctrine
-
Universal principles of good strategy
- Inertia
-
Resistance to change in organizations
- Strategic planning
-
Visual approach to strategy
- Build-Buy-Partner decisions
-
Based on evolution stage
- Key Proponent
-
Simon Wardley
When to Use:
-
Strategic technology planning
-
Build vs. buy decisions
-
Understanding competitive landscape
-
Communicating strategy visually
-
Identifying opportunities for disruption
Testing & Quality Practices
BDD (Behavior-Driven Development)
Details
- Also known as
-
Specification by Example, Executable Specifications
Core Concepts:
- Given-When-Then
-
Structured scenario format — Given a precondition, When an action occurs, Then an expected outcome results
- Specification by Example
-
Concrete examples as executable specifications that define system behavior
- Three Amigos
-
Collaborative discovery sessions between developer, tester, and business representative
- Gherkin syntax
-
Domain-specific language for writing human-readable, machine-executable scenarios
- Living documentation
-
Tests that serve as always-current system documentation
- Outside-in specification
-
Start from desired business behavior, work inward to implementation
- Ubiquitous language
-
Shared vocabulary bridging technical and business stakeholders in scenarios
- Discovery workshops
-
Structured conversations to uncover requirements through examples before implementation
- Key Proponent
-
Dan North ("Introducing BDD", 2006), creator of JBehave which influenced Cucumber’s design (Cucumber created by Aslak Hellesøy, 2008)
When to Use:
-
Cross-functional teams needing shared understanding of requirements
-
Systems where business rules are complex and need clear documentation
-
Projects requiring executable acceptance criteria
-
Bridging communication gaps between technical and non-technical stakeholders
Related Anchors:
-
TDD, London School - Outside-in development approach that complements BDD
-
TDD, Chicago School - Developer-focused TDD practice
-
User Story Mapping - Requirements discovery that feeds BDD scenarios
Fagan Inspection
Details
- Also known as
-
Formal Code Inspection, Software Inspection, Fagan’s Inspection Method
Core Concepts:
- Formal inspection process
-
A structured, multi-phase review process for software artifacts (requirements, design, code) with defined roles and entry/exit criteria
- Roles
-
Moderator (facilitates and logs), Author (created the artifact), Inspectors (reviewers), Recorder (documents defects)
- Six phases
-
Planning → Overview → Preparation → Inspection Meeting → Rework → Follow-up
- Entry and exit criteria
-
Explicit conditions that must be met before entering and leaving each phase, preventing premature progression
- Defect classification
-
Defects are categorized by type (missing, wrong, extra) and severity, enabling process improvement through causal analysis
- Metrics-driven
-
Inspection data (defect rate, inspection rate) are collected and used to improve both the product and the inspection process itself
- Key Proponents
-
Michael Fagan ("Design and Code Inspections to Reduce Errors in Program Development", IBM Systems Journal, 1976)
When to Use:
-
Safety-critical or high-assurance software where defect escape is costly
-
Reviewing requirements, architecture, design, or code artifacts early in development
-
Establishing a culture of quality and shared code ownership in teams
-
When you want measurable, process-level quality improvement over time
-
Regulated environments (medical devices, avionics, finance) requiring documented review evidence
Related Anchors:
Current Status:
-
The definition is intact and unchanged since Fagan’s 1976 paper (IBM Systems Journal 15(3)): a formal, multi-role inspection with defined phases and measured defect data
-
The formal meeting-based inspection is rarely practiced today; asynchronous, tool-based pull-request review has largely replaced it — a documented shift with its own trade-offs: modern review finds fewer defects per hour of rigor but adds knowledge transfer and team awareness (Bacchelli & Bird, "Expectations, Outcomes, and Challenges of Modern Code Review", ICSE 2013; Rigby & Bird, FSE 2013)
Gherkin
Details
- Also known as
-
Cucumber DSL, BDD Scenario Language
Core Concepts:
- Feature
-
Top-level description of a software capability, grouping related scenarios that describe expected behavior
- Scenario
-
A concrete example of how the system should behave in a specific situation, written as a sequence of steps
- Given-When-Then steps
-
Structured step types — Given establishes preconditions, When describes an action, Then asserts the expected outcome; And/But extend any step type
- Background
-
A set of steps shared across all scenarios in a feature file, executed before each scenario
- Scenario Outline / Examples
-
Parameterized scenario template with a data table, allowing the same behavior to be tested with multiple input sets
- Docstrings and Data Tables
-
Inline multi-line strings and tabular data attached to steps for richer input specification
- Natural language support
-
Gherkin keywords are translated into 70+ human languages, enabling non-English teams to write scenarios in their native language
- Human-readable and machine-executable
-
Scenarios serve as both documentation for stakeholders and executable tests driven by step definitions in the implementation language
- Key Proponent
-
Aslak Hellesøy (creator of Cucumber and the Gherkin language, 2008); influenced by Dan North’s BDD and JBehave
When to Use:
-
Defining acceptance criteria collaboratively between developers, testers, and business stakeholders
-
Creating living documentation that stays synchronized with the system’s behavior
-
Writing automated acceptance tests that non-technical stakeholders can read and verify
-
Projects adopting Behavior-Driven Development (BDD) with tools like Cucumber, SpecFlow, or Behave
Related Anchors:
-
BDD (Behavior-Driven Development) - The practice that Gherkin was designed to support
-
EARS Requirements - Alternative structured natural-language requirements format
-
TDD, London School - Outside-in development that naturally combines with Gherkin-driven acceptance tests
IEC 61508 SIL Levels
Details
- Full Name
-
IEC 61508 Safety Integrity Levels
- Also known as
-
Functional Safety Levels, SIL Classification
Core Concepts:
- Four Safety Integrity Levels
-
- SIL 1 (lowest)
-
10-2 ≤ PFD < 10-1 (tolerable risk reduction)
- SIL 2
-
10-3 ≤ PFD < 10-2 (moderate risk reduction)
- SIL 3
-
10-4 ≤ PFD < 10-3 (substantial risk reduction)
- SIL 4 (highest)
-
10-5 ≤ PFD < 10-4 (maximum risk reduction)
- Risk-based classification
-
SIL level determined by hazard analysis and risk assessment
- Safety lifecycle
-
Systematic approach from concept to decommissioning
- Hardware requirements
-
Architectural constraints and systematic capability
- Software requirements
-
Development methods, verification, and validation techniques
- Probability of Failure on Demand (PFD)
-
Key metric for safety function reliability
- Safety instrumented systems (SIS)
-
Protection layers implementing safety functions
- Verification and validation
-
Independent assessment of safety claims
- Systematic failures
-
Focus on preventing design and specification errors
- Random hardware failures
-
Statistical analysis and fault tolerance
- Key Standard
-
IEC 61508 "Functional Safety of Electrical/Electronic/Programmable Electronic Safety-related Systems" (first edition 1998, second edition 2010)
Related Standards:
-
IEC 61511 (Process industry)
-
ISO 26262 (Automotive)
-
EN 50128 (Railway)
-
IEC 62304 (Medical devices)
When to Use:
-
Developing safety-critical embedded systems
-
Assessing risk in industrial automation and control systems
-
Certifying safety instrumented systems
-
Designing fail-safe mechanisms and redundancy
-
Establishing software development processes for safety applications
-
Conducting hazard and operability (HAZOP) studies
-
Implementing functional safety management systems
Current Status:
-
The prior is trained almost entirely on Edition 2 (2010), which has been the published standard for 15+ years — Ed-2 knowledge (SIL tables, lifecycle phases) is still authoritative
-
Edition 3 is in final approval as of mid-2026 (IEC forecasts publication around October 2026), adding cybersecurity alignment with IEC 62443 and guidance on AI/ML in safety functions — when "current edition" matters, check the IEC webstore rather than assuming Ed 3 is out
LINDDUN
Details
- Full Name
-
LINDDUN Privacy Threat Modeling Framework
- Also known as
-
LINDDUN GO, Privacy Threat Modeling, Privacy STRIDE
Core Concepts:
- Linkability
-
Attacker can link two items of interest (e.g., data items, messages, or actions) without knowing the identity of the data subject
- Identifiability
-
Attacker can identify a data subject from a set of data subjects through items of interest
- Non-repudiation
-
Data subject cannot deny having performed an action or having sent a message; system logs become a liability
- Detectability
-
Attacker can deduce the existence or absence of a data item or communication, even without access to its content
- Disclosure of Information
-
Unauthorized exposure of data to a party without the data subject’s consent; classical confidentiality breach from a privacy perspective
- Unawareness
-
Data subjects are not sufficiently informed about the collection, processing, storage, and sharing of their personal data; violates transparency principles
- Non-compliance
-
System does not comply with privacy legislation, regulations, or organizational privacy policies (e.g., GDPR, CCPA, HIPAA)
- Key Proponents
-
Kim Wuyts, Riccardo Scandariato, Wouter Joosen (KU Leuven / DistriNet Research Group, published 2014)
When to Use:
-
Conducting privacy threat modeling during the design or architecture phase
-
Performing privacy impact assessments (PIA) or data protection impact assessments (DPIA)
-
Identifying privacy risks in systems that handle personal data
-
Evaluating compliance with GDPR, CCPA, HIPAA, and other privacy regulations
-
Integrating Privacy by Design into the software development lifecycle
-
Training development teams on privacy engineering concepts
Related Anchors:
Current Status:
-
The prior likely reflects the original academic LINDDUN of the 2010s: a single heavyweight DFD-based method with the old seven categories including plain "Unawareness"
-
Current LINDDUN (KU Leuven) is a family of three flavors — GO (33-card lightweight deck, 2024 redesign), PRO (systematic), and MAESTRO (most thorough) — built on a 2024-updated threat knowledge base where the "U" became "Unawareness & Unintervenability"
LLM-Evaluations
Details
- Full Name
-
Large Language Model Evaluations
- Also known as
-
LLM Benchmarking, LLM Assessment, Foundation Model Evaluation
Core Concepts:
- Benchmark Suites
-
Standardized datasets and tasks used to compare LLM capabilities — MMLU (Massive Multitask Language Understanding), HellaSwag, HumanEval, BIG-Bench, GSM8K, TruthfulQA, ARC
- Evaluation Metrics
-
Quantitative measures of model quality — perplexity, accuracy, BLEU, ROUGE, F1, pass@k (code generation), exact match, calibration
- Automatic vs. Human Evaluation
-
Automated scoring via metrics or reference outputs (fast, scalable) vs. human judgment (nuanced, expensive); hybrid approaches such as LLM-as-judge
- HELM (Holistic Evaluation of Language Models)
-
Stanford framework evaluating models across multiple scenarios and metrics simultaneously to surface trade-offs across accuracy, robustness, fairness, and efficiency
- Chatbot Arena / Elo Rating
-
Human preference-based evaluation where two models respond to the same prompt and humans choose the better answer; produces Elo-style rankings
- Open LLM Leaderboard
-
Hugging Face / EleutherAI hosted ranking of open-source models across standardized benchmarks enabling reproducible comparisons
- Red-Teaming & Safety Evaluation
-
Systematic adversarial probing for harmful outputs, jailbreaks, and failure modes; a required step before production deployment
- Contamination & Overfitting
-
Risk that a model’s training data includes benchmark test sets, inflating apparent performance; mitigated by held-out or dynamic benchmarks
- Task-Specific vs. General Evaluation
-
Targeted evaluation for a specific use case (e.g., code, summarization, RAG retrieval) vs. broad capability assessment across diverse domains
- Key Proponents
-
Percy Liang et al. (Stanford, "Holistic Evaluation of Language Models"), EleutherAI ("Language Model Evaluation Harness"), LMSYS ("Chatbot Arena: Benchmarking LLMs in the Wild")
When to Use:
-
Selecting a foundation model for a specific application domain
-
Comparing fine-tuned model versions during iterative training
-
Validating that a model meets quality, safety, and fairness requirements before deployment
-
Reproducing or challenging published model capability claims
-
Establishing regression baselines when updating a deployed model
-
Communicating model strengths and limitations to non-technical stakeholders
Related Anchors:
Current Status:
-
The methodology is stable (held-out benchmarks, harnesses, holistic suites); any concrete benchmark list is cutoff-bound — MMLU was already superseded by MMLU-Pro and GPQA by 2024, and those will saturate too
-
Never trust a model’s memorised benchmark numbers or "current leading benchmark" claims: point it at living sources — lm-evaluation-harness and HELM — and date every score you quote
Mutation Testing
Details
- Also known as
-
Mutation Analysis, Fault-Based Testing
Core Concepts:
- Test quality assessment
-
Evaluate how effective tests are at detecting bugs
- Code mutations
-
Deliberately introduce small, syntactic changes (mutants) into source code
- Mutation operators
-
Rules for creating mutants (e.g., change
>to>=, flip boolean, remove statement) - Killed mutants
-
Mutations caught by failing tests (good)
- Survived mutants
-
Mutations not detected by tests (indicates test weakness)
- Equivalent mutants
-
Mutations that don’t change program behavior (false positives)
- Mutation score
-
Percentage of killed mutants:
(killed / (total - equivalent)) × 100% - First-order mutations
-
Single atomic change per mutant
- Higher-order mutations
-
Multiple changes combined
- Weak mutation
-
Test only needs to create different internal state
- Strong mutation
-
Test must produce different final output
- Test adequacy criterion
-
"Are tests good enough?" not just "Is coverage high enough?"
- Key Proponents
-
Richard Lipton (theoretical foundation, 1971), Richard DeMillo, Timothy Budd
Key Tools:
-
PITest (Java)
-
Stryker (JavaScript/TypeScript, C#, Scala)
-
Mutmut (Python)
-
Infection (PHP)
-
Mull (C/C++)
When to Use:
-
Evaluating test suite quality beyond coverage metrics
-
Identifying gaps in test assertions
-
Critical systems requiring high test confidence
-
Complementing code coverage as a quality metric
-
Refactoring legacy code with existing tests
-
Teaching effective testing practices
-
Continuous improvement of test effectiveness
Practical Challenges:
- Computational cost
-
N mutations × M tests = expensive
- Equivalent mutant problem
-
Hard to automatically detect functionally identical mutants
- Time investment
-
Can be slow on large codebases
- Mitigation strategies
-
Selective mutation, mutation sampling, incremental analysis
Relationship to Other Practices:
- Code coverage
-
Mutation testing reveals that high coverage ≠ good tests
- TDD
-
Strong TDD often produces high mutation scores naturally
- Property-based testing
-
Orthogonal but complementary approaches
- Fault injection
-
Similar concept applied to production systems
OWASP Top 10
Details
- Full Name
-
OWASP Top 10 Web Application Security Risks
- Also known as
-
OWASP Top Ten, Web Application Security Top 10
Core Concepts:
- A01 – Broken Access Control
-
Failure to enforce restrictions on what authenticated users can do; most prevalent web application risk
- A02 – Cryptographic Failures
-
Sensitive data exposed due to weak or absent encryption; previously called "Sensitive Data Exposure"
- A03 – Injection
-
Untrusted data sent to an interpreter as part of a command or query (SQL, OS, LDAP injection)
- A04 – Insecure Design
-
Missing or ineffective security controls resulting from flawed design and threat modeling
- A05 – Security Misconfiguration
-
Insecure default settings, incomplete configurations, open cloud storage, verbose error messages
- A06 – Vulnerable and Outdated Components
-
Use of components (libraries, frameworks) with known vulnerabilities
- A07 – Identification and Authentication Failures
-
Weaknesses in authentication, session management, and credential handling
- A08 – Software and Data Integrity Failures
-
Code and infrastructure that does not protect against integrity violations (e.g., insecure deserialization, CI/CD tampering)
- A09 – Security Logging and Monitoring Failures
-
Insufficient logging, detection, and response to breaches
- A10 – Server-Side Request Forgery (SSRF)
-
Server fetches remote resources from attacker-controlled URLs without validation
- Key Proponent
-
OWASP Foundation (https://owasp.org/Top10/, first published 2003; the list above is the 2021 edition)
When to Use:
-
Performing security risk assessments on web applications
-
Establishing secure coding guidelines and developer training programs
-
Conducting threat modeling and security design reviews
-
Prioritizing security findings during code reviews and penetration tests
-
Defining acceptance criteria for security requirements
-
Auditing third-party or open-source components for known vulnerabilities
Related Anchors:
Current Status:
-
The list above is the 2021 edition. The current released edition is OWASP Top 10:2025 (RC November 2025, finalized around the turn of 2025/26): it adds Software Supply Chain Failures (A03) and Mishandling of Exceptional Conditions (A10), folds SSRF into Broken Access Control, and re-ranks several categories (what changed)
-
An LLM’s training-data prior for "OWASP Top 10" most plausibly serves the 2021 edition — it was current for over four years and dominates tutorials, courses, and blog material; models with earlier cutoffs may even blend in 2017
-
Name the edition explicitly in prompts ("OWASP Top 10:2025" vs ":2021") — bare category IDs are ambiguous across editions: A03 means Injection in 2021 but Software Supply Chain Failures in 2025
Property-Based Testing
Details
- Also known as
-
Generative Testing, QuickCheck-style Testing
Core Concepts:
- Properties
-
Invariants that should always hold
- Generators
-
Automatic test data creation
- Shrinking
-
Minimizing failing test cases to simplest form
- Universal quantification
-
Testing "for all inputs"
- Specification testing
-
Testing high-level properties, not examples
- Edge case discovery
-
Finds cases you didn’t think of
- Complementary to example-based
-
Works alongside traditional unit tests
- Stateful testing
-
Testing sequences of operations
- Model-based testing
-
Compare implementation against simpler model
- Key Tools
-
QuickCheck (Haskell), Hypothesis (Python), fast-check (JavaScript), FsCheck (.NET)
When to Use:
-
Testing pure functions and algorithms
-
Validating business rules and invariants
-
Testing parsers and serializers
-
Finding edge cases in complex logic
-
Complementing example-based TDD
Red/Green TDD
Details
- Also known as
-
Red-Green-Refactor, Classical TDD Cycle, Test-First Development
Core Concepts:
- Red phase
-
Write a failing test first, before any production code. The test must actually run and fail for the right reason — compilation errors don’t count as red.
- Green phase
-
Write the minimum production code required to make the failing test pass. Resist the urge to add functionality the test does not demand.
- Refactor phase
-
With tests passing, improve the design — rename, extract, deduplicate — confident the test suite will catch regressions.
- Small steps
-
Each cycle is deliberately small (seconds to minutes), not hours. Large leaps break the feedback loop.
- Watch it fail
-
Verifying that the test actually fails before implementation catches tautological tests and typos in the test itself.
- Test names describe behavior
-
Not method names. "Returns empty list when no users exist" tells you what the code does; "test getUsers" does not.
- Minimum to pass
-
Fake it ('return 42'), hardcode, or copy-paste — whatever makes the test pass fastest. Generalization happens in the refactor phase via triangulation.
- One test at a time
-
Only one failing test in the suite at any moment. Never add a second failing test before the first is green.
- Key Proponents
-
Kent Beck ("Test-Driven Development: By Example", 2002); popularized for LLM coding agents by Simon Willison
When to Use:
-
Instructing LLM coding agents that default to implementing features first and writing tests afterwards
-
New production code where requirements can be expressed as concrete examples
-
Bug fixes — write a failing test that reproduces the bug, then fix
-
Refactoring legacy code that lacks test coverage (start by characterizing behavior)
-
Teaching disciplined incremental development
Related Anchors:
-
TDD Chicago School - State-based classical TDD focused on real objects over mocks
-
TDD London School - Mock-heavy, interaction-based, outside-in variant
-
BDD Given-When-Then - Behavior-driven complement for higher-level acceptance tests
Criticism:
-
David Heinemeier Hansson, "TDD is dead. Long live testing." (2014) — test-first as dogma leads to "test-induced design damage"; the follow-up "Is TDD Dead?" conversation series with Kent Beck and Martin Fowler maps the whole debate
-
James O. Coplien, "Why Most Unit Testing is Waste" (2013) — most low-level unit tests provide little assurance relative to their maintenance cost
-
Empirical results are mixed: replication studies (e.g. Fucci et al., "A Dissection of the Test-Driven Development Process", IEEE TSE 2017) suggest observed benefits stem from working in small iterative steps rather than from writing the test first
STRIDE Threat Model
Details
- Full Name
-
STRIDE Threat Modeling Framework
- Also known as
-
STRIDE Threat Model, Microsoft STRIDE
Core Concepts:
- Spoofing
-
Impersonating another user, process, or system to gain unauthorized access; mitigated by strong authentication
- Tampering
-
Unauthorized modification of data in transit or at rest; mitigated by integrity controls, digital signatures, and access controls
- Repudiation
-
Denying that an action was performed when it actually was; mitigated by audit logging and non-repudiation mechanisms
- Information Disclosure
-
Exposing sensitive data to unauthorized parties; mitigated by encryption, access control, and data minimization
- Denial of Service
-
Disrupting or degrading availability of a system or service for legitimate users; mitigated by rate limiting, redundancy, and resilience
- Elevation of Privilege
-
Gaining capabilities or permissions beyond what is legitimately authorized; mitigated by least-privilege principles and authorization checks
- Key Proponents
-
Loren Kohnfelder and Praerit Garg (Microsoft, 1999); popularized by Adam Shostack ("Threat Modeling: Designing for Security", 2014)
When to Use:
-
Performing structured threat modeling during software design and architecture reviews
-
Identifying and categorizing potential threats in security assessments
-
Training developers to think adversarially about system security
-
Prioritizing security controls and mitigations during system design
-
Conducting security design reviews and red-team exercises
-
Establishing a shared vocabulary for discussing security threats across teams
Related Anchors:
TDD, Chicago School
Details
- Also known as
-
Classicist TDD, Detroit School
Core Concepts:
- State-based testing
-
Verify the state of objects after operations
- Minimal mocking
-
Use real objects whenever possible; mock only external dependencies
- Inside-out development
-
Start with core domain logic and build outward
- Simplicity focus
-
Emergent design through refactoring
- Red-Green-Refactor
-
The fundamental TDD cycle
- YAGNI
-
You Aren’t Gonna Need It - avoid premature abstraction
- Key Proponents
-
Kent Beck, Martin Fowler
When to Use:
-
Domain-driven design projects
-
When business logic is central
-
Smaller, cohesive modules
TDD, London School
Details
- Also known as
-
Mockist TDD, Outside-In TDD
Core Concepts:
- Mock-heavy testing
-
Heavy use of test doubles (mocks, stubs) to isolate units
- Outside-in development
-
Start from the outermost layers (UI, API) and work inward
- Interaction-based testing
-
Focus on verifying interactions between objects
- Behavior verification
-
Test how objects collaborate rather than state
- Interface discovery
-
Use tests to discover and define interfaces
- Walking skeleton
-
Build end-to-end functionality early, then fill in details
- Key Proponents
-
Steve Freeman, Nat Pryce ("Growing Object-Oriented Software, Guided by Tests")
When to Use:
-
Complex systems with many collaborating objects
-
When designing APIs and interfaces
-
Distributed systems where integration is costly
Test Double: Dummy (Meszaros)
Details
Core Concepts:
- Purpose
-
An object passed to fill a required parameter but never actually used in the test. The simplest form of test double.
- Behavior
-
Has no behavior. Calls to a Dummy should not occur — if they do, something is wrong with the test setup.
- Typical use
-
Satisfying constructor or method signatures where the parameter is irrelevant to the test scenario.
- Key Proponent
-
Gerard Meszaros ("xUnit Test Patterns", 2007)
When to Use:
-
Tell an LLM: "Create a Dummy test double for this parameter — it should never be called"
-
When a method requires parameters that are irrelevant to the behavior being tested
-
Filling dependency injection containers with unused dependencies
Related Anchors:
-
Test Double (Meszaros) — umbrella taxonomy
-
Stub — when you need canned responses (Dummy provides none)
Test Double: Fake (Meszaros)
Details
Core Concepts:
- Purpose
-
A working but simplified implementation unsuitable for production. Has real behavior, but takes shortcuts.
- Behavior
-
Actually processes inputs and produces outputs — unlike Stubs which return fixed data. The simplification makes it fast and predictable for tests.
- Typical examples
-
In-memory database instead of real database, in-memory file system, local email sender that writes to a list instead of sending, simplified authentication that always succeeds.
- Distinction from Stub
-
A Stub returns canned data. A Fake has real logic, just simplified.
- Key Proponent
-
Gerard Meszaros ("xUnit Test Patterns", 2007)
When to Use:
-
Tell an LLM: "Create a Fake implementation of this repository using an in-memory store"
-
Integration-style tests without external infrastructure
-
When Stubs are too simplistic and the real implementation is too slow/complex
-
Local development environments needing realistic but fast dependencies
Related Anchors:
-
Test Double (Meszaros) — umbrella taxonomy
-
Stub — simpler alternative with fixed responses
Test Double (Meszaros)
Details
- Full Name
-
Test Double taxonomy according to Gerard Meszaros
- Also known as
-
xUnit Test Patterns test double taxonomy
Core Concepts:
- Dummy
-
Object passed to fill a parameter list but never actually used
- Stub
-
Provides canned responses to calls made during a test; no verification of interactions
- Spy
-
Records calls made to it for later assertion; a stub that also captures interaction data
- Mock
-
Pre-programmed with expectations; verifies that specific interactions occurred (interaction-based verification)
- Fake
-
Working simplified implementation with shortcuts unsuitable for production (e.g., in-memory database, in-memory repository)
- Test Double
-
Umbrella term for any object substituted for a real dependency during testing
- Vocabulary precision
-
Distinguishing what a double IS (taxonomy) from when to use it (TDD school philosophy)
- Key Proponent
-
Gerard Meszaros ("xUnit Test Patterns: Refactoring Test Code", 2007)
When to Use:
-
Communicating precisely about test isolation strategies
-
Choosing the right type of double for a given testing scenario
-
Avoiding vocabulary collisions (e.g., calling a Stub a "mock" triggers wrong reasoning)
-
Teaching or reviewing test code with shared terminology
Related Anchors:
-
TDD, London School - Philosophy of when to use doubles heavily (interaction-based)
-
TDD, Chicago School - Philosophy of minimal doubling (state-based)
Test Double: Mock (Meszaros)
Details
Core Concepts:
- Purpose
-
Pre-programmed with expectations about which calls should be made. Verifies that specific interactions occurred — the test fails if the expected interactions don’t happen.
- Behavior
-
Has built-in assertions. If the system under test calls the wrong method, with wrong arguments, or in the wrong order, the Mock fails the test immediately.
- Distinction from Stub
-
A Stub provides data passively. A Mock actively verifies behavior.
- Distinction from Spy
-
A Spy records calls for post-hoc assertion. A Mock enforces expectations during execution.
- Key Proponent
-
Gerard Meszaros ("xUnit Test Patterns", 2007)
When to Use:
-
Tell an LLM: "Create a Mock test double that verifies these interactions occur"
-
Interaction-based testing (London School TDD)
-
When the behavior matters more than the result
-
Verifying that a notification was sent, a log was written, or a service was called correctly
Related Anchors:
-
Test Double (Meszaros) — umbrella taxonomy
-
Spy — post-hoc assertion instead of expectations
-
TDD, London School — favors Mocks for outside-in design
Test Double: Spy (Meszaros)
Details
Core Concepts:
- Purpose
-
A Stub that also records how it was called — which methods, with what arguments, how many times. Assertions happen after the action, not as expectations before.
- Behavior
-
Returns canned responses (like a Stub) and silently records all interactions for later inspection.
- Distinction from Mock
-
A Spy records and lets you assert afterward. A Mock has pre-programmed expectations that fail immediately if violated.
- Key Proponent
-
Gerard Meszaros ("xUnit Test Patterns", 2007)
When to Use:
-
Tell an LLM: "Create a Spy test double that records calls for later assertion"
-
When you need to verify interactions but want assertions in the test body, not in setup
-
Auditing what happened during a test without constraining the order of operations
-
When the exact interaction pattern matters but you want flexible assertion
Related Anchors:
-
Test Double (Meszaros) — umbrella taxonomy
-
Stub — Spy without call recording
-
Mock — pre-programmed expectations instead of post-hoc assertion
Test Double: Stub (Meszaros)
Details
Core Concepts:
- Purpose
-
Provides predefined (canned) responses to calls made during a test. Does not verify interactions — only supplies data.
- Behavior
-
Returns fixed values regardless of input. No assertion on whether or how it was called.
- Distinction from Mock
-
A Stub never fails a test. It only provides data. A Mock has expectations and can fail the test if interactions are wrong.
- Key Proponent
-
Gerard Meszaros ("xUnit Test Patterns", 2007)
When to Use:
-
Tell an LLM: "Create a Stub test double that returns this fixed data"
-
Isolating the system under test from external dependencies (database, API)
-
State-based testing (Chicago School TDD)
-
When you care about the result, not about how it was obtained
Related Anchors:
-
Test Double (Meszaros) — umbrella taxonomy
-
Spy — a Stub that also records calls
-
Mock — when you need interaction verification
-
TDD, Chicago School — favors Stubs over Mocks
Testing Pyramid
Details
- Full Name
-
Testing Pyramid according to Mike Cohn
Core Concepts:
- Three layers
-
-
Unit tests (base): Many fast, isolated tests
-
Integration tests (middle): Moderate number, test component interaction
-
End-to-end tests (top): Few, test complete user journeys
-
- Proportional distribution
-
More unit tests, fewer E2E tests
- Cost and speed
-
Unit tests cheap and fast, E2E tests expensive and slow
- Feedback loops
-
Faster feedback from lower levels
- Anti-pattern: Ice cream cone
-
Too many E2E tests, too few unit tests
- Test at the right level
-
Don’t test through UI what can be tested in isolation
- Confidence gradient
-
Balance confidence with execution speed
- Key Proponent
-
Mike Cohn ("Succeeding with Agile", 2009)
When to Use:
-
Planning test strategy for projects
-
Balancing test types in CI/CD pipelines
-
Evaluating existing test suites
-
Guiding team testing practices
Criticism:
-
Kent C. Dodds, "Write tests. Not too many. Mostly integration." (2019) — proposes the Testing Trophy: integration tests give the best confidence per cost, so the pyramid’s unit-heavy base optimises for the wrong metric
-
Spotify Engineering, "Testing of Microservices" (2018) — proposes the honeycomb shape for microservices: unit-heavy suites couple tests to implementation details and break under refactoring
-
The layer boundaries blur in modern stacks — fast in-memory "integration" tests undermine the pyramid’s core assumption that higher-level tests are necessarily slow and expensive