I do not find TDD useful, for reasons I explained in the above links.
I think one of the reasons TDD is effective is that it a way that developers are able to negotiate with management about getting the needed time to do proper development. "Proper development" includes testing - before, during, and after - but there's a lot of push to reduce development costs, and developers usually have worse negotiation skills and experience than managers.
My own comments include https://news.ycombinator.com/item?id=15004258 and https://news.ycombinator.com/item?id=18670445#18671642 and https://news.ycombinator.com/item?id=19222743 .
I do not find TDD useful, for reasons I explained in the above links.
I think one of the reasons TDD is effective is that it a way that developers are able to negotiate with management about getting the needed time to do proper development. "Proper development" includes testing - before, during, and after - but there's a lot of push to reduce development costs, and developers usually have worse negotiation skills and experience than managers.