Description

Book Synopsis

Cyrille Martraire (@cyriux on Twitter) is CTO, co-founder, and partner at Arolla (@ArollaFr on Twitter), the founder of the Paris Software Crafters community, and a regular speaker at international conferences. Cyrille refers to himself as a developer, since he has designed software since 1999 for startups, software vendors, and corporations as an employee and as a consultant.


He has worked and led multiple significant projects, mostly in capital finance, including the complete rewriting of a multilateral trading facility of interest rate swaps. In most cases he has to start from large and miserable legacy systems.


He's passionate about software design in every aspect: test-driven development, behavior-driven development, and, in particular, domain-driven design.


Cyrille lives in Paris with his w

Table of Contents

Introduction

Chapter 1: Rethinking Documentation

A Tale from the Land of Living Documentation

Why This Feature?

Tomorrow You Won’t Need This Sketch Anymore

Sorry, We Don’t Have Marketing Documents!

You Keep Using This Word, but This Is Not What It Means

Show Me the Big Picture, and You’ll See What’s Wrong There

The Future of Living Documentation Is Now

The Problem with Traditional Documentation

Documentation Is Not Cool, Usually

The Flaws of Documentation

The Agile Manifesto and Documentation

It’s Time for Documentation 2.0

Documentation Is About Knowledge

The Origination of Knowledge

How Does Knowledge Evolve?

Why Knowledge Is Necessary

Documentation Is About Transferring Knowledge

Focusing on What Matters

Core Principles of Living Documentation

Reliable

Low Effort

Collaborative

Insightful

How Ants Exchange Knowledge: Stigmergy

Most Knowledge Is Already There

Internal Documentation

Internal Versus External Documentation

Examples of Internal and External Documentation

Preferring Internal Documentation

In Situ Documentation

Machine-Readable Documentation

Specific Versus Generic Knowledge

Learning Generic Knowledge

Focusing on Specific Knowledge

Ensuring Documentation Accuracy

Accuracy Mechanism for Reliable Documentation

When Documentation Does Not Need an Accuracy Mechanism

Big Questions to Challenge Your Documentation

Questioning the Need for Documentation at All

Need for Documentation Because of Lack of Trust

Just-in-Time Documentation, or a Cheap Option on Future Knowledge

Questioning the Need for Traditional Documentation

Minimizing Extra Work Now

Minimizing Extra Work Later

Making an Activity Fun

Documentation Reboot

Living Documentation: The Very Short Version

Approaches to Better Documentation

A Gateway to DDD

Domain-Driven Design in a Nutshell

Living Documentation and Domain-Driven Design

When Living Documentation Is an Application of DDD

A Story of Mutual Roots Between BDD, DDD, XP, and Living Documentation

Summary

Chapter 2: Behavior-Driven Development as an Example of Living Specifications

BDD Is All About Conversations

BDD with Automation Is All About Living Documentation

Redundancy and Reconciliation

The Anatomy of Scenarios in a File

The Intent of a Feature File

Feature File Scenarios

Specification Details

Tags in Feature Files

Scenarios as Interactive Living Documentation

Scenarios in Boring Paper Documents

A Feature File Example

A Canonical Case of Living Documentation in Every Aspect

Going Further: Getting the Best of Your Living Documentation

Property-Based Testing and BDD

Summary

Chapter 3: Knowledge Exploitation

Identifying Authoritative Knowledge

Where Is the Knowledge Now?

Single-Source Publishing

Some Examples of Producing a Published Document

A Published Snapshot with a Version Number

Remarks

Setting Up a Reconciliation Mechanism (aka Verification Mechanism)

Running Consistency Tests

Reconciliation on the Test Assumptions

Published Contracts

Consolidating Dispersed Facts

How Consolidation Works

Consolidation Implementation Considerations

Ready-Made Documentation

The Power of a Standard Vocabulary

Linking to Standard Knowledge

More Than Just Vocabulary

