You're a coder. I'm a coder. James is certainly a coder's coder. But stop thinking like a coder for just a moment, though.
Having (functional) product out the door (faster) beats having (better) code in the market (later). Every time.
Do I defend this? Yes and no.
Have I experienced this? Yes.
Wearing my manager hat, the product ships. Code refactoring is extremely difficult to justify.
Wearing my coder hat, I refactor and re-comment and rework and update the test cases while I still remember what I was doing with the particular routines. Then I move on.
This is the age-old conflict between better and faster; elegance and schedule. It's why managers and coders are so often in conflict, too.
Hoff's point was well above that, at the design/macro level. For that I alternate releases between adding features and house cleaning (bug fixes, refactorings, etc). With a sufficiently short iteration time, you can appease both the client/users with new features and the developers by keeping things clean and happy.