I’ve read DHH on unit tests vs functional tests. He’s also a big proponent of the majestic monolith.
The trouble with monoliths is that they’re tightly coupled, and tightly coupled code is really hard to unit test. Under those circumstances, it makes a lot more sense to make more use of functional tests, for which it’s much harder to write tests first.
There are major problems with that approach. It obviously can work for some people and some types of apps, but makes it very difficult to scale teams quickly (which DHH is also against, but is sometimes required).
It’s not controversial outside DHH circles to favor loosely coupled code over tightly coupled, monolithic code, and when we do that, the cost of TDD and unit tests is dramatically reduced, and benefits far more easily realized.
The “problems” DHH identifies with unit tests are actually problems with tight coupling, not unit tests or TDD, and TDD can teach you to solve them if you trust the process.