Best of TDDApril 2026

  1. 1
    Article
    Avatar of lobstersLobsters·7w

    I used AI. It worked. I hated it.

    A developer with strong anti-genAI views shares their experience using Claude Code to build a certificate generation tool for a learning platform migration. The project succeeded — the Rust/Svelte app is in production — but the process felt miserable. Key observations: TDD with plan-mode kept the model on track, Rust's compile-time safety helped catch hallucinations, a security audit pass found real vulnerabilities (path traversal, timing side-channel in Argon2), and the tool delivered features the author wouldn't have built alone. Despite the functional success, the author warns about the 'human in the loop' problem — the process actively encourages disengagement — and reflects on cognitive dependency, skill atrophy for junior developers, IP theft concerns, and the broader societal harms. The conclusion is nuanced: it works in this narrow domain, the harms still outweigh benefits at scale, but condemning individuals for using it is counterproductive.

  2. 2
    Article
    Avatar of techleaddigestTech Lead Digest·6w

    The Phoenix Architecture

    A veteran software engineer draws parallels between the Extreme Programming movement of the late 1990s and today's generative AI era, arguing that both represent 'rigor relocation' rather than loss of discipline. Just as XP replaced heavyweight processes with tighter feedback loops, and dynamic languages replaced static types with test-enforced correctness, AI-assisted development demands stricter specification of intent and ruthless evaluation of outputs. The core thesis: probabilistic code generation only works when deterministic constraints exist at the edges. Engineers who thrive will treat generation as a capability requiring more precision in specification, not less, and will build evaluation systems that fail loudly when code drifts from intent.

  3. 3
    Article
    Avatar of minersThe Miners·6w

    Stop Putting Best Practices in Skills

    A data-driven investigation into why best practices should live in CLAUDE.md rather than Claude Code skills. The author ran 51 multi-turn evals across 4 configurations (Superpowers, plain skills, CLAUDE.md, CLAUDE.md+hint) and found that plain skills are only invoked 6% of the time in multi-turn sessions, while CLAUDE.md guidelines are always in context. The key insight: skills and CLAUDE.md are both just prompts — the difference is reliability of delivery. Superpowers works not because of skills but because its SessionStart hook front-loads instructions, achieving 66% invocation. The recommendation is clear: put coding standards, TDD rules, and debugging protocols in CLAUDE.md (100% presence, no activation gap), and reserve skills for on-demand procedural recipes like scaffolding or migrations.