Programmers are often a very poor judge of productivity. I've seen many Java programmers say they've had a productive day, but then I find they've typed 1001 getters/setters and intricately JavaDoc'd them. This is productive typing practice, but little more. In a similar vein, it's easy to feel productive if you're doing refactoring all day, but what has this actually achieved?
One aspect of TDD that isn't often quoted is that it helps get a concrete measure of productivity (and it's one of the themes of Beck's book). If you can see that today you've knocked out 100 tests, that's some measure of progress. It's a running theme through agile-processes. Small iterations / stories / code changes with measurable outcomes.