T*D
Andrea Laforgia ยท article ยท 2026-04-10 Reader ๐ฅ๏ธ
When software teams genuinely pursue speed, quality, and shared ownership simultaneously, they naturally converge on three mutually reinforcing practices โ test-driven development, trunk-based development, and team-focused development (pairing/mobbing) โ which the author brands as T*D.
practical ยท essay / opinion piece โ A practitioner's argument that three specific engineering practices โ TDD, trunk-based development, and collaborative programming โ are the natural convergence point for teams pursuing high performance. Blends historical evidence with advocacy.
Structure
| Part | Role |
|---|---|
| Personal discovery narrative | Establishes credibility and frames the thesis: these practices are discovered through experience, not imposed top-down. |
| T*D definition | Names the triad and sets up the claim that the three practices are a 'natural result' of striving for high performance. |
| Test-Driven Development section | Historical lineage (1957โ2000s) showing TDD as a recurring discovery, plus argument that it supports continuous delivery. |
| Trunk-Based Development section | Historical lineage and argument that long-lived branches create illusory safety; TBD is the logical counterpart to CI/CD. |
| Team-Focused Development section | Historical lineage and research evidence that pairing/mobbing reduces defects, spreads knowledge, and raises satisfaction. |
| The natural landing point (conclusion) | Synthesises the three sections into the central claim: T*D is where serious teams end up. |
| References | Provides scholarly and practitioner backing for each practice. |
Key terms
- T*D Test-Driven Development
The union of test-driven development, trunk-based development, and team-focused development โ treated as a single convergent pattern rather than three independent practices. - Team-Focused Development Pair & Mob Programming
Collaborative programming practices (pair programming, mob/ensemble programming) where multiple developers work on the same code simultaneously. - Natural landing point / natural outcome
The claim that these practices emerge inevitably when teams optimise for the right goals, rather than being imposed externally. - Trunk-based development Trunk-Based & Continuous Delivery
Integrating code into a single mainline branch at least daily, avoiding long-lived feature branches. - Illusory safety Trunk-Based & Continuous Delivery
The false sense of security provided by long-lived feature branches, which defer rather than reduce risk.
Propositions
- explicitdevelopedWhen teams remove friction, seek quality, and want to deliver value quickly, TDD, TBD, and team-focused development emerge as natural convergent practices.conf: highrefines โLIVE: Uncle Bob on Software Fundamentals in the Age of AI ยท p11 โ T*D frames TDD as a practice teams naturally converge on for speed/quality/ownership; Martin's analysis supplies the missing mechanism for why that convergence is human-specific (short-term memory compensation) and doesn't transfer unmodified to agents, who converge on a different but value-equivalent pattern instead.
- explicitTDD is not a modern invention but a recurring discovery throughout the history of programming, from the 1950s onward.conf: high
- explicitThe perceived slowness of TDD is an illusion; skipping TDD leads to the very slowdown teams fear.conf: high
- explicitLong-lived feature branches provide illusory safety; frequent integration into trunk is less risky than deferred merges.conf: high
- explicitTrunk-based development is compatible with โ and even beneficial in โ regulated industries, despite common assumptions to the contrary.conf: medium
- explicitestablishedPair and mob programming reduce defects by 15โ50% compared to solo development.conf: highsupports โRemote pair programming: Tips, tools, and how to measure ยท p2 โ This article's qualitative claim that pairing yields fewer bugs via continuous review is the same claim the later piece quantifies (15-50% defect reduction for pair/mob programming vs. solo work).supports โSoftware Teaming in the Age of AI with James Herr and Woody Zuill ยท p1 โ Provides qualitative practitioner corroboration, extended into the AI-generated-code context, for the general claim that pair/mob programming reduces defects relative to solo development โ though still without the numbers the earlier claim (15-50%) supplies.
- implicitThe three practices are mutually reinforcing: TDD enables the confidence needed for TBD, and team-focused development sustains the shared understanding both require.conf: high
- implicitResistance to these practices is primarily cultural and psychological (fear, habit, narrow efficiency metrics) rather than technical.conf: high
- explicitYounger developers trained on GitFlow-style workflows are a significant source of resistance to trunk-based development.conf: medium
Arguments
TDD, TBD, and team-focused development are the natural convergence point for high-performing teams. strength: medium
Explicit premises:
- These practices were independently discovered by multiple teams across decades before being formally named.
- When teams remove friction and pursue quality and speed, these patterns tend to emerge.
- Each practice has deep historical roots and strong empirical support.
Implicit premises:
- Practices that are independently re-discovered across contexts are more likely to be genuinely effective than invented methodologies.
- The fact that something emerges 'naturally' makes it more legitimate than something imposed.
- High performance is a single coherent goal that all teams should share.
Inferences:
- From independent re-discovery to naturalness (inductive generalisation)
- From naturalness to prescriptive recommendation (is-to-ought)
Long-lived feature branches are riskier than trunk-based development. strength: high
Explicit premises:
- Isolated code leads to painful merges and delayed feedback.
- Continuous Integration makes bugs dramatically easier to find and remove (Fowler).
- DORA research identifies TBD as a key differentiator for elite performers.
Implicit premises:
- The risk of small frequent integrations is always lower than the risk of large infrequent integrations.
- The team has sufficient automated test coverage and deployment automation to make frequent integration safe.
Inferences:
- Empirical correlation (DORA data) treated as evidence of causation.
Collaborative programming (pairing/mobbing) is worth the apparent cost. strength: medium
Explicit premises:
- Paired programmers produce 15โ50% fewer defects (Williams & Kessler).
- Microsoft research shows paired developers write cleaner, more maintainable code.
- These practices accelerate onboarding and eliminate knowledge silos.
- Developers report higher job satisfaction.
Implicit premises:
- Defect reduction and knowledge sharing outweigh the cost of having multiple people on one task.
- Typing speed / lines-of-code-per-person is the wrong efficiency metric.
Inferences:
- Research findings from specific contexts generalised to all teams.
Narratives
- The author's personal journey of independently discovering agile, Scrum, pairing, and TDD through practice before learning they had formal names.
โ Establishes ethos (practitioner credibility) and supports the 'natural emergence' thesis. - Kent Beck's story of rediscovering TDD from an 'ancient book about programming' that described matching input and output tapes.
โ Reinforces the theme that TDD is a perennial rediscovery, not a fad. - The cautionary tale of younger developers raised on GitFlow who see TBD as heresy.
โ Positions resistance as generational unfamiliarity rather than reasoned disagreement.
Questions addressed
- โ
What practices distinguish high-performing software teams?
TDD, trunk-based development, and team-focused development (pairing/mobbing), unified as T*D. - โ
Are these practices modern inventions or do they have deep historical roots?
All three have roots going back decades (1950sโ1970s), predating their modern names. - โ
Why do teams resist these practices if they are so effective?
Resistance stems from fear, habit, narrow efficiency metrics, and lack of experience with the practices. - โญ How do these three practices relate to each other?
The article implies mutual reinforcement but never explicitly maps the causal dependencies between the three practices. - โญ Under what conditions might these practices NOT be the right choice?
Gaps
- scope limitationThe article never addresses contexts where T*D may not apply or may need significant adaptation โ solo developers, open-source projects with asynchronous contributors, research/exploratory coding, or very early-stage prototyping.
Read next: Investigate when trunk-based development or pairing breaks down (e.g., distributed open-source, 1-person teams, spike work). - missing causal mechanismThe three practices are presented as a unified triad (T*D) but the article never explains why these three specifically, or how they causally reinforce each other. The mutual reinforcement is implied but not argued.
Read next: Look for literature on the interaction effects between TDD and CI/CD, and between pairing and TDD adoption success. - survivorship bias riskThe 'natural emergence' argument draws on teams that succeeded. Teams that tried these practices and failed, or high-performing teams that use different approaches, are not discussed.
Read next: Examine DORA data more carefully for whether TBD is necessary or merely correlated; look at high-performing teams using different workflows (e.g., Linux kernel's patch-based model). - evidence selectivityThe pairing research cited (Williams & Kessler 2000) is over 25 years old. More recent and nuanced studies on pair programming effectiveness are not referenced.
Read next: Review recent meta-analyses on pair programming effectiveness, particularly in remote/distributed settings. - is-ought gapThe article moves from 'these practices emerge naturally' (descriptive) to 'these are the only sensible way to work' (prescriptive) without bridging the logical gap. Natural emergence does not entail optimality.
Read next: Consider evolutionary arguments: not all convergent outcomes are optimal; they may reflect local optima or shared biases in the practitioner community.
Related documents
- Pair Programming Fixed Our Pull Request Bottlenecks
- Four Eyes Without Pull Requests
- Fragments: February 18
- Mob Programming โ key issues it can solve, benefits, and learnings
- Why your team doesn't need to use pull requests
- Martin Fowler & Kent Beck: Frameworks for reinventing software, again and again
- Jimmy Nilsson's Post โ reflections after the Thoughtworks 'Future of Software Development' retreat
- On Pair Programming
- Software Teaming in the Age of AI with James Herr and Woody Zuill