I often come across the illusion that a productive day for a developer is to churn out as much code as possible. This illusion creates an expectation to keep coding for the whole day and cut short time to design, reflect or retrospect.
Measuring programming progress by lines of code is like measuring aircraft building progress by weight
The answer to the question of measuring productivity is very difficult especially in the application developer’s world. Every one wants something such that it either enables them to earn more money than what they spent on acquiring it or it gives a sense of satisfaction on using the product (Essentials and Luxuries). Same is the case with every business who wants a software and present the consultants with what software they want most of the times instead saying what is the problem they are trying to solve.
It is expected of every programmer to make sure what we do is what the customer really needs instead of being a human translator to get specifications into working software. After a careful analysis we may even have to ditch the requirements or spend more time in sharpening the tools get usable working software soon, most of the times do both. I came across this post by John D Cook, who illustrates that sometimes a programmer can be 10 times more productive than his/her peer but it will not be obvious at all.
Numbers are useful mostly to indicate an absence of something. If we concentrate on creativity and problem solving instead of getting some numbers on board we would end up being very productive.