Home / Catalogues / Fowler website

F collection · 35 records

Martin Fowler’s website

35 essays and memos on martinfowler.com: 33 records from Exploring Generative AI plus two explicitly identified adjacent articles updated or published in October 2026. Each credited byline and publication or revision date is retained.

The collection follows the host website, with each article’s actual byline. The original Exploring Generative AI series credits Birgitta Böckeler as contributor and editor; adjacent website articles are labelled individually. 11 records are included in the published NDSE2 bibliography. Literal chapter citations and later editorial suggestions remain distinct.

Explore this collection in the atlasJSON catalogueCSV catalogue

35 records shown

F001Fowler website

The toolchain

Organizes coding-assistance tools by task, interaction style, prompt construction and model or hosting choices. The framework helps separate what a tool does from how a developer supplies its context.

Evidence, context & provenance
Evidence boundaryA July 2023 conceptual landscape, not a comparative benchmark or a current product inventory.

Source type, as recorded: Conceptual tool taxonomy

Cited in published NDSE2 chapters

No literal chapter citation recorded in the published edition.

Editorial chapter mappings

Chapter 1: AI Changes the Unit of Software Work
Chapter 3: Limits and Capability of Coding Agents
Chapter 9: System Understanding, Context and Persistent Memory

Editorial reading suggestions can extend beyond the published citations. Chapter guides show the outline and traceable source references.

Topics. Developer workflow and adoption · Agent context and persistent memory

1 recorded source relationships

These retain the graph’s exact relation labels. A connection is not automatically a causal claim or an independent replication.

All preserved graph attributes
{
  "label": "The toolchain",
  "kind": "practitioner_essay",
  "collection": "F",
  "authors": "Birgitta Böckeler",
  "authors_json": "[\"Birgitta Böckeler\"]",
  "publication_date": "2023-07-26",
  "date_provenance": "Dated entry on the supplied series index; article date also used where printed",
  "url": "https://martinfowler.com/articles/exploring-gen-ai/01-tool-landscape.html",
  "publisher": "martinfowler.com",
  "series": "Exploring Generative AI",
  "series_url": "https://martinfowler.com/articles/exploring-gen-ai.html",
  "snapshot_date": "2026-10-13",
  "contribution": "Organizes coding-assistance tools by task, interaction style, prompt construction and model or hosting choices. The framework helps separate what a tool does from how a developer supplies its context.",
  "limitation": "A July 2023 conceptual landscape, not a comparative benchmark or a current product inventory.",
  "evidence_class": "Conceptual tool taxonomy",
  "source_locator": "Body: task and interaction categories; prompt composition; models and hosting",
  "verification_scope": "Primary article byline and selected body passages inspected; no independent execution or statistical replication",
  "original_data_replicated": false,
  "new_manuscript_citation": false,
  "source_body_archived": false,
  "primary_stream": "T:Engineering structure",
  "streams_json": "[\"T:Engineering structure\", \"T:Productivity\"]",
  "topics_json": "[\"K:Developer workflow and adoption\", \"K:Agent context and persistent memory\"]",
  "editorial_chapters_json": "[\"C:C01\", \"C:C03\", \"C:C09\"]",
  "mapping_status": "Independent editorial mapping, not classification by the article authors or SE@PoliMi",
  "book_citation_status": "COMPANION_READING_NOT_IN_BOOK",
  "node_class": "FOWLER_SERIES_ADDITIVE_OVERLAY_V12",
  "ndse2_actual_chapters_json": "[]",
  "ndse2_in_bibliography": false,
  "ndse2_citation_basis": "Final 13.7.1 active EN/ITA source tree; index links and nocite are not chapter citations",
  "historical_v12_book_citation_status": "NOT_ADDED_TO_BOOK"
}
F002Fowler website

Median - A tale in three functions

Examines three generated median implementations and the defects or side effects that a knowledgeable developer must recognize. The example makes the choice of test expectations part of the engineering work.

Evidence, context & provenance
Evidence boundaryOne small TypeScript example; neither defect prevalence nor a general model-quality comparison was established.

Source type, as recorded: Worked programming example

Cited in published NDSE2 chapters

No literal chapter citation recorded in the published edition.

Editorial chapter mappings

Chapter 5: Quality, Architecture and Maintainability
Chapter 7: Independent Verification and the Oracle Problem
Chapter 10: Developer Learning, Mentoring and Comprehension Debt

Editorial reading suggestions can extend beyond the published citations. Chapter guides show the outline and traceable source references.

Topics. Independent verification and oracles · Automation bias and trust

3 recorded source relationships

These retain the graph’s exact relation labels. A connection is not automatically a causal claim or an independent replication.

All preserved graph attributes
{
  "label": "Median - A tale in three functions",
  "kind": "practitioner_essay",
  "collection": "F",
  "authors": "Birgitta Böckeler",
  "authors_json": "[\"Birgitta Böckeler\"]",
  "publication_date": "2023-07-27",
  "date_provenance": "Dated entry on the supplied series index; article date also used where printed",
  "url": "https://martinfowler.com/articles/exploring-gen-ai/02-median-tale.html",
  "publisher": "martinfowler.com",
  "series": "Exploring Generative AI",
  "series_url": "https://martinfowler.com/articles/exploring-gen-ai.html",
  "snapshot_date": "2026-10-13",
  "contribution": "Examines three generated median implementations and the defects or side effects that a knowledgeable developer must recognize. The example makes the choice of test expectations part of the engineering work.",
  "limitation": "One small TypeScript example; neither defect prevalence nor a general model-quality comparison was established.",
  "evidence_class": "Worked programming example",
  "source_locator": "Body: the three median implementations and the test discussion",
  "verification_scope": "Primary article byline and selected body passages inspected; no independent execution or statistical replication",
  "original_data_replicated": false,
  "new_manuscript_citation": false,
  "source_body_archived": false,
  "primary_stream": "T:Verification & review",
  "streams_json": "[\"T:Verification & review\", \"T:Code quality & security\"]",
  "topics_json": "[\"K:Independent verification and oracles\", \"K:Automation bias and trust\"]",
  "editorial_chapters_json": "[\"C:C05\", \"C:C07\", \"C:C10\"]",
  "mapping_status": "Independent editorial mapping, not classification by the article authors or SE@PoliMi",
  "book_citation_status": "COMPANION_READING_NOT_IN_BOOK",
  "node_class": "FOWLER_SERIES_ADDITIVE_OVERLAY_V12",
  "ndse2_actual_chapters_json": "[]",
  "ndse2_in_bibliography": false,
  "ndse2_citation_basis": "Final 13.7.1 active EN/ITA source tree; index links and nocite are not chapter citations",
  "historical_v12_book_citation_status": "NOT_ADDED_TO_BOOK"
}
F003Fowler website

In-line assistance - when is it more useful?

Discusses when inline suggestions help, considering task familiarity, technology, change size, developer experience and the effort of checking or reworking the output.

Evidence, context & provenance
Evidence boundaryExperience-based guidance, largely from experienced developers; usefulness is not a measured universal productivity effect.

Source type, as recorded: Practitioner experience

Cited in published NDSE2 chapters

No literal chapter citation recorded in the published edition.

Editorial chapter mappings

Chapter 2: Measuring Productivity from Code to Production
Chapter 3: Limits and Capability of Coding Agents
Chapter 10: Developer Learning, Mentoring and Comprehension Debt
Chapter 12: Economics, Jobs, Risk and Evidence-Based Adoption

Editorial reading suggestions can extend beyond the published citations. Chapter guides show the outline and traceable source references.

Topics. Developer workflow and adoption · Human cognitive load · Economic costs and return

2 recorded source relationships

These retain the graph’s exact relation labels. A connection is not automatically a causal claim or an independent replication.

All preserved graph attributes
{
  "label": "In-line assistance - when is it more useful?",
  "kind": "practitioner_essay",
  "collection": "F",
  "authors": "Birgitta Böckeler",
  "authors_json": "[\"Birgitta Böckeler\"]",
  "publication_date": "2023-08-01",
  "date_provenance": "Dated entry on the supplied series index; article date also used where printed",
  "url": "https://martinfowler.com/articles/exploring-gen-ai/03-coding-assistance-when-useful.html",
  "publisher": "martinfowler.com",
  "series": "Exploring Generative AI",
  "series_url": "https://martinfowler.com/articles/exploring-gen-ai.html",
  "snapshot_date": "2026-10-13",
  "contribution": "Discusses when inline suggestions help, considering task familiarity, technology, change size, developer experience and the effort of checking or reworking the output.",
  "limitation": "Experience-based guidance, largely from experienced developers; usefulness is not a measured universal productivity effect.",
  "evidence_class": "Practitioner experience",
  "source_locator": "Body: usefulness factors and review/rework effort",
  "verification_scope": "Primary article byline and selected body passages inspected; no independent execution or statistical replication",
  "original_data_replicated": false,
  "new_manuscript_citation": false,
  "source_body_archived": false,
  "primary_stream": "T:Productivity",
  "streams_json": "[\"T:Productivity\", \"T:Verification & review\"]",
  "topics_json": "[\"K:Developer workflow and adoption\", \"K:Human cognitive load\", \"K:Economic costs and return\"]",
  "editorial_chapters_json": "[\"C:C02\", \"C:C03\", \"C:C10\", \"C:C12\"]",
  "mapping_status": "Independent editorial mapping, not classification by the article authors or SE@PoliMi",
  "book_citation_status": "COMPANION_READING_NOT_IN_BOOK",
  "node_class": "FOWLER_SERIES_ADDITIVE_OVERLAY_V12",
  "ndse2_actual_chapters_json": "[]",
  "ndse2_in_bibliography": false,
  "ndse2_citation_basis": "Final 13.7.1 active EN/ITA source tree; index links and nocite are not chapter citations",
  "historical_v12_book_citation_status": "NOT_ADDED_TO_BOOK"
}
F004Fowler website

In-line assistance - how can it get in the way?

Describes assistants repeating poor patterns from their context and the burden of continually judging suggestions. Relates these experiences to automation bias, anchoring and reluctance to discard generated work.

Evidence, context & provenance
Evidence boundaryQualitative examples and interpretive mechanisms, not measured frequencies of bias or review fatigue.

Source type, as recorded: Practitioner experience

Cited in published NDSE2 chapters

No literal chapter citation recorded in the published edition.

Editorial chapter mappings

Chapter 5: Quality, Architecture and Maintainability
Chapter 8: Code Review and Trust Calibration
Chapter 9: System Understanding, Context and Persistent Memory

Editorial reading suggestions can extend beyond the published citations. Chapter guides show the outline and traceable source references.

Topics. Automation bias and trust · Human cognitive load · Agent context and persistent memory

2 recorded source relationships

These retain the graph’s exact relation labels. A connection is not automatically a causal claim or an independent replication.

All preserved graph attributes
{
  "label": "In-line assistance - how can it get in the way?",
  "kind": "practitioner_essay",
  "collection": "F",
  "authors": "Birgitta Böckeler",
  "authors_json": "[\"Birgitta Böckeler\"]",
  "publication_date": "2023-08-03",
  "date_provenance": "Dated entry on the supplied series index; article date also used where printed",
  "url": "https://martinfowler.com/articles/exploring-gen-ai/04-coding-assistance-how-in-the-way.html",
  "publisher": "martinfowler.com",
  "series": "Exploring Generative AI",
  "series_url": "https://martinfowler.com/articles/exploring-gen-ai.html",
  "snapshot_date": "2026-10-13",
  "contribution": "Describes assistants repeating poor patterns from their context and the burden of continually judging suggestions. Relates these experiences to automation bias, anchoring and reluctance to discard generated work.",
  "limitation": "Qualitative examples and interpretive mechanisms, not measured frequencies of bias or review fatigue.",
  "evidence_class": "Practitioner experience",
  "source_locator": "Body: reinforcing existing practices; reviewing instead of producing",
  "verification_scope": "Primary article byline and selected body passages inspected; no independent execution or statistical replication",
  "original_data_replicated": false,
  "new_manuscript_citation": false,
  "source_body_archived": false,
  "primary_stream": "T:Verification & review",
  "streams_json": "[\"T:Verification & review\", \"T:System knowledge & memory\", \"T:Code quality & security\"]",
  "topics_json": "[\"K:Automation bias and trust\", \"K:Human cognitive load\", \"K:Agent context and persistent memory\"]",
  "editorial_chapters_json": "[\"C:C05\", \"C:C08\", \"C:C09\"]",
  "mapping_status": "Independent editorial mapping, not classification by the article authors or SE@PoliMi",
  "book_citation_status": "COMPANION_READING_NOT_IN_BOOK",
  "node_class": "FOWLER_SERIES_ADDITIVE_OVERLAY_V12",
  "ndse2_actual_chapters_json": "[]",
  "ndse2_in_bibliography": false,
  "ndse2_citation_basis": "Final 13.7.1 active EN/ITA source tree; index links and nocite are not chapter citations",
  "historical_v12_book_citation_status": "NOT_ADDED_TO_BOOK"
}
F005Fowler website

Coding assistants do not replace pair programming

Argues that code assistance does not replace the human knowledge sharing, collaboration and collective understanding associated with pair programming. Tools can instead be used by a human pair.

Evidence, context & provenance
Evidence boundaryAn argument about the functions of pairing; not a controlled comparison of pairing arrangements.

Source type, as recorded: Conceptual argument

Cited in published NDSE2 chapters

No literal chapter citation recorded in the published edition.

Editorial chapter mappings

Chapter 10: Developer Learning, Mentoring and Comprehension Debt
Chapter 11: Teams, Governance and the Engineering Organization

Editorial reading suggestions can extend beyond the published citations. Chapter guides show the outline and traceable source references.

Topics. Human-agent collaboration · Ownership and knowledge transfer · Skills formation and teaching

2 recorded source relationships

These retain the graph’s exact relation labels. A connection is not automatically a causal claim or an independent replication.