Using Ready-Made Knowledge in Conversation to Speed Up Knowledge Transfer

Tools History

Summary

Chapter 4: Knowledge Augmentation

When Programming Languages Are Not Enough

Documentation Using Annotations

Annotations as More Than Tags

Describing the Rationale Behind Decisions

Embedded Learning

Documentation by Convention

Living Documentation in Legacy Code with Conventions

Documenting the Conventions

Consistently Adhering to Conventions

The Limitations of Conventions

External Documentation Methods

Sidecar Files

Metadata Databases

Designing Custom Annotations

Stereotypical Properties

Stereotypes and Tactical Patterns

Using Meaningful Annotation Package Names

Hijacking Standard Annotations

Standard Annotation: @Aspect and Aspect-Oriented Programming

Annotation by Default or Unless Necessary

Handling Module-Wide Knowledge

Dealing with Many Kinds of Modules

Module-Wide Augmentation In Practice

Intrinsic Knowledge Augmentation

Machine-Accessible Documentation

Recording Your Rationale

What’s in a Rationale?

Making the Rationale Explicit

Beyond Documentation: Motivated Design

Avoid Documenting Speculation

Skills as Pre-Documented Rationales

Recording the Rationale as an Enabler for Change

Acknowledging Your Influences (aka Project Bibliography)

Declaring Your Style

Commit Messages as Comprehensive Documentation

Commit Guidelines

Summary

Chapter 5: Living Curation: Identifying Authoritative Knowledge

Dynamic Curation

Examples of Dynamic Curation

Editorial Curation

Low-Maintenance Dynamic Curation

One Corpus of Knowledge for Multiple Uses

Scenario Digests

Highlighting the Core

Highlighting Inspiring Exemplars

Guided Tours and Sightseeing Maps

Creating a Sightseeing Map

Creating a Guided Tour

Creating a Living Guided Tour

A Poor Man’s Literate Programming

Summing Up: The Curator Preparing an Art Exhibition

Selecting and Organizing Existing Knowledge

Adding What’s Missing When Needed

Accessibility for People Who Can’t Attend and for Posterity

Summary

Chapter 6: Automating Documentation

Living Documents

Steps in Creating a Living Document

Presentation Rules

Living Glossaries

How a Living Glossary Works

An Example Please!

Information Curation for Living Documents

Creating a Glossary Within a Bounded Context

Case Study of a Living Glossary

Living Diagrams

Diagrams Assist in Conversations

One Diagram, One Story

Living Diagrams to Keep You Honest

The Quest for the Perfect Diagram

Rendering a Living Diagram

Visualization Guidelines

Example: Hexagonal Architecture Living Diagram

Case Study: A Business Overview as a Living Diagram

Example: A Context Diagram

The Challenges with Automated Generation of Design Documentation

Summary

Chapter 7: Runtime Documentation

Example: Living Services Diagram

A Matter of Augmented Code but at Runtime

Discovering the Architecture

The Magic That Makes This Work

Going Further

Visible Workings: Working Software as Its Own Documentation

Visible Tests

Domain-Specific Notation

Generating Custom Domain-Specific Diagrams to Get Visual Feedback

Example: A Visible Test When Using Event Sourcing

A Concrete Example in Code

Living Diagrams from Event Sourcing Scenarios

Introspectable Workings: Code in Memory as a Source of Knowledge

Introspecting with Reflection

Introspecting Without Reflection

Summary

Chapter 8: Refactorable Documentation

Code as Documentation

Text Layout

Coding Conventions

Naming as the Primary Documentation

Composed Methods: You Need to Name Them

Idiomatic Naming Is Contextual

Coding Against a Framework

Type-Driven Documentation

From Primitives to Types

Documented Types and Integrated Documentation

Types and Associations

Types over Comments

The Composed Method

Fluent Style

Using an Internal DSL

Implementing a Fluent Interface

Fluent Tests

Creating a DSTL

