Semantic Anchors — Complete Reference

About Semantic Anchors

Two-hour live coding session with Johannes Rabauer and Ralf D. Müller (May 2026). Read Johannes' session summary on rabauer.dev.

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.

⚡ Efficiency

Instead of writing lengthy explanations, you can reference established methodologies that the LLM already knows deeply.

🔄 Consistency

Different people using the same semantic anchor will get similar, predictable results from the LLM, because the anchor refers to well-documented concepts.

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)

Consistent

Different users invoking it get similar conceptual activation.

✅ "Test-Driven Development" (widely documented, consistent understanding)

❌ "Modern testing" (different interpretations)

Attributable

Can be traced to key proponents, publications, or documented standards.

✅ "arc42" (Gernot Starke, Peter Hruschka)

❌ "Best practices" (no specific source)

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

Semantic Anchors activate rich, interconnected knowledge domains from the LLM’s training data.

Simple Instructions just tell the LLM what to do, without providing conceptual framework or methodology.

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

Use the full-text search to find anchors by:

  • Title (highest priority)

  • Proponents and key people

  • Tags and keywords

  • Content and descriptions

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.

In Code Reviews

Ask the LLM to review code against specific methodologies:

Review this code for violations of:
- Single Responsibility Principle
- Dependency Inversion Principle
- Law of Demeter

Testing Recognition

Before relying on a semantic anchor, test if the LLM recognizes it:

What concepts do you associate with 'MECE'?

If the LLM provides accurate, detailed information, it’s safe to use that anchor.

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.

Source Code

View the source, report issues, or contribute:

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"

  • 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

  • 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)

  • 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

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

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

  • 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

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

  • 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

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

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

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

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

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

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

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

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

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

  • 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

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

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."

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."

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."

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."

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."

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."

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."

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."

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

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."

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."

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."

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."

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."

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."

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."

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."

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."

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."

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."

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

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

  • 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

  • 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

  • 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

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

  • 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."

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."

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."

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."

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."

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

  • 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—​modifier structure

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

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 != nil at 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 main is always deployable

  • Feature branches are short-lived, created from main for every change

  • Pull Requests are the central collaboration mechanism — used for code review, discussion, and CI validation before merging

  • Merging to main triggers immediate deployment (continuous delivery)

  • Branch naming reflects the work: issue number or short descriptive slug

    Workflow steps
    1. Create a branch from main (named after the issue or feature)

    2. Commit changes with descriptive messages

    3. Open a Pull Request early for visibility and feedback

    4. Discuss, review, and iterate until the PR is approved

    5. Merge to mainmain is always in a deployable state

    6. Deploy immediately after merge

    Key Proponent

    Scott Chacon ("GitHub Flow", 2011)

When to Use:

  • Teams practicing continuous delivery or continuous deployment

  • Projects where main must always be production-ready

  • Issue-driven or ticket-driven development workflows

  • Agentic coding workflows where context brevity matters

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

  • 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)

  1. Start here: Draw the Mikado Goal.

  2. Implement the goal or prerequisite naively.

  3. 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.

  4. Come up with immediate solutions to the errors.

  5. Draw the solutions as new prerequisites in the Mikado Graph.

  6. Revert all changes and return to the last known good state.

  7. Select the next prerequisite to work with.

  8. Go to step 2.

  9. 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.

  10. Commit the change.

  11. Is the Mikado Goal met?

    • If Yes, go to step 12.

    • If No, go to step 7.

  12. DONE!

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

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

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

  • 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"

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

  • 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

  • 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

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

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

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

  • 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

  • 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

  • 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

  • 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):

  1. Choose a concept: Pick the topic you want to understand

  2. Teach it to a child: Write an explanation in simple terms

  3. Identify gaps and review: Where you struggle, study more

  4. Simplify and analogize: Refine your explanation, use examples

  • 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

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

  • 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
  • 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

  • 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

  • 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

  • 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)

  • 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

  • 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

  • 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

  • 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

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

  • 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

  • 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

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

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

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

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

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

  • 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

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

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

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

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

  • 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

https://adr.github.io/madr/

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 with decision-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

  • 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

  • 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

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

  • 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

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

  • 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

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

  • 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:

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

  • 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

  • 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)

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.

  1. 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.)

  2. 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

  3. 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

  4. 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

  5. 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

  • 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

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

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

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

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)

  • 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

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

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

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

Criticism:

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

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

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

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

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

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

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

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