All preserved graph attributes
{
  "label": "Coding assistants do not replace pair programming",
  "kind": "practitioner_essay",
  "collection": "F",
  "authors": "Birgitta Böckeler",
  "authors_json": "[\"Birgitta Böckeler\"]",
  "publication_date": "2023-08-10",
  "date_provenance": "Dated entry on the supplied series index; article date also used where printed",
  "url": "https://martinfowler.com/articles/exploring-gen-ai/05-not-your-pair-programmer.html",
  "publisher": "martinfowler.com",
  "series": "Exploring Generative AI",
  "series_url": "https://martinfowler.com/articles/exploring-gen-ai.html",
  "snapshot_date": "2026-10-13",
  "contribution": "Argues that code assistance does not replace the human knowledge sharing, collaboration and collective understanding associated with pair programming. Tools can instead be used by a human pair.",
  "limitation": "An argument about the functions of pairing; not a controlled comparison of pairing arrangements.",
  "evidence_class": "Conceptual argument",
  "source_locator": "Body: knowledge sharing, team flow and pairing with assistance",
  "verification_scope": "Primary article byline and selected body passages inspected; no independent execution or statistical replication",
  "original_data_replicated": false,
  "new_manuscript_citation": false,
  "source_body_archived": false,
  "primary_stream": "T:Skills & learning",
  "streams_json": "[\"T:Skills & learning\", \"T:Engineering structure\", \"T:System knowledge & memory\"]",
  "topics_json": "[\"K:Human-agent collaboration\", \"K:Ownership and knowledge transfer\", \"K:Skills formation and teaching\"]",
  "editorial_chapters_json": "[\"C:C10\", \"C:C11\"]",
  "mapping_status": "Independent editorial mapping, not classification by the article authors or SE@PoliMi",
  "book_citation_status": "COMPANION_READING_NOT_IN_BOOK",
  "node_class": "FOWLER_SERIES_ADDITIVE_OVERLAY_V12",
  "ndse2_actual_chapters_json": "[]",
  "ndse2_in_bibliography": false,
  "ndse2_citation_basis": "Final 13.7.1 active EN/ITA source tree; index links and nocite are not chapter citations",
  "historical_v12_book_citation_status": "NOT_ADDED_TO_BOOK"
}
F006Fowler website

TDD with GitHub Copilot

Explores assistance during red, green and refactor steps. Human test intent and assertions remain important; suggestions can help implementation while also overproducing code or struggling with refactoring.

Evidence, context & provenance
Evidence boundaryExperience with a human-led workflow and an early tool generation; not evidence about fully autonomous TDD or a causal quality gain.

Source type, as recorded: Practitioner workflow report

Cited in published NDSE2 chapters

No literal chapter citation recorded in the published edition.

Editorial chapter mappings

Chapter 3: Limits and Capability of Coding Agents
Chapter 7: Independent Verification and the Oracle Problem
Chapter 10: Developer Learning, Mentoring and Comprehension Debt

Editorial reading suggestions can extend beyond the published citations. Chapter guides show the outline and traceable source references.

Topics. Independent verification and oracles · Human-agent collaboration

2 recorded source relationships

These retain the graph’s exact relation labels. A connection is not automatically a causal claim or an independent replication.

All preserved graph attributes
{
  "label": "TDD with GitHub Copilot",
  "kind": "practitioner_essay",
  "collection": "F",
  "authors": "Paul Sobocinski",
  "authors_json": "[\"Paul Sobocinski\"]",
  "publication_date": "2023-08-17",
  "date_provenance": "Dated entry on the supplied series index; article date also used where printed",
  "url": "https://martinfowler.com/articles/exploring-gen-ai/06-tdd-with-coding-assistance.html",
  "publisher": "martinfowler.com",
  "series": "Exploring Generative AI",
  "series_url": "https://martinfowler.com/articles/exploring-gen-ai.html",
  "snapshot_date": "2026-10-13",
  "contribution": "Explores assistance during red, green and refactor steps. Human test intent and assertions remain important; suggestions can help implementation while also overproducing code or struggling with refactoring.",
  "limitation": "Experience with a human-led workflow and an early tool generation; not evidence about fully autonomous TDD or a causal quality gain.",
  "evidence_class": "Practitioner workflow report",
  "source_locator": "Body: red, green and refactoring discussions",
  "verification_scope": "Primary article byline and selected body passages inspected; no independent execution or statistical replication",
  "original_data_replicated": false,
  "new_manuscript_citation": false,
  "source_body_archived": false,
  "primary_stream": "T:Verification & review",
  "streams_json": "[\"T:Verification & review\", \"T:Skills & learning\"]",
  "topics_json": "[\"K:Independent verification and oracles\", \"K:Human-agent collaboration\"]",
  "editorial_chapters_json": "[\"C:C03\", \"C:C07\", \"C:C10\"]",
  "mapping_status": "Independent editorial mapping, not classification by the article authors or SE@PoliMi",
  "book_citation_status": "COMPANION_READING_NOT_IN_BOOK",
  "node_class": "FOWLER_SERIES_ADDITIVE_OVERLAY_V12",
  "ndse2_actual_chapters_json": "[]",
  "ndse2_in_bibliography": false,
  "ndse2_citation_basis": "Final 13.7.1 active EN/ITA source tree; index links and nocite are not chapter citations",
  "historical_v12_book_citation_status": "NOT_ADDED_TO_BOOK"
}
F007Fowler website

How is GenAI different from other code generators?

Contrasts generative assistance with model-driven development and domain-specific code generators. Examines how control and abstraction differ when generation draws on broad learned patterns rather than an explicitly designed transformation.

Evidence, context & provenance
Evidence boundaryConceptual comparison; it does not demonstrate the reliability or economic superiority of either approach.

Source type, as recorded: Conceptual argument

Cited in published NDSE2 chapters

No literal chapter citation recorded in the published edition.

Editorial chapter mappings

Chapter 1: AI Changes the Unit of Software Work
Chapter 4: Intentions, Contracts and Iterative Change
Chapter 5: Quality, Architecture and Maintainability

Editorial reading suggestions can extend beyond the published citations. Chapter guides show the outline and traceable source references.

Topics. Specifications and governance · Architecture and modularity

2 recorded source relationships

These retain the graph’s exact relation labels. A connection is not automatically a causal claim or an independent replication.

All preserved graph attributes
{
  "label": "How is GenAI different from other code generators?",
  "kind": "practitioner_essay",
  "collection": "F",
  "authors": "Birgitta Böckeler",
  "authors_json": "[\"Birgitta Böckeler\"]",
  "publication_date": "2023-09-19",
  "date_provenance": "Dated entry on the supplied series index; article date also used where printed",
  "url": "https://martinfowler.com/articles/exploring-gen-ai/07-how-is-this-different.html",
  "publisher": "martinfowler.com",
  "series": "Exploring Generative AI",
  "series_url": "https://martinfowler.com/articles/exploring-gen-ai.html",
  "snapshot_date": "2026-10-13",
  "contribution": "Contrasts generative assistance with model-driven development and domain-specific code generators. Examines how control and abstraction differ when generation draws on broad learned patterns rather than an explicitly designed transformation.",
  "limitation": "Conceptual comparison; it does not demonstrate the reliability or economic superiority of either approach.",
  "evidence_class": "Conceptual argument",
  "source_locator": "Body: abstraction levels and comparison with traditional generation",
  "verification_scope": "Primary article byline and selected body passages inspected; no independent execution or statistical replication",
  "original_data_replicated": false,
  "new_manuscript_citation": false,
  "source_body_archived": false,
  "primary_stream": "T:Engineering structure",
  "streams_json": "[\"T:Engineering structure\"]",
  "topics_json": "[\"K:Specifications and governance\", \"K:Architecture and modularity\"]",
  "editorial_chapters_json": "[\"C:C01\", \"C:C04\", \"C:C05\"]",
  "mapping_status": "Independent editorial mapping, not classification by the article authors or SE@PoliMi",
  "book_citation_status": "COMPANION_READING_NOT_IN_BOOK",
  "node_class": "FOWLER_SERIES_ADDITIVE_OVERLAY_V12",
  "ndse2_actual_chapters_json": "[]",
  "ndse2_in_bibliography": false,
  "ndse2_citation_basis": "Final 13.7.1 active EN/ITA source tree; index links and nocite are not chapter citations",
  "historical_v12_book_citation_status": "NOT_ADDED_TO_BOOK"
}
F008Fowler websiteIn the published NDSE2 bibliography

How to tackle unreliability of coding assistants

Frames confidence in assistance around feedback, the developer’s ability to check an answer and the consequences of error. Proposes timeboxing unproductive assistance and retaining responsibility for the result.

Evidence, context & provenance
Evidence boundaryPersonal heuristics rather than calibrated reliability estimates; informal numerical intuitions are not treated as measured rates.

Source type, as recorded: Practitioner guidance

Cited in published NDSE2 chapters

Chapter 3: Limits and Capability of Coding Agents

Editorial chapter mappings

Chapter 3: Limits and Capability of Coding Agents
Chapter 7: Independent Verification and the Oracle Problem
Chapter 8: Code Review and Trust Calibration
Chapter 13: Choosing Practices and Recognizing Their Limits

Editorial reading suggestions can extend beyond the published citations. Chapter guides show the outline and traceable source references.

Topics. Agent failure and escalation · Independent verification and oracles · Automation bias and trust

4 recorded source relationships

These retain the graph’s exact relation labels. A connection is not automatically a causal claim or an independent replication.

All preserved graph attributes
{
  "label": "How to tackle unreliability of coding assistants",
  "kind": "practitioner_essay",
  "collection": "F",
  "authors": "Birgitta Böckeler",
  "authors_json": "[\"Birgitta Böckeler\"]",
  "publication_date": "2023-11-29",
  "date_provenance": "Dated entry on the supplied series index; article date also used where printed",
  "url": "https://martinfowler.com/articles/exploring-gen-ai/08-how-to-tackle-unreliability.html",
  "publisher": "martinfowler.com",
  "series": "Exploring Generative AI",
  "series_url": "https://martinfowler.com/articles/exploring-gen-ai.html",
  "snapshot_date": "2026-10-13",
  "contribution": "Frames confidence in assistance around feedback, the developer’s ability to check an answer and the consequences of error. Proposes timeboxing unproductive assistance and retaining responsibility for the result.",
  "limitation": "Personal heuristics rather than calibrated reliability estimates; informal numerical intuitions are not treated as measured rates.",
  "evidence_class": "Practitioner guidance",
  "source_locator": "Body: confidence, timeboxing and assistant persona",
  "verification_scope": "Primary article byline and selected body passages inspected; no independent execution or statistical replication",
  "original_data_replicated": false,
  "new_manuscript_citation": true,
  "source_body_archived": false,
  "primary_stream": "T:Verification & review",
  "streams_json": "[\"T:Verification & review\", \"T:What agents can do\"]",
  "topics_json": "[\"K:Agent failure and escalation\", \"K:Independent verification and oracles\", \"K:Automation bias and trust\"]",
  "editorial_chapters_json": "[\"C:C03\", \"C:C07\", \"C:C08\", \"C:C13\"]",
  "mapping_status": "Independent editorial mapping, not classification by the article authors or SE@PoliMi",
  "book_citation_status": "IN_PUBLISHED_NDSE2_BIBLIOGRAPHY",
  "node_class": "FOWLER_SERIES_ADDITIVE_OVERLAY_V12",
  "ndse2_actual_chapters_json": "[\"C:C03\"]",
  "ndse2_in_bibliography": true,
  "ndse2_citation_basis": "Final 13.7.1 active EN/ITA source tree; index links and nocite are not chapter citations",
  "historical_v12_book_citation_status": "NOT_ADDED_TO_BOOK",
  "historical_v12_new_manuscript_citation": false
}
F009Fowler website

Onboarding to a 'legacy' codebase with the help of AI

Recounts work on an unfamiliar Bahmni/OpenMRS issue. AI helped with terminology and code navigation, but environment setup, fixtures and mocking remained obstacles, and the issue was not solved in the attempt.

Evidence, context & provenance
Evidence boundaryOne exploratory onboarding attempt; no measured reduction in onboarding time or demonstrated long-term comprehension.

Source type, as recorded: Exploratory case report

Cited in published NDSE2 chapters

No literal chapter citation recorded in the published edition.

Editorial chapter mappings

Chapter 5: Quality, Architecture and Maintainability
Chapter 9: System Understanding, Context and Persistent Memory
Chapter 10: Developer Learning, Mentoring and Comprehension Debt

Editorial reading suggestions can extend beyond the published citations. Chapter guides show the outline and traceable source references.

Topics. Onboarding and developer fluency · System understanding and rationale

3 recorded source relationships

These retain the graph’s exact relation labels. A connection is not automatically a causal claim or an independent replication.

All preserved graph attributes
{
  "label": "Onboarding to a 'legacy' codebase with the help of AI",
  "kind": "practitioner_essay",
  "collection": "F",
  "authors": "Birgitta Böckeler",
  "authors_json": "[\"Birgitta Böckeler\"]",
  "publication_date": "2024-08-15",
  "date_provenance": "Dated entry on the supplied series index; article date also used where printed",
  "url": "https://martinfowler.com/articles/exploring-gen-ai/09-ai-help-onboarding-codebase.html",
  "publisher": "martinfowler.com",
  "series": "Exploring Generative AI",
  "series_url": "https://martinfowler.com/articles/exploring-gen-ai.html",
  "snapshot_date": "2026-10-13",
  "contribution": "Recounts work on an unfamiliar Bahmni/OpenMRS issue. AI helped with terminology and code navigation, but environment setup, fixtures and mocking remained obstacles, and the issue was not solved in the attempt.",
  "limitation": "One exploratory onboarding attempt; no measured reduction in onboarding time or demonstrated long-term comprehension.",
  "evidence_class": "Exploratory case report",
  "source_locator": "Body: issue exploration, code search, environment and testing attempts",
  "verification_scope": "Primary article byline and selected body passages inspected; no independent execution or statistical replication",
  "original_data_replicated": false,
  "new_manuscript_citation": false,
  "source_body_archived": false,
  "primary_stream": "T:System knowledge & memory",
  "streams_json": "[\"T:System knowledge & memory\", \"T:Skills & learning\"]",
  "topics_json": "[\"K:Onboarding and developer fluency\", \"K:System understanding and rationale\"]",
  "editorial_chapters_json": "[\"C:C05\", \"C:C09\", \"C:C10\"]",
  "mapping_status": "Independent editorial mapping, not classification by the article authors or SE@PoliMi",
  "book_citation_status": "COMPANION_READING_NOT_IN_BOOK",
  "node_class": "FOWLER_SERIES_ADDITIVE_OVERLAY_V12",
  "ndse2_actual_chapters_json": "[]",
  "ndse2_in_bibliography": false,
  "ndse2_citation_basis": "Final 13.7.1 active EN/ITA source tree; index links and nocite are not chapter citations",
  "historical_v12_book_citation_status": "NOT_ADDED_TO_BOOK"
}
F010Fowler website

Building an AI agent application to migrate a tech stack

Builds a tool-using agent to migrate tests from Enzyme to React Testing Library. The account exposes file-editing, test-feedback and context-management problems alongside successful transformations.

Evidence, context & provenance
Evidence boundaryA bounded migration experiment with substantial failures; not proof of reliable autonomous migration across a codebase.

