If you haven't read KC's entry On Being “Thorough”, go check it out and come right back. I'm addressing the same point from a different direction.
On Friday, I submitted an invoice for a huge amount of hours to our biggest customer. The contract is fixed price, but paid on an incremental basis depending on the functionality of the system, so the absolute number of hours was irrelevant.
KC has kept detailed logs such as:
The first version of the [xxx] table and the [xxx]DAO is almost complete. I have sketched out all of its interactions with the [xxx]. I believe that it would be the best to completely seperate these data structures from all of the interactions with the actual [xxx] themselves.
Therefore, the [xxx] and their evolving structures can be isolated from the table structure. So far, there seem to be atleast 5 xml structures that we will have to deal with along with one that looks suspiciously more like SGML instead of xml. This may cause difficulties.
KC simply uses dotProject as a running log throughout the day taking a few seconds every so often to jot down thoughts, concerns, and questions about the system. As billing time approaches, a bit of editting and cleanup happens to the entries, but they are submitted nearly verbatim.
I spoke with the Project Manager this morning and he said that he was stunned at the level of detail. He said that none of their vendors submit records as detailed as this, not even those who are working on a Time & Material basis. This stunned me.
I believe that if you're going to bill out your time, you must report what is done accurately and completely. Without a high level of detail, two problems arise:
1) the customer cannot know the status of the project and 2) future project estimation suffers.
If software developers and companies want to educate customers, a higher level of service is necessary. This is why all of our customers are granted limited access to our internal dotProject and Mantis deployments.