Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

In my answer of the question about what are the important points to consider when starting your own company, I mentioned the fact that when the customers pay per hour of work, there must be a way for them to be sure that you don't make them pay for more hours that you actually spent working on a project.

But now that I'm thinking about it, how this can be implemented? In other words, how can you prove that you've worked on a project 32 hours the last week, and not 10 hours?

In our company, we use a basic home-made time tracking software which is very helpful but has its limits:

  • If the developer is browsing Facebook for the last hour but forgot to notify the application that he's not working on the project any longer, the application will still count the Facebook time as the time spent entirely on the project.

  • If an employee of the company has enough permissions on database level, nothing can stop her to modify time records for the last weeks or months (even if it can be more difficult to do with better audit and permissions control).

Finally, we don't even give to the customer some of the details about the time we spent.

  • In our invoices, there are enough details to know that for a specific part of a project, a developer spent 121 hour working on C#/ASP.NET and 47 hours on CSS/HTML and that a database administrator spent 39 hours designing the database and 11 hours reviewing data access layer and optimizing queries,
  • But there are nothing like that on September 24th, 2010, the database administrator was working on database design from 9:34 AM to 11:48 AM, then from 16:01 PM to 16:42 PM, then from 16:50 PM to 17:24 PM, and made two commits to the version control, the first one at 11:47 AM with the number 1234, the second one at 17:24 PM with the number 1239 as a proof.

So what is the current practice in other companies? How do you deal with time management to ensure that customers have enough information to be sure that they pay only for hours/days really spent on their projects?

share|improve this question
add comment

6 Answers

up vote 2 down vote accepted

Something that helps is to actually track what the dev is doing during the hours he/she works on the project.

We got an invoice from one place that was billing us hourly, and they marked down exactly what they were doing. Documenting A, Researching B, building class C, building unit tests for D, etc. It sounds really annoying to actually do, but the end result is you can account for most of the time someone has spent. If you see someone spending 50% of their time on "Research" you know you need to start asking questions.

share|improve this answer
add comment

Nobody has solved this problem, and I doubt that they ever will. And yet, the software business keeps running. Why? Probably because clients don't actually care how much time you spent on what, they only care about the total price and the final delivered product.

EDIT: I'm not saying that detailed time reports are useless. But their main use is to the people who are directly managing the project. And no, there's no way to automatically verify that they're accurate - you just have to trust your people.

share|improve this answer
1  
+1 It's true, they really don't care about what you do or how long it took, they just care about the fact they paid X to get software Y –  Rachel May 2 '11 at 19:19
add comment

It's called "the honor system." They trust that you're being truthful in your time spent, because, really, there isn't a way to unequivocally prove that you did what you needed in the time you said you did.

And, like Mike said, the customer doesn't much care (within reason) how much time you actually spent.

It's probably why project-based pay is often used instead of hour-based pay.

share|improve this answer
add comment

It really doesn't matter unless you are working by the hour and on-site. If you're working off-site, payments will be "by product delivery", thus it really doesn't matter if you spent 12 or 20 hours building it.

Of course, clients want an estimation of cost which we (as an industry) correlate to "hours needed to build the product"x"hourly rate". Thus, make the invoice for the exact amount of hours you estimated originally, and make sure that either the hourly rate or the estimation compensates for errors in the estimation (up to 30% deviation). If the price is right, the time reasonable, and the quality good, nobody will complain.

share|improve this answer
add comment

Other than having them look over your shoulder or putting the nanny cam on you, there is no perfect solution. They'll compare your rate to the market and see if you project fits in their budget. If you say it will take 10 and it takes 20, you have some explaining to do even if you can prove you hammered on their code for 20 hrs straight.

The real catch is, how do they know if you charge 100/hr and it takes you 5 hrs to finish that they couldn't have found someone else who charges $200/hr and could do it in 2?

share|improve this answer
add comment

http://freshbooks.com/ is good enough for everyone that I've done freelance work with. If you forget to say that you switched tasks, you can fix up the history. And fundamentally if they don't trust you to track time honestly, you've got bigger problems.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.