Source type, as recorded: Exploratory implementation experiment

Cited in published NDSE2 chapters

No literal chapter citation recorded in the published edition.

Editorial chapter mappings

Chapter 3: Limits and Capability of Coding Agents
Chapter 5: Quality, Architecture and Maintainability
Chapter 7: Independent Verification and the Oracle Problem
Chapter 9: System Understanding, Context and Persistent Memory

Editorial reading suggestions can extend beyond the published citations. Chapter guides show the outline and traceable source references.

Topics. Agent failure and escalation · Long-running agent execution · Independent verification and oracles

1 recorded source relationships

These retain the graph’s exact relation labels. A connection is not automatically a causal claim or an independent replication.

All preserved graph attributes
{
  "label": "Building an AI agent application to migrate a tech stack",
  "kind": "practitioner_essay",
  "collection": "F",
  "authors": "Birgitta Böckeler",
  "authors_json": "[\"Birgitta Böckeler\"]",
  "publication_date": "2024-08-20",
  "date_provenance": "Dated entry on the supplied series index; article date also used where printed",
  "url": "https://martinfowler.com/articles/exploring-gen-ai/10-ai-for-tech-stack-migration.html",
  "publisher": "martinfowler.com",
  "series": "Exploring Generative AI",
  "series_url": "https://martinfowler.com/articles/exploring-gen-ai.html",
  "snapshot_date": "2026-10-13",
  "contribution": "Builds a tool-using agent to migrate tests from Enzyme to React Testing Library. The account exposes file-editing, test-feedback and context-management problems alongside successful transformations.",
  "limitation": "A bounded migration experiment with substantial failures; not proof of reliable autonomous migration across a codebase.",
  "evidence_class": "Exploratory implementation experiment",
  "source_locator": "Body: manually solved baseline, agent setup and migration observations",
  "verification_scope": "Primary article byline and selected body passages inspected; no independent execution or statistical replication",
  "original_data_replicated": false,
  "new_manuscript_citation": false,
  "source_body_archived": false,
  "primary_stream": "T:What agents can do",
  "streams_json": "[\"T:What agents can do\", \"T:Code quality & security\", \"T:System knowledge & memory\"]",
  "topics_json": "[\"K:Agent failure and escalation\", \"K:Long-running agent execution\", \"K:Independent verification and oracles\"]",
  "editorial_chapters_json": "[\"C:C03\", \"C:C05\", \"C:C07\", \"C:C09\"]",
  "mapping_status": "Independent editorial mapping, not classification by the article authors or SE@PoliMi",
  "book_citation_status": "COMPANION_READING_NOT_IN_BOOK",
  "node_class": "FOWLER_SERIES_ADDITIVE_OVERLAY_V12",
  "ndse2_actual_chapters_json": "[]",
  "ndse2_in_bibliography": false,
  "ndse2_citation_basis": "Final 13.7.1 active EN/ITA source tree; index links and nocite are not chapter citations",
  "historical_v12_book_citation_status": "NOT_ADDED_TO_BOOK"
}
F011Fowler website

Expanding the solution size with multi-file editing

Examines how multi-file edits enlarge the unit of AI-assisted work. Larger suggestions create new checking demands, including unrelated changes, and motivate layered feedback and comprehensible module boundaries.

Evidence, context & provenance
Evidence boundaryA tool-use snapshot and qualitative experience; no comparative defect rate or current feature guarantee.

Source type, as recorded: Practitioner tool exploration

Cited in published NDSE2 chapters

No literal chapter citation recorded in the published edition.

Editorial chapter mappings

Chapter 3: Limits and Capability of Coding Agents
Chapter 5: Quality, Architecture and Maintainability
Chapter 8: Code Review and Trust Calibration

Editorial reading suggestions can extend beyond the published citations. Chapter guides show the outline and traceable source references.

Topics. Architecture and modularity · Review capacity and maintainers · Developer workflow and adoption

2 recorded source relationships

These retain the graph’s exact relation labels. A connection is not automatically a causal claim or an independent replication.

All preserved graph attributes
{
  "label": "Expanding the solution size with multi-file editing",
  "kind": "practitioner_essay",
  "collection": "F",
  "authors": "Birgitta Böckeler",
  "authors_json": "[\"Birgitta Böckeler\"]",
  "publication_date": "2024-11-19",
  "date_provenance": "Dated entry on the supplied series index; article date also used where printed",
  "url": "https://martinfowler.com/articles/exploring-gen-ai/11-multi-file-editing.html",
  "publisher": "martinfowler.com",
  "series": "Exploring Generative AI",
  "series_url": "https://martinfowler.com/articles/exploring-gen-ai.html",
  "snapshot_date": "2026-10-13",
  "contribution": "Examines how multi-file edits enlarge the unit of AI-assisted work. Larger suggestions create new checking demands, including unrelated changes, and motivate layered feedback and comprehensible module boundaries.",
  "limitation": "A tool-use snapshot and qualitative experience; no comparative defect rate or current feature guarantee.",
  "evidence_class": "Practitioner tool exploration",
  "source_locator": "Body: multi-file mode, feedback loops and implications of larger changes",
  "verification_scope": "Primary article byline and selected body passages inspected; no independent execution or statistical replication",
  "original_data_replicated": false,
  "new_manuscript_citation": false,
  "source_body_archived": false,
  "primary_stream": "T:Code quality & security",
  "streams_json": "[\"T:Code quality & security\", \"T:Verification & review\", \"T:What agents can do\"]",
  "topics_json": "[\"K:Architecture and modularity\", \"K:Review capacity and maintainers\", \"K:Developer workflow and adoption\"]",
  "editorial_chapters_json": "[\"C:C03\", \"C:C05\", \"C:C08\"]",
  "mapping_status": "Independent editorial mapping, not classification by the article authors or SE@PoliMi",
  "book_citation_status": "COMPANION_READING_NOT_IN_BOOK",
  "node_class": "FOWLER_SERIES_ADDITIVE_OVERLAY_V12",
  "ndse2_actual_chapters_json": "[]",
  "ndse2_in_bibliography": false,
  "ndse2_citation_basis": "Final 13.7.1 active EN/ITA source tree; index links and nocite are not chapter citations",
  "historical_v12_book_citation_status": "NOT_ADDED_TO_BOOK"
}
F012Fowler website

What role does LLM reasoning play for software tasks?

Questions where model reasoning adds value to coding tasks compared with supplying repository context and useful tool feedback. Considers debugging and planning as possible settings for investigation.

Evidence, context & provenance
Evidence boundaryTentative analysis from February 2025, not a current model-feature comparison or evidence that reasoning always helps or harms coding.

Source type, as recorded: Conceptual analysis

Cited in published NDSE2 chapters

No literal chapter citation recorded in the published edition.

Editorial chapter mappings

Chapter 3: Limits and Capability of Coding Agents
Chapter 9: System Understanding, Context and Persistent Memory

Editorial reading suggestions can extend beyond the published citations. Chapter guides show the outline and traceable source references.

Topics. Evaluation methodology and baselines · Agent context and persistent memory

1 recorded source relationships

These retain the graph’s exact relation labels. A connection is not automatically a causal claim or an independent replication.

All preserved graph attributes
{
  "label": "What role does LLM reasoning play for software tasks?",
  "kind": "practitioner_essay",
  "collection": "F",
  "authors": "Birgitta Böckeler",
  "authors_json": "[\"Birgitta Böckeler\"]",
  "publication_date": "2025-02-18",
  "date_provenance": "Dated entry on the supplied series index; article date also used where printed",
  "url": "https://martinfowler.com/articles/exploring-gen-ai/12-role-of-reasoning.html",
  "publisher": "martinfowler.com",
  "series": "Exploring Generative AI",
  "series_url": "https://martinfowler.com/articles/exploring-gen-ai.html",
  "snapshot_date": "2026-10-13",
  "contribution": "Questions where model reasoning adds value to coding tasks compared with supplying repository context and useful tool feedback. Considers debugging and planning as possible settings for investigation.",
  "limitation": "Tentative analysis from February 2025, not a current model-feature comparison or evidence that reasoning always helps or harms coding.",
  "evidence_class": "Conceptual analysis",
  "source_locator": "Body: reasoning models, software tasks and contextual/tool feedback",
  "verification_scope": "Primary article byline and selected body passages inspected; no independent execution or statistical replication",
  "original_data_replicated": false,
  "new_manuscript_citation": false,
  "source_body_archived": false,
  "primary_stream": "T:What agents can do",
  "streams_json": "[\"T:What agents can do\", \"T:System knowledge & memory\"]",
  "topics_json": "[\"K:Evaluation methodology and baselines\", \"K:Agent context and persistent memory\"]",
  "editorial_chapters_json": "[\"C:C03\", \"C:C09\"]",
  "mapping_status": "Independent editorial mapping, not classification by the article authors or SE@PoliMi",
  "book_citation_status": "COMPANION_READING_NOT_IN_BOOK",
  "node_class": "FOWLER_SERIES_ADDITIVE_OVERLAY_V12",
  "ndse2_actual_chapters_json": "[]",
  "ndse2_in_bibliography": false,
  "ndse2_citation_basis": "Final 13.7.1 active EN/ITA source tree; index links and nocite are not chapter citations",
  "historical_v12_book_citation_status": "NOT_ADDED_TO_BOOK"
}
F013Fowler websiteIn the published NDSE2 bibliography

The role of developer skills in agentic coding

Uses agent missteps to explain why decomposition, debugging, design judgment and checking remain valuable. Separates immediate completion from team iteration and the lifetime of the codebase.

Evidence, context & provenance
Evidence boundaryExperience-based examples, not a measured skills intervention or a forecast of developer employment.

Source type, as recorded: Practitioner analysis

Cited in published NDSE2 chapters

Chapter 10: Developer Learning, Mentoring and Comprehension Debt

Editorial chapter mappings

Chapter 1: AI Changes the Unit of Software Work
Chapter 5: Quality, Architecture and Maintainability
Chapter 10: Developer Learning, Mentoring and Comprehension Debt
Chapter 11: Teams, Governance and the Engineering Organization

Editorial reading suggestions can extend beyond the published citations. Chapter guides show the outline and traceable source references.

Topics. Skills formation and teaching · Technical debt and complexity · Human-agent collaboration

3 recorded source relationships

These retain the graph’s exact relation labels. A connection is not automatically a causal claim or an independent replication.

All preserved graph attributes
{
  "label": "The role of developer skills in agentic coding",
  "kind": "practitioner_essay",
  "collection": "F",
  "authors": "Birgitta Böckeler",
  "authors_json": "[\"Birgitta Böckeler\"]",
  "publication_date": "2025-03-25",
  "date_provenance": "Dated entry on the supplied series index; article date also used where printed",
  "url": "https://martinfowler.com/articles/exploring-gen-ai/13-role-of-developer-skills.html",
  "publisher": "martinfowler.com",
  "series": "Exploring Generative AI",
  "series_url": "https://martinfowler.com/articles/exploring-gen-ai.html",
  "snapshot_date": "2026-10-13",
  "contribution": "Uses agent missteps to explain why decomposition, debugging, design judgment and checking remain valuable. Separates immediate completion from team iteration and the lifetime of the codebase.",
  "limitation": "Experience-based examples, not a measured skills intervention or a forecast of developer employment.",
  "evidence_class": "Practitioner analysis",
  "source_locator": "Body: missteps and the time-to-commit, iteration and codebase-lifetime perspectives",
  "verification_scope": "Primary article byline and selected body passages inspected; no independent execution or statistical replication",
  "original_data_replicated": false,
  "new_manuscript_citation": true,
  "source_body_archived": false,
  "primary_stream": "T:Skills & learning",
  "streams_json": "[\"T:Skills & learning\", \"T:Code quality & security\", \"T:Engineering structure\"]",
  "topics_json": "[\"K:Skills formation and teaching\", \"K:Technical debt and complexity\", \"K:Human-agent collaboration\"]",
  "editorial_chapters_json": "[\"C:C01\", \"C:C05\", \"C:C10\", \"C:C11\"]",
  "mapping_status": "Independent editorial mapping, not classification by the article authors or SE@PoliMi",
  "book_citation_status": "IN_PUBLISHED_NDSE2_BIBLIOGRAPHY",
  "node_class": "FOWLER_SERIES_ADDITIVE_OVERLAY_V12",
  "ndse2_actual_chapters_json": "[\"C:C10\"]",
  "ndse2_in_bibliography": true,
  "ndse2_citation_basis": "Final 13.7.1 active EN/ITA source tree; index links and nocite are not chapter citations",
  "historical_v12_book_citation_status": "NOT_ADDED_TO_BOOK",
  "historical_v12_new_manuscript_citation": false
}
F014Fowler website

Guiding an LLM for Robust Java ByteBuffer Code

Follows a developer–LLM dialogue about Java ByteBuffer header access. The engineer uncovers problems with mutable buffer position and guides the design toward clearer access and encapsulation.

Evidence, context & provenance
Evidence boundaryAn illustrative dialogue; removing position mutation does not by itself establish thread safety or general performance.

Source type, as recorded: Worked programming example

Cited in published NDSE2 chapters

No literal chapter citation recorded in the published edition.

Editorial chapter mappings

Chapter 5: Quality, Architecture and Maintainability
Chapter 7: Independent Verification and the Oracle Problem
Chapter 10: Developer Learning, Mentoring and Comprehension Debt

Editorial reading suggestions can extend beyond the published citations. Chapter guides show the outline and traceable source references.

Topics. Architecture and modularity · Independent verification and oracles · System understanding and rationale

1 recorded source relationships

These retain the graph’s exact relation labels. A connection is not automatically a causal claim or an independent replication.

