Skip to content

Commit 9e25d67

Browse files
committed
feat(drafts): add 'Revenge of the Test-Driven Nerds' blog post
1 parent feaeafa commit 9e25d67

3 files changed

Lines changed: 37 additions & 0 deletions

File tree

TASKS.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ Put done tasks into the Archive.
2020

2121
## Archive
2222

23+
- [x] Draft the blog article "Revenge of the Test-Driven Nerds" exploring the shift from human-driven to AI-agent-driven TCR. (2026-03-16)
2324
- [x] Update the core documentation suite (index, develop, design, user-guide) to incorporate the new TCR protocol and task isolation principles. (2026-03-16)
2425
- [x] Refine `install.sh` to protect existing scaffolding files (README, TASKS, etc.) while ensuring the core framework (.gemini, GEMINI.md) is updated. (2026-03-16) (See plan: plans/refine-install-script.md)
2526
- [x] Refactor the `/task` command to prioritize a strict TCR (Test-Commit-Revert) protocol for working on tasks. (2026-03-16) (See plan: plans/implement-tcr-task-command.md)
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# Revenge of the Test-Driven Nerds
2+
3+
## Introduction: The TDD Grudge
4+
5+
I have spent a decade nurturing a quiet, sour taste in my mouth toward the Test-Driven Development (TDD) crowd. It is not that they are wrong—the tally of bugs found in production is stubbornly on their side—but rather that they are so deeply, performatively exhausted by their own discipline. You know the archetype: the Test-Driven Nerd, sitting at a mechanical keyboard, refusing to write a single line of business logic until they have first constructed a brittle, mocking cathedral of unit tests. They speak of "red-green-refactor" with the religious fervor of a flagellant, yet their velocity resembles a glacier navigating a bureaucratic bottleneck.
6+
7+
For the rest of us, coding is supposed to be about the speed of thought. You have an idea for a recursive descent parser or a clever cache-invalidation strategy, and you want to pour it into the editor before the spark dies. TDD feels like being asked to fill out a three-page requisition form every time you want to pick up a screwdriver. It turns the act of creation into the molasses of boilerplate. We want to fly; the Test-Driven Nerd insists we first calculate the wind resistance of our shoelaces. This divide has long created a schism between the "move fast and break things" camp and the "move slow and never ship" camp—a grudge match played out in Jira tickets and passive-aggressive code reviews.
8+
9+
## The Typing Tax
10+
11+
The core issue with TDD is not the theory, but the "typing tax" levied on the human operator. Every time I commit to a test-first workflow, I am immediately slapped with a cognitive surcharge. I have to switch my brain from "architect mode"—where I am envisioning the flow of data through a system—to "prosecutor mode"—where I am trying to imagine every way that system might lie to me. This context-switching tax is compounded by the physical drag of the keyboard. Writing a test for a simple function often requires more characters of setup, assertions, and imports than the function itself.
12+
13+
Consider the humble user authentication module. In a sudden flash, I might know exactly how to salt the password and check the hash. But in the TDD workflow, I must first stop and write a test file, import a library like Pytest, define a test suite, and mock a database connection that doesn't even exist yet. By the time I have typed out `assert auth.login(user, pass) is True`, the elegant mental model I had for the implementation has begun to fray at the edges. The bottleneck isn't my brain—it's the ten fingers trying to keep up with it. We are biological processors running on a 50-word-per-minute bus, and the surcharge of proving our work in real-time makes the entire endeavor feel like wading through chest-high tallgrass.
14+
15+
## The Agentic Pivot: Speed of Thought Meets Speed of Execution
16+
17+
The landscape changes the moment you hand the keyboard to an LLM. When an agent — a LLM-backed process capable of reading files and executing shell commands — takes over the loop, the "typing tax" is effectively abolished. The bottleneck that once frustrated the developer now becomes a feature of the automation. We used to complain about the time spent writing mocks; the agent writes them in a three-second burst of tokens. We used to groan at the overhead of the test-first cycle; the agent treats it as a natural syntax for its own reasoning. This is the revenge of the Test-Driven Nerd. The methodology was never broken; it was simply waiting for a pilot that didn't have hands made of slow, carbon-based meat.
18+
19+
In this new paradigm, Test & Commit || Revert (TCR) stops being a masochistic exercise and starts being the ultimate safety harness. When a human writes code, a revert feels like a personal failure, a loss of ten minutes of labor. When an agent writes code, a revert is a cheap discarded draft. By enforcing a TCR loop on an AI agent, we provide it with a digital leash. If the agent's proposed implementation fails to satisfy the unit test, the environment literally deletes the offending lines before they can ever pollute the codebase. The agent is forced into a corner where only correctness survives. It can hallucinate all it wants in its internal scratchpad, but if the shell script doesn't return a zero exit code, the file system remains pristine.
20+
21+
## The Gemini CLI Workflow: A Trio of Discipline
22+
23+
This shift from a "free-form" to a "principled" AI interaction model is best exemplified in the **Gemini CLI** starter kit. It codifies the three-phase lifecycle that transforms a raw LLM into a disciplined engineering partner: **Research**, **Plan**, and **Execute**. Instead of a single, sprawling prompt ("hey, build me a login page"), the workflow is broken into granular, verifiable commands that prevent context saturation and architectural drift.
24+
25+
The process begins with the `/research` command — our primary tool for gathering the raw, unvarnished truth. The `researcher` subagent scours the web for documentation, API specs, or security best practices, synthesizing the findings into exhaustive reports in the `research/` directory. Next comes the `/plan` command, where the `planner` subagent analyzes the project's current architecture and journals to generate a persistent, actionable strategy in the `plans/` folder. This is the blueprint phase, where we map the territory before building the first wall. Finally, we move to the `/task work` command — the execution engine. This command marks the transition into the TCR loop, where the agent creates a dedicated feature branch and iterates through the Red-Green-Verify cycle until the task is complete.
26+
27+
## TCR as the Ultimate Agent Leash
28+
29+
The true genius of TCR in an agentic context lies in its relentless, step-by-step verification. The `/task work` command orchestrates this in four distinct phases. First, a **Pre-flight Verification** ensures a clean git status on the `main` branch with all tests passing. Next, a feature branch is auto-generated for task isolation. Then comes the **TCR Loop** itself — the iterative "Red-Green-Verify" cycle where the agent writes a failing test, implements the fix, and runs `make`. If the tests pass, the change is committed. If they fail — after a brief window for a quick fix — the agent's work is reverted, effectively "leashing" it to the last known stable state.
30+
31+
Finally, the **Integration** phase ensures a final full test run on the branch before requesting user approval to merge back to `main`. This is why we can finally achieve the speed of thought without the risk of a broken codebase. The agent manages the slow, repetitive labor of testing and commits, while we provide the high-level intent. This creates a "Green-only" development path that keeps the repository in a deployable state at all times, making the "Revenge of the Test-Driven Nerd" the most satisfying victory of all.
32+
33+
## Conclusion: The Nerd's Last Laugh
34+
35+
This is the coolest way to build software. We have finally reached a point where the high-level human intent and low-level agentic rigor can coexist in a single, high-velocity workflow. The Test-Driven Nerd was right all along; they just needed a partner that didn't mind the typing tax. By adopting a principled Research-Plan-Execute lifecycle with a strict TCR protocol, we're not just writing code faster; we're writing code better. The nerd has had the last laugh, and it sounds an awful lot like a green test suite and a clean git history.

journal/2026-03-16.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@
33
- Planned and implemented the strict TCR (Test-Commit-Revert) protocol for the '/task work' command.
44
- Planned and implemented the refinement of 'install.sh' to distinguish between core framework and scaffolding files.
55
- Updated the core documentation suite (index, develop, design, user-guide) to reflect the new TCR-driven development lifecycle.
6+
- Drafted the blog article "Revenge of the Test-Driven Nerds" exploring the shift from human-driven to AI-agent-driven TCR.

0 commit comments

Comments
 (0)