"Let’s Talk About TDD"
Oh dear, my eyes hurt. I’ve just seen yet another bullshit post about TDD:
Let’s talk about TDD. Yeah. That one. Now before someone tries to Uncle Bob or Kent Beck me in the comments, let me clarify — I absolutely support writing unit tests. Lots of them. High coverage. Solid safety nets. No argument there. But TDD — the “tests-first, logic-later” doctrine — is something else. I've heard a lot of lofty, near-religious praise from its evangelists. “Write the test first, and the design will follow.” Sounds nice on a slide. In practice? Not so much. In my entire career, I’ve met exactly one person who actually practiced TDD consistently. And guess what? Even he admitted he had to force himself into it like it’s a gym routine he secretly hates. Here’s my beef: TDD shifts your focus to the wrong thing. It idolizes the test — not the system, not the domain, not the architecture. You're supposed to build a well-structured, modular system… but instead you're writing a failing test for a method you just imagined into existence, praying that this micro-step will magically evolve into a beautiful system. Spoiler: it doesn’t. TDD doesn’t encourage thinking in terms of cohesion, coupling, design boundaries, or long-term maintainability. Instead, it traps you in a rabbit hole of tiny, myopic tasks. “One failing test at a time.” Great. Now you have a bunch of tests for methods that shouldn't even exist in a sane design. What would actually help? Taking a step back. Thinking in modules. Understanding business flows. Designing clear, purposeful abstractions. Not handcuffing your brain to a red-green-refactor treadmill and hoping architectural clarity falls from the sky. Sorry (not sorry), but making TDD a mandatory ritual is like solving architecture with duct tape — just with more IDE shortcuts. Curious to hear from folks who’ve actually built systems, not just pet projects and conference demos.