All preserved graph attributes
{
  "label": "Guiding an LLM for Robust Java ByteBuffer Code",
  "kind": "practitioner_essay",
  "collection": "F",
  "authors": "Unmesh Joshi",
  "authors_json": "[\"Unmesh Joshi\"]",
  "publication_date": "2025-04-17",
  "date_provenance": "Dated entry on the supplied series index; article date also used where printed",
  "url": "https://martinfowler.com/articles/exploring-gen-ai/14-guiding-llm-java-bytebuffer.html",
  "publisher": "martinfowler.com",
  "series": "Exploring Generative AI",
  "series_url": "https://martinfowler.com/articles/exploring-gen-ai.html",
  "snapshot_date": "2026-10-13",
  "contribution": "Follows a developer–LLM dialogue about Java ByteBuffer header access. The engineer uncovers problems with mutable buffer position and guides the design toward clearer access and encapsulation.",
  "limitation": "An illustrative dialogue; removing position mutation does not by itself establish thread safety or general performance.",
  "evidence_class": "Worked programming example",
  "source_locator": "Body: header reading, position side effects and absolute access",
  "verification_scope": "Primary article byline and selected body passages inspected; no independent execution or statistical replication",
  "original_data_replicated": false,
  "new_manuscript_citation": false,
  "source_body_archived": false,
  "primary_stream": "T:Code quality & security",
  "streams_json": "[\"T:Code quality & security\", \"T:Verification & review\"]",
  "topics_json": "[\"K:Architecture and modularity\", \"K:Independent verification and oracles\", \"K:System understanding and rationale\"]",
  "editorial_chapters_json": "[\"C:C05\", \"C:C07\", \"C:C10\"]",
  "mapping_status": "Independent editorial mapping, not classification by the article authors or SE@PoliMi",
  "book_citation_status": "COMPANION_READING_NOT_IN_BOOK",
  "node_class": "FOWLER_SERIES_ADDITIVE_OVERLAY_V12",
  "ndse2_actual_chapters_json": "[]",
  "ndse2_in_bibliography": false,
  "ndse2_citation_basis": "Final 13.7.1 active EN/ITA source tree; index links and nocite are not chapter citations",
  "historical_v12_book_citation_status": "NOT_ADDED_TO_BOOK"
}
F015Fowler website

Building TMT Mirror Visualization with LLM: A Step-by-Step Journey

Describes building a telescope-mirror visualization with unfamiliar tools. Small geometric steps, visual checks and domain knowledge guide successive changes while the developer learns the implementation approach.

Evidence, context & provenance
Evidence boundaryA personal prototype-building account; neither retained learning nor broader productivity was evaluated.

Source type, as recorded: Exploratory learning case

Cited in published NDSE2 chapters

No literal chapter citation recorded in the published edition.

Editorial chapter mappings

Chapter 3: Limits and Capability of Coding Agents
Chapter 4: Intentions, Contracts and Iterative Change
Chapter 10: Developer Learning, Mentoring and Comprehension Debt

Editorial reading suggestions can extend beyond the published citations. Chapter guides show the outline and traceable source references.

Topics. Skills formation and teaching · Human-agent collaboration · Developer workflow and adoption

1 recorded source relationships

These retain the graph’s exact relation labels. A connection is not automatically a causal claim or an independent replication.

All preserved graph attributes
{
  "label": "Building TMT Mirror Visualization with LLM: A Step-by-Step Journey",
  "kind": "practitioner_essay",
  "collection": "F",
  "authors": "Unmesh Joshi",
  "authors_json": "[\"Unmesh Joshi\"]",
  "publication_date": "2025-04-30",
  "date_provenance": "Dated entry on the supplied series index; article date also used where printed",
  "url": "https://martinfowler.com/articles/exploring-gen-ai/15-building-tmt-mirror-visualization.html",
  "publisher": "martinfowler.com",
  "series": "Exploring Generative AI",
  "series_url": "https://martinfowler.com/articles/exploring-gen-ai.html",
  "snapshot_date": "2026-10-13",
  "contribution": "Describes building a telescope-mirror visualization with unfamiliar tools. Small geometric steps, visual checks and domain knowledge guide successive changes while the developer learns the implementation approach.",
  "limitation": "A personal prototype-building account; neither retained learning nor broader productivity was evaluated.",
  "evidence_class": "Exploratory learning case",
  "source_locator": "Body: initial visualization, hexagon geometry and iterative refinement",
  "verification_scope": "Primary article byline and selected body passages inspected; no independent execution or statistical replication",
  "original_data_replicated": false,
  "new_manuscript_citation": false,
  "source_body_archived": false,
  "primary_stream": "T:Skills & learning",
  "streams_json": "[\"T:Skills & learning\", \"T:What agents can do\"]",
  "topics_json": "[\"K:Skills formation and teaching\", \"K:Human-agent collaboration\", \"K:Developer workflow and adoption\"]",
  "editorial_chapters_json": "[\"C:C03\", \"C:C04\", \"C:C10\"]",
  "mapping_status": "Independent editorial mapping, not classification by the article authors or SE@PoliMi",
  "book_citation_status": "COMPANION_READING_NOT_IN_BOOK",
  "node_class": "FOWLER_SERIES_ADDITIVE_OVERLAY_V12",
  "ndse2_actual_chapters_json": "[]",
  "ndse2_in_bibliography": false,
  "ndse2_citation_basis": "Final 13.7.1 active EN/ITA source tree; index links and nocite are not chapter citations",
  "historical_v12_book_citation_status": "NOT_ADDED_TO_BOOK"
}
F016Fowler websiteIn the published NDSE2 bibliography

Coding Assistants Threaten the Software Supply Chain

Analyzes the attack surface created when coding assistants consume project instructions and invoke tools with developer privileges. Discusses poisoned context, dependency risks and boundaries around execution.

Evidence, context & provenance
Evidence boundarySecurity analysis rather than an attack-incidence study. Protocol and tool details belong to the May 2025 publication context.

Source type, as recorded: Threat analysis

Cited in published NDSE2 chapters

Chapter 6: Securing Generated Code and Agent Runtimes

Editorial chapter mappings

Chapter 3: Limits and Capability of Coding Agents
Chapter 6: Securing Generated Code and Agent Runtimes

Editorial reading suggestions can extend beyond the published citations. Chapter guides show the outline and traceable source references.

Topics. Prompt injection and malicious tools · Dependencies and agent supply chain

4 recorded source relationships

These retain the graph’s exact relation labels. A connection is not automatically a causal claim or an independent replication.

All preserved graph attributes
{
  "label": "Coding Assistants Threaten the Software Supply Chain",
  "kind": "practitioner_essay",
  "collection": "F",
  "authors": "Jim Gumbley; Lilly Ryan",
  "authors_json": "[\"Jim Gumbley\", \"Lilly Ryan\"]",
  "publication_date": "2025-05-13",
  "date_provenance": "Dated entry on the supplied series index; article date also used where printed",
  "url": "https://martinfowler.com/articles/exploring-gen-ai/software-supply-chain-attack-surface.html",
  "publisher": "martinfowler.com",
  "series": "Exploring Generative AI",
  "series_url": "https://martinfowler.com/articles/exploring-gen-ai.html",
  "snapshot_date": "2026-10-13",
  "contribution": "Analyzes the attack surface created when coding assistants consume project instructions and invoke tools with developer privileges. Discusses poisoned context, dependency risks and boundaries around execution.",
  "limitation": "Security analysis rather than an attack-incidence study. Protocol and tool details belong to the May 2025 publication context.",
  "evidence_class": "Threat analysis",
  "source_locator": "Body: assistant inputs, tools, supply-chain exposure and defenses",
  "verification_scope": "Primary article byline and selected body passages inspected; no independent execution or statistical replication",
  "original_data_replicated": false,
  "new_manuscript_citation": true,
  "source_body_archived": false,
  "primary_stream": "T:Code quality & security",
  "streams_json": "[\"T:Code quality & security\", \"T:Engineering structure\"]",
  "topics_json": "[\"K:Prompt injection and malicious tools\", \"K:Dependencies and agent supply chain\"]",
  "editorial_chapters_json": "[\"C:C03\", \"C:C06\"]",
  "mapping_status": "Independent editorial mapping, not classification by the article authors or SE@PoliMi",
  "book_citation_status": "IN_PUBLISHED_NDSE2_BIBLIOGRAPHY",
  "node_class": "FOWLER_SERIES_ADDITIVE_OVERLAY_V12",
  "ndse2_actual_chapters_json": "[\"C:C06\"]",
  "ndse2_in_bibliography": true,
  "ndse2_citation_basis": "Final 13.7.1 active EN/ITA source tree; index links and nocite are not chapter citations",
  "historical_v12_book_citation_status": "NOT_ADDED_TO_BOOK",
  "historical_v12_new_manuscript_citation": false
}
F017Fowler website

Building Custom Tooling with LLMs

Recounts extending PlantUML with custom visualization tooling. The developer uses generation and feedback to build the tool, while shaping abstractions and keeping the resulting code understandable and maintainable.

Evidence, context & provenance
Evidence boundaryOne custom-tooling case; lower perceived effort is not a controlled productivity estimate.

Source type, as recorded: Practitioner implementation case

Cited in published NDSE2 chapters

No literal chapter citation recorded in the published edition.

Editorial chapter mappings

Chapter 3: Limits and Capability of Coding Agents
Chapter 5: Quality, Architecture and Maintainability
Chapter 9: System Understanding, Context and Persistent Memory
Chapter 10: Developer Learning, Mentoring and Comprehension Debt

Editorial reading suggestions can extend beyond the published citations. Chapter guides show the outline and traceable source references.

Topics. Architecture and modularity · System understanding and rationale · Developer workflow and adoption

2 recorded source relationships

These retain the graph’s exact relation labels. A connection is not automatically a causal claim or an independent replication.

All preserved graph attributes
{
  "label": "Building Custom Tooling with LLMs",
  "kind": "practitioner_essay",
  "collection": "F",
  "authors": "Unmesh Joshi",
  "authors_json": "[\"Unmesh Joshi\"]",
  "publication_date": "2025-05-14",
  "date_provenance": "Dated entry on the supplied series index; article date also used where printed",
  "url": "https://martinfowler.com/articles/exploring-gen-ai/16-building-custom-tooling-with-llms.html",
  "publisher": "martinfowler.com",
  "series": "Exploring Generative AI",
  "series_url": "https://martinfowler.com/articles/exploring-gen-ai.html",
  "snapshot_date": "2026-10-13",
  "contribution": "Recounts extending PlantUML with custom visualization tooling. The developer uses generation and feedback to build the tool, while shaping abstractions and keeping the resulting code understandable and maintainable.",
  "limitation": "One custom-tooling case; lower perceived effort is not a controlled productivity estimate.",
  "evidence_class": "Practitioner implementation case",
  "source_locator": "Body: PlantUML extension, implementation iterations and code habitability",
  "verification_scope": "Primary article byline and selected body passages inspected; no independent execution or statistical replication",
  "original_data_replicated": false,
  "new_manuscript_citation": false,
  "source_body_archived": false,
  "primary_stream": "T:Code quality & security",
  "streams_json": "[\"T:Code quality & security\", \"T:Productivity\", \"T:System knowledge & memory\"]",
  "topics_json": "[\"K:Architecture and modularity\", \"K:System understanding and rationale\", \"K:Developer workflow and adoption\"]",
  "editorial_chapters_json": "[\"C:C03\", \"C:C05\", \"C:C09\", \"C:C10\"]",
  "mapping_status": "Independent editorial mapping, not classification by the article authors or SE@PoliMi",
  "book_citation_status": "COMPANION_READING_NOT_IN_BOOK",
  "node_class": "FOWLER_SERIES_ADDITIVE_OVERLAY_V12",
  "ndse2_actual_chapters_json": "[]",
  "ndse2_in_bibliography": false,
  "ndse2_citation_basis": "Final 13.7.1 active EN/ITA source tree; index links and nocite are not chapter citations",
  "historical_v12_book_citation_status": "NOT_ADDED_TO_BOOK"
}
F018Fowler website

Autonomous coding agents: A Codex example

Inspects a background agent making a small Haiven change. The execution trace reveals code-search behavior, missing executable checks and inconsistent reuse across attempts, distinguishing unattended execution from accepted work.

Evidence, context & provenance
Evidence boundaryA small dated tool experiment; not a model ranking or a general estimate of autonomous success.

Source type, as recorded: Exploratory agent case

Cited in published NDSE2 chapters

No literal chapter citation recorded in the published edition.

Editorial chapter mappings

Chapter 3: Limits and Capability of Coding Agents
Chapter 5: Quality, Architecture and Maintainability
Chapter 7: Independent Verification and the Oracle Problem
Chapter 9: System Understanding, Context and Persistent Memory

Editorial reading suggestions can extend beyond the published citations. Chapter guides show the outline and traceable source references.

Topics. Agent failure and escalation · Code reuse and duplication · Independent verification and oracles

3 recorded source relationships

These retain the graph’s exact relation labels. A connection is not automatically a causal claim or an independent replication.

All preserved graph attributes
{
  "label": "Autonomous coding agents: A Codex example",
  "kind": "practitioner_essay",
  "collection": "F",
  "authors": "Birgitta Böckeler",
  "authors_json": "[\"Birgitta Böckeler\"]",
  "publication_date": "2025-06-04",
  "date_provenance": "Dated entry on the supplied series index; article date also used where printed",
  "url": "https://martinfowler.com/articles/exploring-gen-ai/autonomous-agents-codex-example.html",
  "publisher": "martinfowler.com",
  "series": "Exploring Generative AI",
  "series_url": "https://martinfowler.com/articles/exploring-gen-ai.html",
  "snapshot_date": "2026-10-13",
  "contribution": "Inspects a background agent making a small Haiven change. The execution trace reveals code-search behavior, missing executable checks and inconsistent reuse across attempts, distinguishing unattended execution from accepted work.",
  "limitation": "A small dated tool experiment; not a model ranking or a general estimate of autonomous success.",
  "evidence_class": "Exploratory agent case",
  "source_locator": "Body: supervised/background distinction, task trace and repeated attempts",
  "verification_scope": "Primary article byline and selected body passages inspected; no independent execution or statistical replication",
  "original_data_replicated": false,
  "new_manuscript_citation": false,
  "source_body_archived": false,
  "primary_stream": "T:What agents can do",
  "streams_json": "[\"T:What agents can do\", \"T:Verification & review\"]",
  "topics_json": "[\"K:Agent failure and escalation\", \"K:Code reuse and duplication\", \"K:Independent verification and oracles\"]",
  "editorial_chapters_json": "[\"C:C03\", \"C:C05\", \"C:C07\", \"C:C09\"]",
  "mapping_status": "Independent editorial mapping, not classification by the article authors or SE@PoliMi",
  "book_citation_status": "COMPANION_READING_NOT_IN_BOOK",
  "node_class": "FOWLER_SERIES_ADDITIVE_OVERLAY_V12",
  "ndse2_actual_chapters_json": "[]",
  "ndse2_in_bibliography": false,
  "ndse2_citation_basis": "Final 13.7.1 active EN/ITA source tree; index links and nocite are not chapter citations",
  "historical_v12_book_citation_status": "NOT_ADDED_TO_BOOK"
}
F019Fowler website

I still care about the code

Argues that responsibility for operational software still requires understanding code and its risks. Contrasts probabilistic generation with designed language translation and relates oversight to possible error consequences.

Evidence, context & provenance
Evidence boundaryA professional position, not a calibrated threshold for how much review every change requires.

