Philip Zembrod tells us that how could we improve coding productivity by writing test first. Writing unit test does make sense for things like class interface (though I've never tried this apporach), but what about the testing for UI code and component integration?
For functionality and integration test, I think running test first can also bring high value.
Although we are not going to write test code for that, we still run tests based on our functional specification. Few months back when the software I'm doing wasn't even half completed, we've started testing the software. When we see a total missing feature, we file a bug, then the programmer in-charge would have to implement it. When we able to access a feature which we are not supposed to, we file a bug, then the programmer would have to add the security checking. If we still able to login to the system even we'd just suspended ourselves, we file a bug, then there will be another check added.
Actually all these are stated very clear in the spec, but as you know, nobody read spec. But surprisingly, they do care about their number of bugs, thanks to the weekly meeting, which discusses about defects.
Everything works fine, except that now the responsibilty of reading spec has been transferred to the poor testers.