When Not to Use a Fluent Style

Case Study: An Example of Refactoring Code, Guided by Comments

Integrated Documentation

Type Hierarchy

Code Searching

Semantics Derived from Actual Usage

Using Plain-Text Diagrams

Example: Plain-Text Diagrams

Diagrams as Code

Summary

Chapter 9: Stable Documentation

Evergreen Content

Requirements Are More Stable Than Design Decisions

High-Level Goals Tend to Be Stable

A Lot of Knowledge Is Less Stable Than It Looks

Case Study: A README File

Tips for Evergreen Documentation

Avoiding Mixing Strategy Documentation with the Documentation of Its Implementation

Ensuring Stability

Using Perennial Naming

Organizing Artifacts Along Stable Axes

Linked Knowledge

Volatile-to-Stable Dependencies

Broken Link Checkers

Link Registry

Bookmarked Searches

Categories of Stable Knowledge

Evergreen README

Vision Statement

Domain Vision Statements

Goals

Impact Mapping

Investing in Stable Knowledge

Domain Immersion

Investigation Wall

Domain Training

Live-My-Life Sessions

Shadow Users

A Long-Term Investment

Summary

Chapter 10: Avoiding Traditional Documentation

Conversations About Formal Documentation

Wiio’s Laws

The Rule of Three Interpretations

Obstacles to Conversations

Working Collectively for Continuous Knowledge Sharing

Pair Programming

Cross Programming

Mob Programming

The Three Amigos (or More)

Event Storming as an Onboarding Process

Knowledge Transfer Sessions

Continuous Documentation

Truck Factor

Coffee Machine Communication

Idea Sedimentation

Throw-Away Documentation

On-Demand Documentation

Just-in-Time Documentation

Provoking Just-in-Time Learning Early

Astonishment Report

Including Some Upfront Documentation

Interactive Documentation

Declarative Automation

Declarative Style

Declarative Dependency Management

Declarative Configuration Management

Declarative Automated Deployment

Machine Documentation

Remarks on Automation in General

Enforced Guidelines

Some Examples of Rules

Evolving the Guidelines

Enforcement or Encouragement

Declarative Guidelines

A Matter of Tools

Guidelines or Design Documentation?

Warranty Sticker Void if Tampered With

Trust-First Culture

Constrained Behavior

Making It Easy to Do the Right Thing

Making Mistakes Impossible: Error-Proof API

Design Principles for Documentation Avoidance

Replaceability First

Consistency First

Example: The Zero Documentation Game

Continuous Training

Summary

Chapter 11: Beyond Documentation: Living Design

Listening to the Documentation

What Happened to the Language of the Domain?

Programming by Coincidence Design

Deliberate Decision Making

“Deliberate Decision” Does Not Mean “Upfront Decision”

Documentation Is a Form of Code Review

Shameful Documentation

Example: Shameful Documentation

The Troubleshooting Guide

Shameful Code Documentation

Documenting Errors or Avoiding Errors?

Documentation-Driven Development

Documentation to Keep You Honest

The Apparent Contradiction Between Documentation Driven and “Avoiding Documentation”

Abusing Living Documentation (Anti-pattern)

Procrastination by Living Documentation

Biodegradable Documentation

Hygienic Transparency

Diagnostic Tools

Positive Pressure to Clean the Inside

Design Skills Everywhere

Reporter Porter Interviewing Mr. Living Doc Doc

Summary

Chapter 12: Living Architecture Documentation

Documenting the Problem

An Example of a Problem Brief

Explicit Quality Attributes

Stake-Driven Architecture Documentation

Explicit Assumptions

Brevity Suggests Quality

Evolving Continuously: Change-Friendly Documentation

Decision Logs

An Example of a Structured Decision Log

Journals or Blogs as Brain Dumps

Fractal Architecture Documentation

The Architecture Landscape

Architecture Diagrams and Notations

An Architecture Codex

Transparent Architecture