Source type, as recorded: Conceptual argument

Cited in published NDSE2 chapters

No literal chapter citation recorded in the published edition.

Editorial chapter mappings

Chapter 1: AI Changes the Unit of Software Work
Chapter 5: Quality, Architecture and Maintainability
Chapter 8: Code Review and Trust Calibration
Chapter 13: Choosing Practices and Recognizing Their Limits

Editorial reading suggestions can extend beyond the published citations. Chapter guides show the outline and traceable source references.

Topics. Automation bias and trust · System understanding and rationale · Ownership and knowledge transfer

2 recorded source relationships

These retain the graph’s exact relation labels. A connection is not automatically a causal claim or an independent replication.

All preserved graph attributes
{
  "label": "I still care about the code",
  "kind": "practitioner_essay",
  "collection": "F",
  "authors": "Birgitta Böckeler",
  "authors_json": "[\"Birgitta Böckeler\"]",
  "publication_date": "2025-07-09",
  "date_provenance": "Dated entry on the supplied series index; article date also used where printed",
  "url": "https://martinfowler.com/articles/exploring-gen-ai/i-still-care-about-the-code.html",
  "publisher": "martinfowler.com",
  "series": "Exploring Generative AI",
  "series_url": "https://martinfowler.com/articles/exploring-gen-ai.html",
  "snapshot_date": "2026-10-13",
  "contribution": "Argues that responsibility for operational software still requires understanding code and its risks. Contrasts probabilistic generation with designed language translation and relates oversight to possible error consequences.",
  "limitation": "A professional position, not a calibrated threshold for how much review every change requires.",
  "evidence_class": "Conceptual argument",
  "source_locator": "Body: operational responsibility and comparison with compilers",
  "verification_scope": "Primary article byline and selected body passages inspected; no independent execution or statistical replication",
  "original_data_replicated": false,
  "new_manuscript_citation": false,
  "source_body_archived": false,
  "primary_stream": "T:Verification & review",
  "streams_json": "[\"T:Verification & review\", \"T:Code quality & security\"]",
  "topics_json": "[\"K:Automation bias and trust\", \"K:System understanding and rationale\", \"K:Ownership and knowledge transfer\"]",
  "editorial_chapters_json": "[\"C:C01\", \"C:C05\", \"C:C08\", \"C:C13\"]",
  "mapping_status": "Independent editorial mapping, not classification by the article authors or SE@PoliMi",
  "book_citation_status": "COMPANION_READING_NOT_IN_BOOK",
  "node_class": "FOWLER_SERIES_ADDITIVE_OVERLAY_V12",
  "ndse2_actual_chapters_json": "[]",
  "ndse2_in_bibliography": false,
  "ndse2_citation_basis": "Final 13.7.1 active EN/ITA source tree; index links and nocite are not chapter citations",
  "historical_v12_book_citation_status": "NOT_ADDED_TO_BOOK"
}
F020Fowler website

Partner with the AI, throw away the code

In a Go/MySQL performance investigation, generated helpers, experiments and unsuccessful rewrites helped the developer understand the problem before rewriting the core solution. Useful assistance can therefore leave little accepted generated code.

Evidence, context & provenance
Evidence boundaryA single client case; code-acceptance rate is questioned, but a general AI-caused productivity gain is not measured.

Source type, as recorded: Practitioner case report

Cited in published NDSE2 chapters

No literal chapter citation recorded in the published edition.

Editorial chapter mappings

Chapter 2: Measuring Productivity from Code to Production
Chapter 5: Quality, Architecture and Maintainability
Chapter 10: Developer Learning, Mentoring and Comprehension Debt
Chapter 12: Economics, Jobs, Risk and Evidence-Based Adoption

Editorial reading suggestions can extend beyond the published citations. Chapter guides show the outline and traceable source references.

Topics. Output versus shipped value · Evaluation methodology and baselines · System understanding and rationale

2 recorded source relationships

These retain the graph’s exact relation labels. A connection is not automatically a causal claim or an independent replication.

All preserved graph attributes
{
  "label": "Partner with the AI, throw away the code",
  "kind": "practitioner_essay",
  "collection": "F",
  "authors": "Matteo Vaccari",
  "authors_json": "[\"Matteo Vaccari\"]",
  "publication_date": "2025-07-31",
  "date_provenance": "Dated entry on the supplied series index; article date also used where printed",
  "url": "https://martinfowler.com/articles/exploring-gen-ai/partner-with-ai-and-throw-away-the-code.html",
  "publisher": "martinfowler.com",
  "series": "Exploring Generative AI",
  "series_url": "https://martinfowler.com/articles/exploring-gen-ai.html",
  "snapshot_date": "2026-10-13",
  "contribution": "In a Go/MySQL performance investigation, generated helpers, experiments and unsuccessful rewrites helped the developer understand the problem before rewriting the core solution. Useful assistance can therefore leave little accepted generated code.",
  "limitation": "A single client case; code-acceptance rate is questioned, but a general AI-caused productivity gain is not measured.",
  "evidence_class": "Practitioner case report",
  "source_locator": "Body: diagnosis, experiments, discarded proposals and final rewrite",
  "verification_scope": "Primary article byline and selected body passages inspected; no independent execution or statistical replication",
  "original_data_replicated": false,
  "new_manuscript_citation": false,
  "source_body_archived": false,
  "primary_stream": "T:Productivity",
  "streams_json": "[\"T:Productivity\", \"T:Skills & learning\", \"T:Economics\"]",
  "topics_json": "[\"K:Output versus shipped value\", \"K:Evaluation methodology and baselines\", \"K:System understanding and rationale\"]",
  "editorial_chapters_json": "[\"C:C02\", \"C:C05\", \"C:C10\", \"C:C12\"]",
  "mapping_status": "Independent editorial mapping, not classification by the article authors or SE@PoliMi",
  "book_citation_status": "COMPANION_READING_NOT_IN_BOOK",
  "node_class": "FOWLER_SERIES_ADDITIVE_OVERLAY_V12",
  "ndse2_actual_chapters_json": "[]",
  "ndse2_in_bibliography": false,
  "ndse2_citation_basis": "Final 13.7.1 active EN/ITA source tree; index links and nocite are not chapter citations",
  "historical_v12_book_citation_status": "NOT_ADDED_TO_BOOK"
}
F021Fowler website

To vibe or not to vibe

Describes decisions about oversight using the chance of an error, its impact and the ability to detect it. The examples favor situation-dependent attention over a single rule for all generated code.

Evidence, context & provenance
Evidence boundaryA qualitative risk heuristic and personal experience; not a statistically calibrated risk model.

Source type, as recorded: Practitioner decision heuristic

Cited in published NDSE2 chapters

No literal chapter citation recorded in the published edition.

Editorial chapter mappings

Chapter 1: AI Changes the Unit of Software Work
Chapter 8: Code Review and Trust Calibration
Chapter 13: Choosing Practices and Recognizing Their Limits

Editorial reading suggestions can extend beyond the published citations. Chapter guides show the outline and traceable source references.

Topics. Automation bias and trust · Human-agent collaboration

2 recorded source relationships

These retain the graph’s exact relation labels. A connection is not automatically a causal claim or an independent replication.

All preserved graph attributes
{
  "label": "To vibe or not to vibe",
  "kind": "practitioner_essay",
  "collection": "F",
  "authors": "Birgitta Böckeler",
  "authors_json": "[\"Birgitta Böckeler\"]",
  "publication_date": "2025-09-23",
  "date_provenance": "Dated entry on the supplied series index; article date also used where printed",
  "url": "https://martinfowler.com/articles/exploring-gen-ai/to-vibe-or-not-vibe.html",
  "publisher": "martinfowler.com",
  "series": "Exploring Generative AI",
  "series_url": "https://martinfowler.com/articles/exploring-gen-ai.html",
  "snapshot_date": "2026-10-13",
  "contribution": "Describes decisions about oversight using the chance of an error, its impact and the ability to detect it. The examples favor situation-dependent attention over a single rule for all generated code.",
  "limitation": "A qualitative risk heuristic and personal experience; not a statistically calibrated risk model.",
  "evidence_class": "Practitioner decision heuristic",
  "source_locator": "Body: risk factors and situational review decisions",
  "verification_scope": "Primary article byline and selected body passages inspected; no independent execution or statistical replication",
  "original_data_replicated": false,
  "new_manuscript_citation": false,
  "source_body_archived": false,
  "primary_stream": "T:Verification & review",
  "streams_json": "[\"T:Verification & review\", \"T:Engineering structure\"]",
  "topics_json": "[\"K:Automation bias and trust\", \"K:Human-agent collaboration\"]",
  "editorial_chapters_json": "[\"C:C01\", \"C:C08\", \"C:C13\"]",
  "mapping_status": "Independent editorial mapping, not classification by the article authors or SE@PoliMi",
  "book_citation_status": "COMPANION_READING_NOT_IN_BOOK",
  "node_class": "FOWLER_SERIES_ADDITIVE_OVERLAY_V12",
  "ndse2_actual_chapters_json": "[]",
  "ndse2_in_bibliography": false,
  "ndse2_citation_basis": "Final 13.7.1 active EN/ITA source tree; index links and nocite are not chapter citations",
  "historical_v12_book_citation_status": "NOT_ADDED_TO_BOOK"
}
F022Fowler website

Anchoring AI to a reference application

Explores using a runnable reference application to guide changes across services. A scoped comparison and a reviewed change report precede implementation, raising a choice between AI-based propagation and deterministic transformations.

Evidence, context & provenance
Evidence boundaryA small reference-update example; consistency and maintainability at organizational scale remain untested.

Source type, as recorded: Exploratory workflow example

Cited in published NDSE2 chapters

No literal chapter citation recorded in the published edition.

Editorial chapter mappings

Chapter 4: Intentions, Contracts and Iterative Change
Chapter 5: Quality, Architecture and Maintainability
Chapter 9: System Understanding, Context and Persistent Memory

Editorial reading suggestions can extend beyond the published citations. Chapter guides show the outline and traceable source references.

Topics. Architecture and modularity · Agent context and persistent memory · Specifications and governance

1 recorded source relationships

These retain the graph’s exact relation labels. A connection is not automatically a causal claim or an independent replication.

All preserved graph attributes
{
  "label": "Anchoring AI to a reference application",
  "kind": "practitioner_essay",
  "collection": "F",
  "authors": "Birgitta Böckeler",
  "authors_json": "[\"Birgitta Böckeler\"]",
  "publication_date": "2025-09-25",
  "date_provenance": "Dated entry on the supplied series index; article date also used where printed",
  "url": "https://martinfowler.com/articles/exploring-gen-ai/anchoring-to-reference.html",
  "publisher": "martinfowler.com",
  "series": "Exploring Generative AI",
  "series_url": "https://martinfowler.com/articles/exploring-gen-ai.html",
  "snapshot_date": "2026-10-13",
  "contribution": "Explores using a runnable reference application to guide changes across services. A scoped comparison and a reviewed change report precede implementation, raising a choice between AI-based propagation and deterministic transformations.",
  "limitation": "A small reference-update example; consistency and maintainability at organizational scale remain untested.",
  "evidence_class": "Exploratory workflow example",
  "source_locator": "Body: reference application, differences, report and update workflow",
  "verification_scope": "Primary article byline and selected body passages inspected; no independent execution or statistical replication",
  "original_data_replicated": false,
  "new_manuscript_citation": false,
  "source_body_archived": false,
  "primary_stream": "T:System knowledge & memory",
  "streams_json": "[\"T:System knowledge & memory\", \"T:Code quality & security\", \"T:Engineering structure\"]",
  "topics_json": "[\"K:Architecture and modularity\", \"K:Agent context and persistent memory\", \"K:Specifications and governance\"]",
  "editorial_chapters_json": "[\"C:C04\", \"C:C05\", \"C:C09\"]",
  "mapping_status": "Independent editorial mapping, not classification by the article authors or SE@PoliMi",
  "book_citation_status": "COMPANION_READING_NOT_IN_BOOK",
  "node_class": "FOWLER_SERIES_ADDITIVE_OVERLAY_V12",
  "ndse2_actual_chapters_json": "[]",
  "ndse2_in_bibliography": false,
  "ndse2_citation_basis": "Final 13.7.1 active EN/ITA source tree; index links and nocite are not chapter citations",
  "historical_v12_book_citation_status": "NOT_ADDED_TO_BOOK"
}
F023Fowler websiteIn the published NDSE2 bibliography

Understanding Spec-Driven-Development: Kiro, spec-kit, and Tessl

Distinguishes spec-first, spec-anchored and spec-as-source approaches through three tool explorations. Examines persistent specifications, task sizing, brownfield fit, instruction following and documentation overhead.

Evidence, context & provenance
Evidence boundaryA dated exploratory comparison, not controlled evidence for SDD effectiveness. The author’s questions about specification overhead and source-of-truth claims are retained.

Source type, as recorded: Practitioner comparative exploration

Cited in published NDSE2 chapters

Chapter 4: Intentions, Contracts and Iterative Change

Editorial chapter mappings

Chapter 4: Intentions, Contracts and Iterative Change
Chapter 9: System Understanding, Context and Persistent Memory
Chapter 11: Teams, Governance and the Engineering Organization
Chapter 13: Choosing Practices and Recognizing Their Limits

Editorial reading suggestions can extend beyond the published citations. Chapter guides show the outline and traceable source references.

Topics. Specifications and governance · Developer workflow and adoption · Agent context and persistent memory

6 recorded source relationships

These retain the graph’s exact relation labels. A connection is not automatically a causal claim or an independent replication.

