I’m not sure when this was published, but in EWD 1305, Dijkstra identifies the clear need for TDD, presumably well before the phrase “Test-Driven Development” is ever used:
A programmer has to be able to demonstrate that his program has the required properties. If this comes as an afterthought, it is all but certain that he won’t be able to meet this obligation: only if he allows this obligation to influence his design, there is hope he can meet it. Pure a posteriori verification denies you that whole-some influence and is therefore putting the cart before the horse, but that is exactly what happens in the software houses where “programming” and “quality assurance” are done by different groups. [Needless to say, those houses deliver without warranty.]
The man never ceases to amaze me.