Architectural Annotations

Enforced Design Decisions

Architectural Reality Check

Test-Driven Architecture

Quality Attributes as Scenarios

Quality Attributes at Runtime in Production

Other Quality Attributes

From Fragmented Knowledge to Usable Documentation

Small-Scale Simulation as Living Architecture Documentation

The Desirable Properties of a Small-Scale Simulation

Techniques to Simplify a System

Building a Small-Scale Simulation Is Half the Fun

System Metaphor

Explaining a System by Talking About Another System

Useful Even Without Prior Knowledge

A Metaphor in Another Metaphor

Summary

Chapter 13: Introducing Living Documentation to a New Environment

Undercover Experiments

Official Ambition

New Things Have to Work and Have to Be Accepted

Starting Gently

Going Big and Visible

Case Study: A Tale of Introducing Living Documentation to a Team Member

Conversations First

The First Debriefing

Time to Talk About the Code

Decision Logs and Guided Tours

Common Objections to Living Documentation

Annotations Are Not Meant for Documentation

“We Do It Already”

Migrating Legacy Documentation into Living Documentation

Marginal Documentation

Case Study: Introducing Living Documentation in a Batch System

README and Ready-Made Documentation

Business Behavior

Visible Workings and a Single Source of Truth

Integrated Documentation for Developers and a Living Glossary for Other Stakeholders

A Living Diagram to Show the Design Intent

Contact Information and Guided Tours

Microservices Big Picture

Selling Living Documentation to Management

Starting with an Actual Problem

A Living Documentation Initiative

Contrasting the Current Situation with the Promise of a Better World to Match People’s Aspirations

Compliance in Spirit

Case Study: Compliance with ITIL

The ITIL Example

Summary

Chapter 14: Documenting Legacy Applications

Documentation Bankruptcy

Legacy Application as Fossilized Knowledge

Archeology

Bubble Context

Superimposed Structure

Highlighted Structure

External Annotations

Biodegradable Transformation

Example: Strangler Application

Example: Bankruptcy

Agree on Maxims

Enforced Legacy Rules

Summary

Chapter 15: Extra: Conspicuous Documentation

Focusing on Differences

How Is Your Lemon?

Tell Only What’s Unknown

Segmenting by Known Audience

Flexible Content

Low-Fidelity Content

Visual Facilitation

Search-Friendly Documentation

Concrete Examples, Together, Now

In Practice

Fast Media and Prior Preparation

Together, Now

Stack Overflow Documentation

Affordable and Attractive

Specs Digest

Easter Eggs and Fun Anecdotes

Promoting News

Unorthodox Media

Maxims

Posters and Domestic Ads

Meme-Based Posters

Information Radiators

Humor and Cheap Media

Goodies/Swag

Comics

Infodecks

Visualizations and Animations

LEGO Bricks

Furniture

3D Printed Stuff

Summary

9780134689326 TOC 4/17/2019