All preserved graph attributes
{
  "label": "Understanding Spec-Driven-Development: Kiro, spec-kit, and Tessl",
  "kind": "practitioner_essay",
  "collection": "F",
  "authors": "Birgitta Böckeler",
  "authors_json": "[\"Birgitta Böckeler\"]",
  "publication_date": "2025-10-15",
  "date_provenance": "Dated entry on the supplied series index; article date also used where printed",
  "url": "https://martinfowler.com/articles/exploring-gen-ai/sdd-3-tools.html",
  "publisher": "martinfowler.com",
  "series": "Exploring Generative AI",
  "series_url": "https://martinfowler.com/articles/exploring-gen-ai.html",
  "snapshot_date": "2026-10-13",
  "contribution": "Distinguishes spec-first, spec-anchored and spec-as-source approaches through three tool explorations. Examines persistent specifications, task sizing, brownfield fit, instruction following and documentation overhead.",
  "limitation": "A dated exploratory comparison, not controlled evidence for SDD effectiveness. The author’s questions about specification overhead and source-of-truth claims are retained.",
  "evidence_class": "Practitioner comparative exploration",
  "source_locator": "Body: definitions of SDD; Kiro, spec-kit and Tessl explorations; reflections",
  "verification_scope": "Primary article byline and selected body passages inspected; no independent execution or statistical replication",
  "original_data_replicated": false,
  "new_manuscript_citation": true,
  "source_body_archived": false,
  "primary_stream": "T:Engineering structure",
  "streams_json": "[\"T:Engineering structure\", \"T:System knowledge & memory\"]",
  "topics_json": "[\"K:Specifications and governance\", \"K:Developer workflow and adoption\", \"K:Agent context and persistent memory\"]",
  "editorial_chapters_json": "[\"C:C04\", \"C:C09\", \"C:C11\", \"C:C13\"]",
  "mapping_status": "Independent editorial mapping, not classification by the article authors or SE@PoliMi",
  "book_citation_status": "IN_PUBLISHED_NDSE2_BIBLIOGRAPHY",
  "node_class": "FOWLER_SERIES_ADDITIVE_OVERLAY_V12",
  "ndse2_actual_chapters_json": "[\"C:C04\"]",
  "ndse2_in_bibliography": true,
  "ndse2_citation_basis": "Final 13.7.1 active EN/ITA source tree; index links and nocite are not chapter citations",
  "historical_v12_book_citation_status": "NOT_ADDED_TO_BOOK",
  "historical_v12_new_manuscript_citation": false
}
F024Fowler websiteIn the published NDSE2 bibliography

Assessing internal quality while coding with an agent

Uses a CCMenu feature change to inspect internal quality. A fix that compiles can still erode the intended type model, introduce duplication or add unnecessary mechanisms; expert examination exposes those differences.

Evidence, context & provenance
Evidence boundaryThe author presents an anecdote, not a study; observations do not establish a population-level quality effect.

Source type, as recorded: Practitioner code-review case

Cited in published NDSE2 chapters

Chapter 5: Quality, Architecture and Maintainability

Editorial chapter mappings

Chapter 5: Quality, Architecture and Maintainability
Chapter 7: Independent Verification and the Oracle Problem
Chapter 8: Code Review and Trust Calibration

Editorial reading suggestions can extend beyond the published citations. Chapter guides show the outline and traceable source references.

Topics. Technical debt and complexity · Code reuse and duplication · Architecture and modularity

3 recorded source relationships

These retain the graph’s exact relation labels. A connection is not automatically a causal claim or an independent replication.

All preserved graph attributes
{
  "label": "Assessing internal quality while coding with an agent",
  "kind": "practitioner_essay",
  "collection": "F",
  "authors": "Erik Doernenburg",
  "authors_json": "[\"Erik Doernenburg\"]",
  "publication_date": "2026-01-27",
  "date_provenance": "Dated entry on the supplied series index; article date also used where printed",
  "url": "https://martinfowler.com/articles/exploring-gen-ai/ccmenu-quality.html",
  "publisher": "martinfowler.com",
  "series": "Exploring Generative AI",
  "series_url": "https://martinfowler.com/articles/exploring-gen-ai.html",
  "snapshot_date": "2026-10-13",
  "contribution": "Uses a CCMenu feature change to inspect internal quality. A fix that compiles can still erode the intended type model, introduce duplication or add unnecessary mechanisms; expert examination exposes those differences.",
  "limitation": "The author presents an anecdote, not a study; observations do not establish a population-level quality effect.",
  "evidence_class": "Practitioner code-review case",
  "source_locator": "Body: GitLab support, optional values, duplication and cache behavior",
  "verification_scope": "Primary article byline and selected body passages inspected; no independent execution or statistical replication",
  "original_data_replicated": false,
  "new_manuscript_citation": true,
  "source_body_archived": false,
  "primary_stream": "T:Code quality & security",
  "streams_json": "[\"T:Code quality & security\", \"T:Verification & review\"]",
  "topics_json": "[\"K:Technical debt and complexity\", \"K:Code reuse and duplication\", \"K:Architecture and modularity\"]",
  "editorial_chapters_json": "[\"C:C05\", \"C:C07\", \"C:C08\"]",
  "mapping_status": "Independent editorial mapping, not classification by the article authors or SE@PoliMi",
  "book_citation_status": "IN_PUBLISHED_NDSE2_BIBLIOGRAPHY",
  "node_class": "FOWLER_SERIES_ADDITIVE_OVERLAY_V12",
  "ndse2_actual_chapters_json": "[\"C:C05\"]",
  "ndse2_in_bibliography": true,
  "ndse2_citation_basis": "Final 13.7.1 active EN/ITA source tree; index links and nocite are not chapter citations",
  "historical_v12_book_citation_status": "NOT_ADDED_TO_BOOK",
  "historical_v12_new_manuscript_citation": false
}
F025Fowler websiteIn the published NDSE2 bibliography

Context Engineering for Coding Agents

Organizes context features by who invokes them: a person, the model or agent software. Discusses rules, skills, subagents, external context and hooks as parts of the developer experience.

Evidence, context & provenance
Evidence boundaryFeature and practice snapshot, not proof of effectiveness or enforcement. Adding more configuration can produce contradictions or an illusion of control.

Source type, as recorded: Practitioner technical taxonomy

Cited in published NDSE2 chapters

Chapter 9: System Understanding, Context and Persistent Memory

Editorial chapter mappings

Chapter 3: Limits and Capability of Coding Agents
Chapter 9: System Understanding, Context and Persistent Memory
Chapter 13: Choosing Practices and Recognizing Their Limits

Editorial reading suggestions can extend beyond the published citations. Chapter guides show the outline and traceable source references.

Topics. Agent context and persistent memory · Developer workflow and adoption · Specifications and governance

4 recorded source relationships

These retain the graph’s exact relation labels. A connection is not automatically a causal claim or an independent replication.

All preserved graph attributes
{
  "label": "Context Engineering for Coding Agents",
  "kind": "practitioner_essay",
  "collection": "F",
  "authors": "Birgitta Böckeler",
  "authors_json": "[\"Birgitta Böckeler\"]",
  "publication_date": "2026-02-05",
  "date_provenance": "Dated entry on the supplied series index; article date also used where printed",
  "url": "https://martinfowler.com/articles/exploring-gen-ai/context-engineering-coding-agents.html",
  "publisher": "martinfowler.com",
  "series": "Exploring Generative AI",
  "series_url": "https://martinfowler.com/articles/exploring-gen-ai.html",
  "snapshot_date": "2026-10-13",
  "contribution": "Organizes context features by who invokes them: a person, the model or agent software. Discusses rules, skills, subagents, external context and hooks as parts of the developer experience.",
  "limitation": "Feature and practice snapshot, not proof of effectiveness or enforcement. Adding more configuration can produce contradictions or an illusion of control.",
  "evidence_class": "Practitioner technical taxonomy",
  "source_locator": "Body: trigger-based feature overview and context configuration",
  "verification_scope": "Primary article byline and selected body passages inspected; no independent execution or statistical replication",
  "original_data_replicated": false,
  "new_manuscript_citation": true,
  "source_body_archived": false,
  "primary_stream": "T:System knowledge & memory",
  "streams_json": "[\"T:System knowledge & memory\", \"T:Engineering structure\"]",
  "topics_json": "[\"K:Agent context and persistent memory\", \"K:Developer workflow and adoption\", \"K:Specifications and governance\"]",
  "editorial_chapters_json": "[\"C:C03\", \"C:C09\", \"C:C13\"]",
  "mapping_status": "Independent editorial mapping, not classification by the article authors or SE@PoliMi",
  "book_citation_status": "IN_PUBLISHED_NDSE2_BIBLIOGRAPHY",
  "node_class": "FOWLER_SERIES_ADDITIVE_OVERLAY_V12",
  "ndse2_actual_chapters_json": "[\"C:C09\"]",
  "ndse2_in_bibliography": true,
  "ndse2_citation_basis": "Final 13.7.1 active EN/ITA source tree; index links and nocite are not chapter citations",
  "historical_v12_book_citation_status": "NOT_ADDED_TO_BOOK",
  "historical_v12_new_manuscript_citation": false
}
F026Fowler websiteIn the published NDSE2 bibliography

Harness Engineering - first thoughts

Interprets a reported harness through context, architectural constraints and codebase maintenance. Raises questions about reusable harnesses, constrained topologies and the effort of retrofitting existing systems.

Evidence, context & provenance
Evidence boundaryA reaction to another organization’s account, not an independent experiment. The author explicitly notes a gap in the reported functional verification.

Source type, as recorded: Interpretive practitioner commentary

Read the expanded source version ↗

Topics. Architecture and modularity · Independent verification and oracles · Long-running agent execution

3 recorded source relationships

These retain the graph’s exact relation labels. A connection is not automatically a causal claim or an independent replication.

All preserved graph attributes
{
  "label": "Harness Engineering - first thoughts",
  "kind": "practitioner_essay",
  "collection": "F",
  "authors": "Birgitta Böckeler",
  "authors_json": "[\"Birgitta Böckeler\"]",
  "publication_date": "2026-02-17",
  "date_provenance": "Dated entry on the supplied series index; article date also used where printed",
  "url": "https://martinfowler.com/articles/exploring-gen-ai/harness-engineering-memo.html",
  "publisher": "martinfowler.com",
  "series": "Exploring Generative AI",
  "series_url": "https://martinfowler.com/articles/exploring-gen-ai.html",
  "snapshot_date": "2026-10-13",
  "contribution": "Interprets a reported harness through context, architectural constraints and codebase maintenance. Raises questions about reusable harnesses, constrained topologies and the effort of retrofitting existing systems.",
  "limitation": "A reaction to another organization’s account, not an independent experiment. The author explicitly notes a gap in the reported functional verification.",
  "evidence_class": "Interpretive practitioner commentary",
  "source_locator": "Body: three categories; templates; runtime constraints; brownfield retrofit; final thoughts",
  "verification_scope": "Primary article byline and selected body passages inspected; no independent execution or statistical replication",
  "original_data_replicated": false,
  "new_manuscript_citation": true,
  "source_body_archived": false,
  "primary_stream": "T:Engineering structure",
  "streams_json": "[\"T:Engineering structure\", \"T:Code quality & security\"]",
  "topics_json": "[\"K:Architecture and modularity\", \"K:Independent verification and oracles\", \"K:Long-running agent execution\"]",
  "editorial_chapters_json": "[\"C:C03\", \"C:C05\", \"C:C07\", \"C:C11\", \"C:C13\"]",
  "mapping_status": "Independent editorial mapping, not classification by the article authors or SE@PoliMi",
  "book_citation_status": "IN_PUBLISHED_NDSE2_BIBLIOGRAPHY",
  "node_class": "FOWLER_SERIES_ADDITIVE_OVERLAY_V12",
  "source_version_status": "EARLIER_MEMO_SUPERSEDED_BY_EXPANDED_ARTICLE",
  "latest_version_url": "https://martinfowler.com/articles/harness-engineering.html",
  "latest_version_title": "Harness engineering for coding agent users",
  "latest_version_publication_date": "2026-04-02",
  "supersession_verified_date": "2026-10-18",
  "source_version_note": "The later primary article explicitly supersedes this 17 February memo. Direct retrieval still exposes the historical memo with a pointer to the expansion; an HTTP redirect was not established.",
  "ndse2_actual_chapters_json": "[\"C:C13\"]",
  "ndse2_in_bibliography": true,
  "ndse2_citation_basis": "Final 13.7.1 active EN/ITA source tree; index links and nocite are not chapter citations",
  "historical_v12_book_citation_status": "NOT_ADDED_TO_BOOK",
  "historical_v12_new_manuscript_citation": false
}
F027Fowler websiteIn the published NDSE2 bibliography

Humans and Agents in Software Engineering Loops

Distinguishes the why loop that pursues outcomes from nested how loops that build software. Proposes human work on the loop: improving guidance, checks and workflow rather than only editing individual outputs.

Evidence, context & provenance
Evidence boundaryA conceptual operating model. Its proposed agentic improvement flywheel is not a demonstrated organizational or reliability result.

Source type, as recorded: Conceptual operating model

Cited in published NDSE2 chapters

Chapter 11: Teams, Governance and the Engineering Organization

Editorial chapter mappings

Chapter 1: AI Changes the Unit of Software Work
Chapter 3: Limits and Capability of Coding Agents
Chapter 11: Teams, Governance and the Engineering Organization
Chapter 13: Choosing Practices and Recognizing Their Limits

Editorial reading suggestions can extend beyond the published citations. Chapter guides show the outline and traceable source references.

Topics. Human-agent collaboration · Long-running agent execution · Specifications and governance

4 recorded source relationships

These retain the graph’s exact relation labels. A connection is not automatically a causal claim or an independent replication.

All preserved graph attributes
{
  "label": "Humans and Agents in Software Engineering Loops",
  "kind": "practitioner_essay",
  "collection": "F",
  "authors": "Kief Morris",
  "authors_json": "[\"Kief Morris\"]",
  "publication_date": "2026-03-04",
  "date_provenance": "Dated entry on the supplied series index; article date also used where printed",
  "url": "https://martinfowler.com/articles/exploring-gen-ai/humans-and-agents.html",
  "publisher": "martinfowler.com",
  "series": "Exploring Generative AI",
  "series_url": "https://martinfowler.com/articles/exploring-gen-ai.html",
  "snapshot_date": "2026-10-13",
  "contribution": "Distinguishes the why loop that pursues outcomes from nested how loops that build software. Proposes human work on the loop: improving guidance, checks and workflow rather than only editing individual outputs.",
  "limitation": "A conceptual operating model. Its proposed agentic improvement flywheel is not a demonstrated organizational or reliability result.",
  "evidence_class": "Conceptual operating model",
  "source_locator": "Body: why/how loops; humans outside, in and on the loop; flywheel",
  "verification_scope": "Primary article byline and selected body passages inspected; no independent execution or statistical replication",
  "original_data_replicated": false,
  "new_manuscript_citation": true,
  "source_body_archived": false,
  "primary_stream": "T:Engineering structure",
  "streams_json": "[\"T:Engineering structure\", \"T:Jobs & roles\"]",
  "topics_json": "[\"K:Human-agent collaboration\", \"K:Long-running agent execution\", \"K:Specifications and governance\"]",
  "editorial_chapters_json": "[\"C:C01\", \"C:C03\", \"C:C11\", \"C:C13\"]",
  "mapping_status": "Independent editorial mapping, not classification by the article authors or SE@PoliMi",
  "book_citation_status": "IN_PUBLISHED_NDSE2_BIBLIOGRAPHY",
  "node_class": "FOWLER_SERIES_ADDITIVE_OVERLAY_V12",
  "ndse2_actual_chapters_json": "[\"C:C11\"]",
  "ndse2_in_bibliography": true,
  "ndse2_citation_basis": "Final 13.7.1 active EN/ITA source tree; index links and nocite are not chapter citations",
  "historical_v12_book_citation_status": "NOT_ADDED_TO_BOOK",
  "historical_v12_new_manuscript_citation": false
}
F028Fowler website

