#422 How Behaviour-Driven Development (BDD) Happened
ThoughtWorks in 2003 and XP technical practices, test-driven development, continuous integration and pair programming, learning an instrument and team sports as metaphors for practice, learning, practice and training as first class Kaizen work, critics of a practice becoming its advocates, Virginia Satir and the principle of positive intent, sabotaged projects and "if you reward firefighters, you breed arsonists", the curved tables pair programming story, agile methods at snowbird started as small teams in big companies, pair programming as two people solving a problem rather than driver and navigator, the 2003 Java Developers Journal article "test driven development is not about testing", introducing TDD to a team without using the word test, tests as executable requirements written in the implementation language, discovering domain terms and Domain-Driven Design, example guided design, Kent Beck: "as few tests as I can get away with", single examples as seeds for property-based testing, main methods as test drivers before JUnit, zb zero dependency builder for Java 25, zunit test runner with Java assert and process isolation, Daniel Worthington Bodart's 10 second build and shavenmaven, Apache Ivy and dependency lock files, tinytest single header C test framework, zsmith agent harness with Java tools and lightmetal inference, migrating GitHub Spec Kit from python, jq and shell scripts to Java 25, Chris Matts and analysis as specification, Ivan Moore's index cards with "I do this, this happens", given when then, Hoare logic and arrange act assert, scenarios named like Friends episodes, rbehave and RSpec describe and it inspired by HyperCard, self-documenting colored scenario output, the plain text story runner, Aslak HellesΓΈy's Cucumber with a Treetop grammar, Gherkin from pickling a cucumber, criticism of BDD for getters and setters, interaction testing with Mockito as double entry bookkeeping, FitNesse and Excel test data with Apache POI HSSF, EARS requirements syntax from Rolls-Royce for spec-driven development, BDD adoption over 20 years, LLM guidance as heuristics vs rules enforced outside the LLM, Gojko Adzic's observations to heuristics to rules to lint rules, Claude Code hooks, rules and CLAUDE.md, switching between Claude Code, Codex and Mistral Vibe CLI, skills documenting decisions such as preferring records, Jakarta EE and MicroProfile as a constrained API set, Boundary Control Entity and ArchUnit, probing LLM knowledge in a toolless playground, context drift and short rule files, a Marp based class builder and teacher heads up display built with Claude, in-person training and consulting via Goalwards
Daniel Terhorst-North on bluesky: @tastapod.com