Living Documentation

    Product form

    £34.19

    Includes FREE delivery

    RRP £37.99 – you save £3.80 (10%)

    Order before 4pm tomorrow for delivery by Thu 2 Jul 2026.

    A Hardback by Cyrille Martraire

    10 in stock

      Trusted by thousands of customers. See 2,385+ Customer Reviews

      View other formats and editions of Living Documentation by Cyrille Martraire

      Publisher: Pearson Education (US)
      Publication Date: 04/06/2019
      ISBN13: 9780134689326, 978-0134689326
      ISBN10: 0134689321

      Description

      Book Synopsis

      Cyrille Martraire (@cyriux on Twitter) is CTO, co-founder, and partner at Arolla (@ArollaFr on Twitter), the founder of the Paris Software Crafters community, and a regular speaker at international conferences. Cyrille refers to himself as a developer, since he has designed software since 1999 for startups, software vendors, and corporations as an employee and as a consultant.


      He has worked and led multiple significant projects, mostly in capital finance, including the complete rewriting of a multilateral trading facility of interest rate swaps. In most cases he has to start from large and miserable legacy systems.


      He's passionate about software design in every aspect: test-driven development, behavior-driven development, and, in particular, domain-driven design.


      Cyrille lives in Paris with his w

      Table of Contents

      Introduction

      Chapter 1: Rethinking Documentation

      A Tale from the Land of Living Documentation

      Why This Feature?

      Tomorrow You Won’t Need This Sketch Anymore

      Sorry, We Don’t Have Marketing Documents!

      You Keep Using This Word, but This Is Not What It Means

      Show Me the Big Picture, and You’ll See What’s Wrong There

      The Future of Living Documentation Is Now

      The Problem with Traditional Documentation

      Documentation Is Not Cool, Usually

      The Flaws of Documentation

      The Agile Manifesto and Documentation

      It’s Time for Documentation 2.0

      Documentation Is About Knowledge

      The Origination of Knowledge

      How Does Knowledge Evolve?

      Why Knowledge Is Necessary

      Documentation Is About Transferring Knowledge

      Focusing on What Matters

      Core Principles of Living Documentation

      Reliable

      Low Effort

      Collaborative

      Insightful

      How Ants Exchange Knowledge: Stigmergy

      Most Knowledge Is Already There

      Internal Documentation

      Internal Versus External Documentation

      Examples of Internal and External Documentation

      Preferring Internal Documentation

      In Situ Documentation

      Machine-Readable Documentation

      Specific Versus Generic Knowledge

      Learning Generic Knowledge

      Focusing on Specific Knowledge

      Ensuring Documentation Accuracy

      Accuracy Mechanism for Reliable Documentation

      When Documentation Does Not Need an Accuracy Mechanism

      Big Questions to Challenge Your Documentation

      Questioning the Need for Documentation at All

      Need for Documentation Because of Lack of Trust

      Just-in-Time Documentation, or a Cheap Option on Future Knowledge

      Questioning the Need for Traditional Documentation

      Minimizing Extra Work Now

      Minimizing Extra Work Later

      Making an Activity Fun

      Documentation Reboot

      Living Documentation: The Very Short Version

      Approaches to Better Documentation

      A Gateway to DDD

      Domain-Driven Design in a Nutshell

      Living Documentation and Domain-Driven Design

      When Living Documentation Is an Application of DDD

      A Story of Mutual Roots Between BDD, DDD, XP, and Living Documentation

      Summary

      Chapter 2: Behavior-Driven Development as an Example of Living Specifications

      BDD Is All About Conversations

      BDD with Automation Is All About Living Documentation

      Redundancy and Reconciliation

      The Anatomy of Scenarios in a File

      The Intent of a Feature File

      Feature File Scenarios

      Specification Details

      Tags in Feature Files

      Scenarios as Interactive Living Documentation

      Scenarios in Boring Paper Documents

      A Feature File Example

      A Canonical Case of Living Documentation in Every Aspect

      Going Further: Getting the Best of Your Living Documentation

      Property-Based Testing and BDD

      Summary

      Chapter 3: Knowledge Exploitation

      Identifying Authoritative Knowledge

      Where Is the Knowledge Now?

      Single-Source Publishing

      Some Examples of Producing a Published Document

      A Published Snapshot with a Version Number

      Remarks

      Setting Up a Reconciliation Mechanism (aka Verification Mechanism)

      Running Consistency Tests

      Reconciliation on the Test Assumptions

      Published Contracts

      Consolidating Dispersed Facts

      How Consolidation Works

      Consolidation Implementation Considerations

      Ready-Made Documentation

      The Power of a Standard Vocabulary

      Linking to Standard Knowledge

      More Than Just Vocabulary

      Using Ready-Made Knowledge in Conversation to Speed Up Knowledge Transfer

      Tools History

      Summary

      Chapter 4: Knowledge Augmentation

      When Programming Languages Are Not Enough

      Documentation Using Annotations

      Annotations as More Than Tags

      Describing the Rationale Behind Decisions

      Embedded Learning

      Documentation by Convention

      Living Documentation in Legacy Code with Conventions

      Documenting the Conventions

      Consistently Adhering to Conventions

      The Limitations of Conventions

      External Documentation Methods

      Sidecar Files

      Metadata Databases

      Designing Custom Annotations

      Stereotypical Properties

      Stereotypes and Tactical Patterns

      Using Meaningful Annotation Package Names

      Hijacking Standard Annotations

      Standard Annotation: @Aspect and Aspect-Oriented Programming

      Annotation by Default or Unless Necessary

      Handling Module-Wide Knowledge

      Dealing with Many Kinds of Modules

      Module-Wide Augmentation In Practice

      Intrinsic Knowledge Augmentation

      Machine-Accessible Documentation

      Recording Your Rationale

      What’s in a Rationale?

      Making the Rationale Explicit

      Beyond Documentation: Motivated Design

      Avoid Documenting Speculation

      Skills as Pre-Documented Rationales

      Recording the Rationale as an Enabler for Change

      Acknowledging Your Influences (aka Project Bibliography)

      Declaring Your Style

      Commit Messages as Comprehensive Documentation

      Commit Guidelines

      Summary

      Chapter 5: Living Curation: Identifying Authoritative Knowledge

      Dynamic Curation

      Examples of Dynamic Curation

      Editorial Curation

      Low-Maintenance Dynamic Curation

      One Corpus of Knowledge for Multiple Uses

      Scenario Digests

      Highlighting the Core

      Highlighting Inspiring Exemplars

      Guided Tours and Sightseeing Maps

      Creating a Sightseeing Map

      Creating a Guided Tour

      Creating a Living Guided Tour

      A Poor Man’s Literate Programming

      Summing Up: The Curator Preparing an Art Exhibition

      Selecting and Organizing Existing Knowledge

      Adding What’s Missing When Needed

      Accessibility for People Who Can’t Attend and for Posterity

      Summary

      Chapter 6: Automating Documentation

      Living Documents

      Steps in Creating a Living Document

      Presentation Rules

      Living Glossaries

      How a Living Glossary Works

      An Example Please!

      Information Curation for Living Documents

      Creating a Glossary Within a Bounded Context

      Case Study of a Living Glossary

      Living Diagrams

      Diagrams Assist in Conversations

      One Diagram, One Story

      Living Diagrams to Keep You Honest

      The Quest for the Perfect Diagram

      Rendering a Living Diagram

      Visualization Guidelines

      Example: Hexagonal Architecture Living Diagram

      Case Study: A Business Overview as a Living Diagram

      Example: A Context Diagram

      The Challenges with Automated Generation of Design Documentation

      Summary

      Chapter 7: Runtime Documentation

      Example: Living Services Diagram

      A Matter of Augmented Code but at Runtime

      Discovering the Architecture

      The Magic That Makes This Work

      Going Further

      Visible Workings: Working Software as Its Own Documentation

      Visible Tests

      Domain-Specific Notation

      Generating Custom Domain-Specific Diagrams to Get Visual Feedback

      Example: A Visible Test When Using Event Sourcing

      A Concrete Example in Code

      Living Diagrams from Event Sourcing Scenarios

      Introspectable Workings: Code in Memory as a Source of Knowledge

      Introspecting with Reflection

      Introspecting Without Reflection

      Summary

      Chapter 8: Refactorable Documentation

      Code as Documentation

      Text Layout

      Coding Conventions

      Naming as the Primary Documentation

      Composed Methods: You Need to Name Them

      Idiomatic Naming Is Contextual

      Coding Against a Framework

      Type-Driven Documentation

      From Primitives to Types

      Documented Types and Integrated Documentation

      Types and Associations

      Types over Comments

      The Composed Method

      Fluent Style

      Using an Internal DSL

      Implementing a Fluent Interface

      Fluent Tests

      Creating a DSTL

      When Not to Use a Fluent Style

      Case Study: An Example of Refactoring Code, Guided by Comments

      Integrated Documentation

      Type Hierarchy

      Code Searching

      Semantics Derived from Actual Usage

      Using Plain-Text Diagrams

      Example: Plain-Text Diagrams

      Diagrams as Code

      Summary

      Chapter 9: Stable Documentation

      Evergreen Content

      Requirements Are More Stable Than Design Decisions

      High-Level Goals Tend to Be Stable

      A Lot of Knowledge Is Less Stable Than It Looks

      Case Study: A README File

      Tips for Evergreen Documentation

      Avoiding Mixing Strategy Documentation with the Documentation of Its Implementation

      Ensuring Stability

      Using Perennial Naming

      Organizing Artifacts Along Stable Axes

      Linked Knowledge

      Volatile-to-Stable Dependencies

      Broken Link Checkers

      Link Registry

      Bookmarked Searches

      Categories of Stable Knowledge

      Evergreen README

      Vision Statement

      Domain Vision Statements

      Goals

      Impact Mapping

      Investing in Stable Knowledge

      Domain Immersion

      Investigation Wall

      Domain Training

      Live-My-Life Sessions

      Shadow Users

      A Long-Term Investment

      Summary

      Chapter 10: Avoiding Traditional Documentation

      Conversations About Formal Documentation

      Wiio’s Laws

      The Rule of Three Interpretations

      Obstacles to Conversations

      Working Collectively for Continuous Knowledge Sharing

      Pair Programming

      Cross Programming

      Mob Programming

      The Three Amigos (or More)

      Event Storming as an Onboarding Process

      Knowledge Transfer Sessions

      Continuous Documentation

      Truck Factor

      Coffee Machine Communication

      Idea Sedimentation

      Throw-Away Documentation

      On-Demand Documentation

      Just-in-Time Documentation

      Provoking Just-in-Time Learning Early

      Astonishment Report

      Including Some Upfront Documentation

      Interactive Documentation

      Declarative Automation

      Declarative Style

      Declarative Dependency Management

      Declarative Configuration Management

      Declarative Automated Deployment

      Machine Documentation

      Remarks on Automation in General

      Enforced Guidelines

      Some Examples of Rules

      Evolving the Guidelines

      Enforcement or Encouragement

      Declarative Guidelines

      A Matter of Tools

      Guidelines or Design Documentation?

      Warranty Sticker Void if Tampered With

      Trust-First Culture

      Constrained Behavior

      Making It Easy to Do the Right Thing

      Making Mistakes Impossible: Error-Proof API

      Design Principles for Documentation Avoidance

      Replaceability First

      Consistency First

      Example: The Zero Documentation Game

      Continuous Training

      Summary

      Chapter 11: Beyond Documentation: Living Design

      Listening to the Documentation

      What Happened to the Language of the Domain?

      Programming by Coincidence Design

      Deliberate Decision Making

      “Deliberate Decision” Does Not Mean “Upfront Decision”

      Documentation Is a Form of Code Review

      Shameful Documentation

      Example: Shameful Documentation

      The Troubleshooting Guide

      Shameful Code Documentation

      Documenting Errors or Avoiding Errors?

      Documentation-Driven Development

      Documentation to Keep You Honest

      The Apparent Contradiction Between Documentation Driven and “Avoiding Documentation”

      Abusing Living Documentation (Anti-pattern)

      Procrastination by Living Documentation

      Biodegradable Documentation

      Hygienic Transparency

      Diagnostic Tools

      Positive Pressure to Clean the Inside

      Design Skills Everywhere

      Reporter Porter Interviewing Mr. Living Doc Doc

      Summary

      Chapter 12: Living Architecture Documentation

      Documenting the Problem

      An Example of a Problem Brief

      Explicit Quality Attributes

      Stake-Driven Architecture Documentation

      Explicit Assumptions

      Brevity Suggests Quality

      Evolving Continuously: Change-Friendly Documentation

      Decision Logs

      An Example of a Structured Decision Log

      Journals or Blogs as Brain Dumps

      Fractal Architecture Documentation

      The Architecture Landscape

      Architecture Diagrams and Notations

      An Architecture Codex

      Transparent Architecture

      Architectural Annotations

      Enforced Design Decisions

      Architectural Reality Check

      Test-Driven Architecture

      Quality Attributes as Scenarios

      Quality Attributes at Runtime in Production

      Other Quality Attributes

      From Fragmented Knowledge to Usable Documentation

      Small-Scale Simulation as Living Architecture Documentation

      The Desirable Properties of a Small-Scale Simulation

      Techniques to Simplify a System

      Building a Small-Scale Simulation Is Half the Fun

      System Metaphor

      Explaining a System by Talking About Another System

      Useful Even Without Prior Knowledge

      A Metaphor in Another Metaphor

      Summary

      Chapter 13: Introducing Living Documentation to a New Environment

      Undercover Experiments

      Official Ambition

      New Things Have to Work and Have to Be Accepted

      Starting Gently

      Going Big and Visible

      Case Study: A Tale of Introducing Living Documentation to a Team Member

      Conversations First

      The First Debriefing

      Time to Talk About the Code

      Decision Logs and Guided Tours

      Common Objections to Living Documentation

      Annotations Are Not Meant for Documentation

      “We Do It Already”

      Migrating Legacy Documentation into Living Documentation

      Marginal Documentation

      Case Study: Introducing Living Documentation in a Batch System

      README and Ready-Made Documentation

      Business Behavior

      Visible Workings and a Single Source of Truth

      Integrated Documentation for Developers and a Living Glossary for Other Stakeholders

      A Living Diagram to Show the Design Intent

      Contact Information and Guided Tours

      Microservices Big Picture

      Selling Living Documentation to Management

      Starting with an Actual Problem

      A Living Documentation Initiative

      Contrasting the Current Situation with the Promise of a Better World to Match People’s Aspirations

      Compliance in Spirit

      Case Study: Compliance with ITIL

      The ITIL Example

      Summary

      Chapter 14: Documenting Legacy Applications

      Documentation Bankruptcy

      Legacy Application as Fossilized Knowledge

      Archeology

      Bubble Context

      Superimposed Structure

      Highlighted Structure

      External Annotations

      Biodegradable Transformation

      Example: Strangler Application

      Example: Bankruptcy

      Agree on Maxims

      Enforced Legacy Rules

      Summary

      Chapter 15: Extra: Conspicuous Documentation

      Focusing on Differences

      How Is Your Lemon?

      Tell Only What’s Unknown

      Segmenting by Known Audience

      Flexible Content

      Low-Fidelity Content

      Visual Facilitation

      Search-Friendly Documentation

      Concrete Examples, Together, Now

      In Practice

      Fast Media and Prior Preparation

      Together, Now

      Stack Overflow Documentation

      Affordable and Attractive

      Specs Digest

      Easter Eggs and Fun Anecdotes

      Promoting News

      Unorthodox Media

      Maxims

      Posters and Domestic Ads

      Meme-Based Posters

      Information Radiators

      Humor and Cheap Media

      Goodies/Swag

      Comics

      Infodecks

      Visualizations and Animations

      LEGO Bricks

      Furniture

      3D Printed Stuff

      Summary

      9780134689326 TOC 4/17/2019

      Recently viewed products

      © 2026 Book Curl

        • American Express
        • Apple Pay
        • Diners Club
        • Discover
        • Google Pay
        • Maestro
        • Mastercard
        • PayPal
        • Shop Pay
        • Union Pay
        • Visa

        Login

        Forgot your password?

        Don't have an account yet?
        Create account