Viability of local models for coding

Frames local agentic coding as a combined hardware, model, runtime, context and tool-calling problem. The account separates being able to run a model from obtaining usable results.

Evidence, context & provenance
Evidence boundaryA personal hardware/tool snapshot. Explanations for observed configuration differences are hypotheses; code quality was not systematically evaluated.

Source type, as recorded: Practitioner configuration exploration

Cited in published NDSE2 chapters

No literal chapter citation recorded in the published edition.

Editorial chapter mappings

Chapter 3: Limits and Capability of Coding Agents
Chapter 9: System Understanding, Context and Persistent Memory
Chapter 12: Economics, Jobs, Risk and Evidence-Based Adoption

Editorial reading suggestions can extend beyond the published citations. Chapter guides show the outline and traceable source references.

Topics. Agent context and persistent memory · Economic costs and return · Evaluation methodology and baselines

3 recorded source relationships

These retain the graph’s exact relation labels. A connection is not automatically a causal claim or an independent replication.

All preserved graph attributes
{
  "label": "Viability of local models for coding",
  "kind": "practitioner_essay",
  "collection": "F",
  "authors": "Birgitta Böckeler",
  "authors_json": "[\"Birgitta Böckeler\"]",
  "publication_date": "2026-07-07",
  "date_provenance": "Dated entry on the supplied series index; article date also used where printed",
  "url": "https://martinfowler.com/articles/exploring-gen-ai/local-models-for-coding-factors.html",
  "publisher": "martinfowler.com",
  "series": "Exploring Generative AI",
  "series_url": "https://martinfowler.com/articles/exploring-gen-ai.html",
  "snapshot_date": "2026-10-13",
  "contribution": "Frames local agentic coding as a combined hardware, model, runtime, context and tool-calling problem. The account separates being able to run a model from obtaining usable results.",
  "limitation": "A personal hardware/tool snapshot. Explanations for observed configuration differences are hypotheses; code quality was not systematically evaluated.",
  "evidence_class": "Practitioner configuration exploration",
  "source_locator": "Scope; factors influencing viability; context size and harness; conclusions",
  "verification_scope": "Primary article byline and selected body passages inspected; no independent execution or statistical replication",
  "original_data_replicated": false,
  "new_manuscript_citation": false,
  "source_body_archived": false,
  "primary_stream": "T:What agents can do",
  "streams_json": "[\"T:What agents can do\", \"T:Economics\", \"T:System knowledge & memory\"]",
  "topics_json": "[\"K:Agent context and persistent memory\", \"K:Economic costs and return\", \"K:Evaluation methodology and baselines\"]",
  "editorial_chapters_json": "[\"C:C03\", \"C:C09\", \"C:C12\"]",
  "mapping_status": "Independent editorial mapping, not classification by the article authors or SE@PoliMi",
  "book_citation_status": "COMPANION_READING_NOT_IN_BOOK",
  "node_class": "FOWLER_SERIES_ADDITIVE_OVERLAY_V12",
  "ndse2_actual_chapters_json": "[]",
  "ndse2_in_bibliography": false,
  "ndse2_citation_basis": "Final 13.7.1 active EN/ITA source tree; index links and nocite are not chapter citations",
  "historical_v12_book_citation_status": "NOT_ADDED_TO_BOOK"
}
F029Fowler website

Experiences with local models for coding

Presents a viability funnel and compares manual trials, a small automated evaluation and everyday local-model use. Outcome sensitivity to task, context and configuration makes simple capability claims difficult.

Evidence, context & provenance
Evidence boundaryTwo principal JavaScript/TypeScript tasks and small uneven repeat counts; one-shot automated trials differ from interactive work and do not establish a general ranking.

Source type, as recorded: Exploratory task evaluation

Cited in published NDSE2 chapters

No literal chapter citation recorded in the published edition.

Editorial chapter mappings

Chapter 2: Measuring Productivity from Code to Production
Chapter 3: Limits and Capability of Coding Agents
Chapter 9: System Understanding, Context and Persistent Memory
Chapter 12: Economics, Jobs, Risk and Evidence-Based Adoption

Editorial reading suggestions can extend beyond the published citations. Chapter guides show the outline and traceable source references.

Topics. Benchmarks and construct validity · Evaluation methodology and baselines · Agent context and persistent memory

4 recorded source relationships

These retain the graph’s exact relation labels. A connection is not automatically a causal claim or an independent replication.

All preserved graph attributes
{
  "label": "Experiences with local models for coding",
  "kind": "practitioner_essay",
  "collection": "F",
  "authors": "Birgitta Böckeler",
  "authors_json": "[\"Birgitta Böckeler\"]",
  "publication_date": "2026-07-08",
  "date_provenance": "Dated entry on the supplied series index; article date also used where printed",
  "url": "https://martinfowler.com/articles/exploring-gen-ai/local-models-for-coding-experiences.html",
  "publisher": "martinfowler.com",
  "series": "Exploring Generative AI",
  "series_url": "https://martinfowler.com/articles/exploring-gen-ai.html",
  "snapshot_date": "2026-10-13",
  "contribution": "Presents a viability funnel and compares manual trials, a small automated evaluation and everyday local-model use. Outcome sensitivity to task, context and configuration makes simple capability claims difficult.",
  "limitation": "Two principal JavaScript/TypeScript tasks and small uneven repeat counts; one-shot automated trials differ from interactive work and do not establish a general ranking.",
  "evidence_class": "Exploratory task evaluation",
  "source_locator": "Viability funnel; two task descriptions; manual/automated phases; day-to-day use",
  "verification_scope": "Primary article byline and selected body passages inspected; no independent execution or statistical replication",
  "original_data_replicated": false,
  "new_manuscript_citation": false,
  "source_body_archived": false,
  "primary_stream": "T:What agents can do",
  "streams_json": "[\"T:What agents can do\", \"T:Productivity\", \"T:System knowledge & memory\"]",
  "topics_json": "[\"K:Benchmarks and construct validity\", \"K:Evaluation methodology and baselines\", \"K:Agent context and persistent memory\"]",
  "editorial_chapters_json": "[\"C:C02\", \"C:C03\", \"C:C09\", \"C:C12\"]",
  "mapping_status": "Independent editorial mapping, not classification by the article authors or SE@PoliMi",
  "book_citation_status": "COMPANION_READING_NOT_IN_BOOK",
  "node_class": "FOWLER_SERIES_ADDITIVE_OVERLAY_V12",
  "ndse2_actual_chapters_json": "[]",
  "ndse2_in_bibliography": false,
  "ndse2_citation_basis": "Final 13.7.1 active EN/ITA source tree; index links and nocite are not chapter citations",
  "historical_v12_book_citation_status": "NOT_ADDED_TO_BOOK"
}
F030Fowler websiteIn the published NDSE2 bibliography

The Economic Benefit of Refactoring

Repeats one representative change as a large Rust data-access module is refactored. Estimated input-token use falls after decomposition permits more selective code reading, connecting architecture to inference work.

Evidence, context & provenance
Evidence boundaryOne application and change, approximate token counting and incomplete refactoring-cost accounting; this does not establish general ROI or savings for every future task.

Source type, as recorded: Exploratory refactoring experiment

Cited in published NDSE2 chapters

No literal chapter citation recorded in the published edition.

Editorial chapter mappings

Chapter 2: Measuring Productivity from Code to Production
Chapter 5: Quality, Architecture and Maintainability
Chapter 12: Economics, Jobs, Risk and Evidence-Based Adoption

Editorial reading suggestions can extend beyond the published citations. Chapter guides show the outline and traceable source references.

Topics. Economic costs and return · Architecture and modularity · Code reuse and duplication

3 recorded source relationships

These retain the graph’s exact relation labels. A connection is not automatically a causal claim or an independent replication.

All preserved graph attributes
{
  "label": "The Economic Benefit of Refactoring",
  "kind": "practitioner_essay",
  "collection": "F",
  "authors": "Giles Edwards-Alexander",
  "authors_json": "[\"Giles Edwards-Alexander\"]",
  "publication_date": "2026-07-30",
  "date_provenance": "Dated entry on the supplied series index; article date also used where printed",
  "url": "https://martinfowler.com/articles/exploring-gen-ai/refactoring-economic-benefit.html",
  "publisher": "martinfowler.com",
  "series": "Exploring Generative AI",
  "series_url": "https://martinfowler.com/articles/exploring-gen-ai.html",
  "snapshot_date": "2026-10-13",
  "contribution": "Repeats one representative change as a large Rust data-access module is refactored. Estimated input-token use falls after decomposition permits more selective code reading, connecting architecture to inference work.",
  "limitation": "One application and change, approximate token counting and incomplete refactoring-cost accounting; this does not establish general ROI or savings for every future task.",
  "evidence_class": "Exploratory refactoring experiment",
  "source_locator": "Experiment in refactoring; results table; notes on process; further work",
  "verification_scope": "Primary article byline and selected body passages inspected; no independent execution or statistical replication",
  "original_data_replicated": false,
  "new_manuscript_citation": false,
  "source_body_archived": false,
  "primary_stream": "T:Economics",
  "streams_json": "[\"T:Economics\", \"T:Code quality & security\"]",
  "topics_json": "[\"K:Economic costs and return\", \"K:Architecture and modularity\", \"K:Code reuse and duplication\"]",
  "editorial_chapters_json": "[\"C:C02\", \"C:C05\", \"C:C12\"]",
  "mapping_status": "Independent editorial mapping, not classification by the article authors or SE@PoliMi",
  "book_citation_status": "IN_PUBLISHED_NDSE2_BIBLIOGRAPHY",
  "node_class": "FOWLER_SERIES_ADDITIVE_OVERLAY_V12",
  "ndse2_actual_chapters_json": "[]",
  "ndse2_in_bibliography": true,
  "ndse2_citation_basis": "Final 13.7.1 active EN/ITA source tree; index links and nocite are not chapter citations",
  "historical_v12_book_citation_status": "NOT_ADDED_TO_BOOK"
}
F031Fowler websiteIn the published NDSE2 bibliography

TDD inside the agent loop - theater or actual value?

Separates human-authored tests, a human review checkpoint and TDD entirely inside an agent loop. The small exploratory comparison found no clear advantage for fully internal TDD in model-judged quality or mutation scores.

Evidence, context & provenance
Evidence boundarySmall greenfield tasks, imperfect adherence and an LLM-defined quality rubric. Reported aggregate tokens include cache rereads and are not equivalent to billed cost; no universal conclusion about human-led TDD follows.

Source type, as recorded: Small exploratory agent evaluation

Cited in published NDSE2 chapters

No literal chapter citation recorded in the published edition.

Editorial chapter mappings

Chapter 3: Limits and Capability of Coding Agents
Chapter 7: Independent Verification and the Oracle Problem
Chapter 12: Economics, Jobs, Risk and Evidence-Based Adoption
Chapter 13: Choosing Practices and Recognizing Their Limits

Editorial reading suggestions can extend beyond the published citations. Chapter guides show the outline and traceable source references.

Topics. Independent verification and oracles · Evaluation methodology and baselines · Economic costs and return

4 recorded source relationships

These retain the graph’s exact relation labels. A connection is not automatically a causal claim or an independent replication.

All preserved graph attributes
{
  "label": "TDD inside the agent loop - theater or actual value?",
  "kind": "practitioner_essay",
  "collection": "F",
  "authors": "Birgitta Böckeler",
  "authors_json": "[\"Birgitta Böckeler\"]",
  "publication_date": "2026-08-10",
  "date_provenance": "Dated entry on the supplied series index; article date also used where printed",
  "url": "https://martinfowler.com/articles/exploring-gen-ai/tdd-in-the-agent-loop.html",
  "publisher": "martinfowler.com",
  "series": "Exploring Generative AI",
  "series_url": "https://martinfowler.com/articles/exploring-gen-ai.html",
  "snapshot_date": "2026-10-13",
  "contribution": "Separates human-authored tests, a human review checkpoint and TDD entirely inside an agent loop. The small exploratory comparison found no clear advantage for fully internal TDD in model-judged quality or mutation scores.",
  "limitation": "Small greenfield tasks, imperfect adherence and an LLM-defined quality rubric. Reported aggregate tokens include cache rereads and are not equivalent to billed cost; no universal conclusion about human-led TDD follows.",
  "evidence_class": "Small exploratory agent evaluation",
  "source_locator": "Setup; results; test-first and red-green goals; costs; conclusions",
  "verification_scope": "Primary article byline and selected body passages inspected; no independent execution or statistical replication",
  "original_data_replicated": false,
  "new_manuscript_citation": false,
  "source_body_archived": false,
  "primary_stream": "T:Verification & review",
  "streams_json": "[\"T:Verification & review\", \"T:Economics\"]",
  "topics_json": "[\"K:Independent verification and oracles\", \"K:Evaluation methodology and baselines\", \"K:Economic costs and return\"]",
  "editorial_chapters_json": "[\"C:C03\", \"C:C07\", \"C:C12\", \"C:C13\"]",
  "mapping_status": "Independent editorial mapping, not classification by the article authors or SE@PoliMi",
  "book_citation_status": "IN_PUBLISHED_NDSE2_BIBLIOGRAPHY",
  "node_class": "FOWLER_SERIES_ADDITIVE_OVERLAY_V12",
  "ndse2_actual_chapters_json": "[]",
  "ndse2_in_bibliography": true,
  "ndse2_citation_basis": "Final 13.7.1 active EN/ITA source tree; index links and nocite are not chapter citations",
  "historical_v12_book_citation_status": "NOT_ADDED_TO_BOOK"
}
F032Fowler website

An Accidental Blackboard

In a simulated airline exercise, shared plans and frequent repository updates became an improvised coordination surface for agents. The account connects this behavior with the blackboard pattern and describes resulting CI pressure.

Evidence, context & provenance
Evidence boundaryA practice exercise, not a deployed airline system. The author explicitly questions reproducibility; the coordination mechanism was emergent rather than experimentally isolated.

Source type, as recorded: Exploratory team exercise

Cited in published NDSE2 chapters

No literal chapter citation recorded in the published edition.

Editorial chapter mappings

Chapter 3: Limits and Capability of Coding Agents
Chapter 9: System Understanding, Context and Persistent Memory
Chapter 11: Teams, Governance and the Engineering Organization

Editorial reading suggestions can extend beyond the published citations. Chapter guides show the outline and traceable source references.

Topics. Human-agent collaboration · Agent context and persistent memory · Long-running agent execution

2 recorded source relationships

These retain the graph’s exact relation labels. A connection is not automatically a causal claim or an independent replication.

All preserved graph attributes
{
  "label": "An Accidental Blackboard",
  "kind": "practitioner_essay",
  "collection": "F",
  "authors": "Giles Edwards-Alexander",
  "authors_json": "[\"Giles Edwards-Alexander\"]",
  "publication_date": "2026-09-02",
  "date_provenance": "Dated entry on the supplied series index; article date also used where printed",
  "url": "https://martinfowler.com/articles/exploring-gen-ai/an-accidental-blackboard.html",
  "publisher": "martinfowler.com",
  "series": "Exploring Generative AI",
  "series_url": "https://martinfowler.com/articles/exploring-gen-ai.html",
  "snapshot_date": "2026-10-13",
  "contribution": "In a simulated airline exercise, shared plans and frequent repository updates became an improvised coordination surface for agents. The account connects this behavior with the blackboard pattern and describes resulting CI pressure.",
  "limitation": "A practice exercise, not a deployed airline system. The author explicitly questions reproducibility; the coordination mechanism was emergent rather than experimentally isolated.",
  "evidence_class": "Exploratory team exercise",
  "source_locator": "Emergent behavior; shared plans; repository as blackboard; CI trade-off",
  "verification_scope": "Primary article byline and selected body passages inspected; no independent execution or statistical replication",
  "original_data_replicated": false,
  "new_manuscript_citation": false,
  "source_body_archived": false,
  "primary_stream": "T:Engineering structure",
  "streams_json": "[\"T:Engineering structure\", \"T:System knowledge & memory\"]",
  "topics_json": "[\"K:Human-agent collaboration\", \"K:Agent context and persistent memory\", \"K:Long-running agent execution\"]",
  "editorial_chapters_json": "[\"C:C03\", \"C:C09\", \"C:C11\"]",
  "mapping_status": "Independent editorial mapping, not classification by the article authors or SE@PoliMi",
  "book_citation_status": "COMPANION_READING_NOT_IN_BOOK",
  "node_class": "FOWLER_SERIES_ADDITIVE_OVERLAY_V12",
  "ndse2_actual_chapters_json": "[]",
  "ndse2_in_bibliography": false,
  "ndse2_citation_basis": "Final 13.7.1 active EN/ITA source tree; index links and nocite are not chapter citations",
  "historical_v12_book_citation_status": "NOT_ADDED_TO_BOOK"
}
F033Fowler websiteIn the published NDSE2 bibliography

Are Harnesses Worth the Cost?

Compares development with and without a behavioral harness against a separate acceptance suite. On the selected service, the stronger model passed both conditions; a cost-optimized model passed more consistently with harness feedback, at greater per-attempt effort.

Evidence, context & provenance
Evidence boundaryTen paired runs per model on one unusually detailed greenfield Java brief. Guides and sensors changed together; estimated generation costs omit harness authoring, review and repairs. Final-gate-only use is proposed, not tested.

Source type, as recorded: Small repeated-run implementation experiment

Topics. Economic costs and return · Independent verification and oracles · Specifications and governance

6 recorded source relationships

These retain the graph’s exact relation labels. A connection is not automatically a causal claim or an independent replication.

All preserved graph attributes
{
  "label": "Are Harnesses Worth the Cost?",
  "kind": "practitioner_essay",
  "collection": "F",
  "authors": "Naresh Jain",
  "authors_json": "[\"Naresh Jain\"]",
  "publication_date": "2026-10-13",
  "date_provenance": "Dated entry on the supplied series index; article date also used where printed",
  "url": "https://martinfowler.com/articles/are-harnesses-worth-the-cost.html",
  "publisher": "martinfowler.com",
  "series": "Exploring Generative AI",
  "series_url": "https://martinfowler.com/articles/exploring-gen-ai.html",
  "snapshot_date": "2026-10-13",
  "contribution": "Compares development with and without a behavioral harness against a separate acceptance suite. On the selected service, the stronger model passed both conditions; a cost-optimized model passed more consistently with harness feedback, at greater per-attempt effort.",
  "limitation": "Ten paired runs per model on one unusually detailed greenfield Java brief. Guides and sensors changed together; estimated generation costs omit harness authoring, review and repairs. Final-gate-only use is proposed, not tested.",
  "evidence_class": "Small repeated-run implementation experiment",
  "source_locator": "Experiment setup; independent outer evaluation; model comparisons; economics; boundaries",
  "verification_scope": "Primary article byline and selected body passages inspected; no independent execution or statistical replication",
  "original_data_replicated": false,
  "new_manuscript_citation": true,
  "source_body_archived": false,
  "primary_stream": "T:Economics",
  "streams_json": "[\"T:Economics\", \"T:Verification & review\", \"T:Engineering structure\"]",
  "topics_json": "[\"K:Economic costs and return\", \"K:Independent verification and oracles\", \"K:Specifications and governance\"]",
  "editorial_chapters_json": "[\"C:C02\", \"C:C03\", \"C:C04\", \"C:C07\", \"C:C12\", \"C:C13\"]",
  "mapping_status": "Independent editorial mapping, not classification by the article authors or SE@PoliMi",
  "book_citation_status": "IN_PUBLISHED_NDSE2_BIBLIOGRAPHY",
  "node_class": "FOWLER_SERIES_ADDITIVE_OVERLAY_V12",
  "ndse2_actual_chapters_json": "[\"C:C12\"]",
  "ndse2_in_bibliography": true,
  "ndse2_citation_basis": "Final 13.7.1 active EN/ITA source tree; index links and nocite are not chapter citations",
  "historical_v12_book_citation_status": "NOT_ADDED_TO_BOOK",
  "historical_v12_new_manuscript_citation": false
}
F034Fowler websiteFULL PRIMARY TEXT

Practitioner Voice

The October revision adds practical guidance for writing from experience and using AI while keeping the writer's judgment visible. Highsmith describes cognitive assistance, contrasts different authoring choices, and connects useful prose to lived consequences, audience, storytelling and iterative editing.

Evidence, context & provenance
Evidence boundaryPersonal experience and editorial guidance; no controlled evaluation of cognition, learning, writing quality or productivity. Do not treat the revision as a newly published October article.

Source type, as recorded: Practitioner essay and personal experience

Cited in published NDSE2 chapters

No literal chapter citation recorded in the published edition.

Editorial chapter mappings

Chapter 9: System Understanding, Context and Persistent Memory
Chapter 10: Developer Learning, Mentoring and Comprehension Debt
Chapter 11: Teams, Governance and the Engineering Organization

Editorial reading suggestions can extend beyond the published citations. Chapter guides show the outline and traceable source references.

Topics. Human cognitive load · Cognitive offloading and skill debt · Ownership and knowledge transfer

1 recorded source relationships

These retain the graph’s exact relation labels. A connection is not automatically a causal claim or an independent replication.

All preserved graph attributes
{
  "label": "Practitioner Voice",
  "kind": "practitioner_essay",
  "collection": "F",
  "authors": "Jim Highsmith",
  "authors_json": "[\"Jim Highsmith\"]",
  "publication_date": "2026-08-19",
  "updated_date": "2026-10-13",
  "latest_activity_date": "2026-10-13",
  "date_provenance": "Primary article Significant Revisions: original publication and later expansion distinguished",
  "url": "https://martinfowler.com/articles/practitioner-voice.html",
  "publisher": "martinfowler.com",
  "series": "",
  "series_url": "",
  "source_scope": "Adjacent martinfowler.com article; outside the original Exploring Generative AI series catalogue",
  "series_member": false,
  "snapshot_date": "2026-10-18",
  "contribution": "The October revision adds practical guidance for writing from experience and using AI while keeping the writer's judgment visible. Highsmith describes cognitive assistance, contrasts different authoring choices, and connects useful prose to lived consequences, audience, storytelling and iterative editing.",
  "limitation": "Personal experience and editorial guidance; no controlled evaluation of cognition, learning, writing quality or productivity. Do not treat the revision as a newly published October article.",
  "evidence_class": "Practitioner essay and personal experience",
  "source_locator": "The Craft of Practitioner Voice; How to use AI without losing your voice; Significant Revisions",
  "verification_scope": "Actual byline, original publication date and October 13 significant revision confirmed. No independent execution, causal evaluation or statistical replication.",
  "access_status": "FULL_PRIMARY_TEXT",
  "original_data_replicated": false,
  "new_manuscript_citation": false,
  "source_body_archived": false,
  "primary_stream": "T:Skills & learning",
  "streams_json": "[\"T:Skills & learning\",\"T:System knowledge & memory\"]",
  "topics_json": "[\"K:Human cognitive load\",\"K:Cognitive offloading and skill debt\",\"K:Ownership and knowledge transfer\"]",
  "editorial_chapters_json": "[\"C:C09\",\"C:C10\",\"C:C11\"]",
  "mapping_status": "Independent editorial mapping, not classification by the article authors or SE@PoliMi",
  "book_citation_status": "COMPANION_READING_NOT_IN_BOOK",
  "node_class": "FOWLER_SITE_EXTENSION_20261018",
  "addition_reason": "October 13 expansion on AI-assisted thinking and writing, absent from the series-only baseline. Scope expansion explicitly retained.",
  "atlas_added_on": "2026-10-18",
  "canonical_url": "https://martinfowler.com/articles/practitioner-voice.html",
  "online_companion_update": true,
  "ndse2_actual_chapters_json": "[]",
  "ndse2_in_bibliography": false,
  "ndse2_citation_basis": "Final 13.7.1 active EN/ITA source tree; index links and nocite are not chapter citations",
  "pre_reconciliation_book_citation_status": "NOT_ADDED_TO_BOOK",
  "manuscript_citation_status": "NOT_CITED_IN_PUBLISHED_NDSE2_13_7_1",
  "manuscript_citation_basis": "Absent from the final published NDSE2 13.7.1 active EN/ITA source tree and loaded bibliography"
}
F035Fowler websiteFULL PRIMARY TEXT

When Software Meets Hardware

An IoT modernization account connects physical test environments, device simulation, observability, recovery and continuous learning. The team used LLMs to explore unfamiliar areas, prototype experiments and develop engineering tools, including dashboards and migration trackers. The proposed benefit is cheaper experimentation and a shorter learning loop.

Evidence, context & provenance
Evidence boundaryThe article describes one team's practices and perceived benefits. It does not isolate AI's contribution or quantify productivity improvements. Physical-world validation remains part of the reported engineering process.

Source type, as recorded: Qualitative engineering experience report

Cited in published NDSE2 chapters

No literal chapter citation recorded in the published edition.

Editorial chapter mappings

Chapter 2: Measuring Productivity from Code to Production
Chapter 5: Quality, Architecture and Maintainability
Chapter 9: System Understanding, Context and Persistent Memory
Chapter 10: Developer Learning, Mentoring and Comprehension Debt
Chapter 13: Choosing Practices and Recognizing Their Limits

Editorial reading suggestions can extend beyond the published citations. Chapter guides show the outline and traceable source references.

Topics. Onboarding and developer fluency · System understanding and rationale · Developer workflow and adoption · Independent verification and oracles

2 recorded source relationships

These retain the graph’s exact relation labels. A connection is not automatically a causal claim or an independent replication.

All preserved graph attributes
{
  "label": "When Software Meets Hardware",
  "kind": "practitioner_essay",
  "collection": "F",
  "authors": "Kuldeep Singh",
  "authors_json": "[\"Kuldeep Singh\"]",
  "publication_date": "2026-10-15",
  "updated_date": null,
  "latest_activity_date": "2026-10-15",
  "date_provenance": "Primary article dateline and Significant Revisions",
  "url": "https://martinfowler.com/articles/software-meets-hardware.html",
  "publisher": "martinfowler.com",
  "series": "",
  "series_url": "",
  "source_scope": "Adjacent martinfowler.com article; outside the original Exploring Generative AI series catalogue",
  "series_member": false,
  "snapshot_date": "2026-10-18",
  "contribution": "An IoT modernization account connects physical test environments, device simulation, observability, recovery and continuous learning. The team used LLMs to explore unfamiliar areas, prototype experiments and develop engineering tools, including dashboards and migration trackers. The proposed benefit is cheaper experimentation and a shorter learning loop.",
  "limitation": "The article describes one team's practices and perceived benefits. It does not isolate AI's contribution or quantify productivity improvements. Physical-world validation remains part of the reported engineering process.",
  "evidence_class": "Qualitative engineering experience report",
  "source_locator": "Experimentation environment; physical testing; Use AI to shorten the learning loop; Capture discoveries; Significant Revisions",
  "verification_scope": "Byline, publication history and AI-specific section inspected. No independent execution, causal evaluation or statistical replication.",
  "access_status": "FULL_PRIMARY_TEXT",
  "original_data_replicated": false,
  "new_manuscript_citation": false,
  "source_body_archived": false,
  "primary_stream": "T:Engineering structure",
  "streams_json": "[\"T:Engineering structure\",\"T:Skills & learning\",\"T:Productivity\"]",
  "topics_json": "[\"K:Onboarding and developer fluency\",\"K:System understanding and rationale\",\"K:Developer workflow and adoption\",\"K:Independent verification and oracles\"]",
  "editorial_chapters_json": "[\"C:C02\",\"C:C05\",\"C:C09\",\"C:C10\",\"C:C13\"]",
  "mapping_status": "Independent editorial mapping, not classification by the article authors or SE@PoliMi",
  "book_citation_status": "COMPANION_READING_NOT_IN_BOOK",
  "node_class": "FOWLER_SITE_EXTENSION_20261018",
  "addition_reason": "New October 15 experience report with an explicit AI-assisted learning and engineering-tooling section, outside the original series.",
  "atlas_added_on": "2026-10-18",
  "canonical_url": "https://martinfowler.com/articles/software-meets-hardware.html",
  "online_companion_update": true,
  "ndse2_actual_chapters_json": "[]",
  "ndse2_in_bibliography": false,
  "ndse2_citation_basis": "Final 13.7.1 active EN/ITA source tree; index links and nocite are not chapter citations",
  "pre_reconciliation_book_citation_status": "NOT_ADDED_TO_BOOK",
  "manuscript_citation_status": "NOT_CITED_IN_PUBLISHED_NDSE2_13_7_1",
  "manuscript_citation_basis": "Absent from the final published NDSE2 13.7.1 active EN/ITA source tree and loaded bibliography"
}