Uncharted Waters

Oct 21 2013   7:09AM GMT

Piece Rate: A Fairy Tale

Matt Heusser Matt Heusser Profile: Matt Heusser

Leonardo Decaprio played a Lazy, Ambitious Man in 'The Great Gatsby'Years ago I worked with a programmer named Sam. Sam’s personality is a certain combination of lazy, ambitious, entrepreneurial, and impatient.

You may have met the type, and you know the combination is incredibly powerful. And also dangerous.

Being Entrepreneurial and ambitious, it didn’t take long to Sam to find a night job. (Note: I don’t have a problem with this as long as it doesn’t impact your performance during the day, and Sam was a workhorse. No complaints here.) This is the story of one of those jobs.

The Set Up

The first job I heard about was a report conversion, from something like Crystal Reports to SQL Server Reporting Services. You know the type of work – Open the software in Crystal, copy and paste the SQL into a new project in Reporting Services, set the margins and layout, maybe upload the company logo, then convert all the idiosyncratic rules of one version of SQL to the new database or package. Finally, you run both reports and make sure they match.

It’s boring, uninteresting … and it just needs to be done.

The customer expected each conversion to take perhaps two hours, and had a hundred reports. Estimating two hours per report, at $50 per hour, it was a $10,000 project.

No bad for nights and weekends for a couple months.

The thing was, Sam is impatient, ambitious, and entrepreneurial.

He wrote a code generator.

The Fix

Sam’s fix was to write a program in Visual Basic that extracted the SQL out of the Crystal reports binary files. Once he had the SQl, it was trivial to dump them in a directory, and not much more work to transform the output to look like a reporting services report. Combine that with a FOR loop through a directory of crystal reports files, and Sam could get pull the source code out of Crystal (all of it), into a series of text files overnight. Combine that with a few simple SQL transformations, to get the code looking right, and suddenly Sam had done the base conversions in about eight hours of writing.

Now the versions of SQL were different, and tricky, and there was a little cleanup and testing involved, so now a conversion didn’t take 2 hours, but more like 15 minutes.

So now we’ve got a problem.

Eight Hours to write the converter, plus 25 hours of conversions, means Sam can do the whole project in 33 hours. At $50/hour, that’s only $1,750!

By improving productivity, Sam actually hurt his bottom line. What’s a guy to do?

I’m pretty sure that Sam kept invoicing and turning in reports as if they took two hours, collecting $10,000 for 33 hours worth of work.


I’m not really excited about Sam’s approach; it strikes me as dishonest. If he had tried that at work, I would have had a problem. Because I did not know the client (at all; I did not even know the client name), I had no recourse, and eventually let it go.

But what if Sam had played it differently? What if, instead of billing hourly, he had charged a flat fee of $100 per report? Then we wouldn’t have an honor issue as much as piece-rate billing.

And piece-rate billing is perfectly fine; it is responsible for some of the greatest documented productivity improvements in business history. (Frederick Taylor? Forget what he credited for improvements, he paid the staff piece rate. The Hawthorne effect? Forget what they said, they paid the staff piece rate.)

When you pay people per item complete, the number of items they complete goes up, sometimes so much so that it changes the economics.

Of course, there are problems with this. Defining the work, making sure the incentives are aligned, avoiding unintended consequences.

Still, if and when it can be done, as you could do with Sam, and, dare I say it, we’ve learned to do for writers for years – strikes me as a much more decent way to deal with compensating workers.

Can we bring more piece-rate work to IT?

Perhaps … a little.

More to come.

11  Comments on this Post

There was an error processing your information. Please try again later.
Thanks. We'll let you know when a new response is added.
Send me notifications when other members comment.
  • Geekonomicon
    Piece-rate work is fine when you can bring in the work on time or ahead time.  What happens when a project scheduled to take 200 hours takes 400 hours?   At that point, you've effectively just halved your hourly rate. 

    10 pointsBadges:
  • Veretax
    In my experience, I've seen a lot of different contract vehicles, time and materials was one kind, which was essentially a mix of fixed and labor costs that fluctuated.  I think the other that jumps in my head was a fixed cost contract.   Some contracts may actually be built in such a way that if the work is completed early, the remainder of it is profit for the contracting authority.  Some contractors, will actually try to get that, plus a bit of buffer between contracts as well.  I'm told that some companies will even set aside part of their planned profit as 'Risk Money' should the contract run over, get not renewed, or delayed in having a new one issued for additional work on projects.  I get what, Matt is saying here, from a matter of 'honor', but since I don't really know what this guy was doing if it really crossed an ethical boundary or not is perhaps debatable.  
    8,675 pointsBadges:
  • 0pensesame
    I think, applying the principles of equity and justice, sam shd be paid by his boss the full amt of 10 k, evenif he knows that he had done it much earlier. That  is the price that he shd pay for the ingenuity and innovative spirit of sam. If i was the boss, i would hv done that. There is no feeling of guilty abt it. He shd hv been promoted as the head of the division so that he can get short cuts but sure cuts in the implementation of projects. 
    R. Ramamurthy, chairman,cyber security & privacy foundation, india
    20 pointsBadges:
  • FTClark
    Lazy? I know all about "lazy". I have been known to spend hours learning how to save a keystroke. If I save doing the same keystroke a thousand times, is that lazy?
    1,280 pointsBadges:
  • Matt Heusser
    @Dave - By offering to work piece-rate, you've shift the risk to yourself. That's kind of the point.  What you get in trade for that is the possibility to multiply your hourly rate through being efficient, no?

    It's not a trade for everybody, and it is not for every project.
    4,970 pointsBadges:
  • Matt Heusser
    @FTClark - Here's larry wall on the subject: 

    "Laziness - The quality that makes you go to great effort to reduce overall energy expenditure. It makes you write labor-saving programs that other people will find useful, and document what you wrote so you don't have to answer so many questions about it. Hence, the first great virtue of a programmer. Also hence, this book. "

    As you can see, I see this kind of laziness as /virtue/.  

    So yes, I do mean laziness. I just think it is a /good/ thing.

    There is another kind of laziness, by which programmers cut/paste code without thinking. That is not what I mean.

    More on the three /virtues/ of a programmer:


    4,970 pointsBadges:
  • TomLiotta

    A little OT... Much of our modern world is made available to us because of forms of "laziness". E.g., what's the point of a washing machine and a dryer?

    However, I don't really consider most tools to be the product of actual "laziness". It's from something related, though, even if I don't know what word to use. To me, actual "laziness" has an implication of not doing the work at all, of avoiding work. But the creation of time- and effort-saving tools takes work, potentially more than the actual intended task (especially if there is a belief that it will provide help at some unknown future date).

    If I was a true word-smith, I might come up with an appropriate word for it. I build 'tools' for myself all the time. As a developer, I have a belief in letting systems do the work whenever I can. I've always referred to it as being 'lazy' myself. But somehow it just doesn't seem right.


    125,585 pointsBadges:
  • Matt Heusser
    @tom - that's a fair point. 'Lazy' in english a pejorative, and I do not mean it that way. thanks.
    4,970 pointsBadges:
  • Justin Rohrman
    If I were in this situation, I would be try to renegotiate the contract. Something a long the lines of: "I may have found a way to complete this project in a couple of days as opposed to the couple of weeks we originally talked about, is that something would be interested in?"

    I'm not sure how eager people would be to create a new contract on the basis of that new information but it is an interesting thought. In this scenario, everyone preserves their integrity and everyone is happy. Do you have experience with this kind of renegotiation scenario?
    2,130 pointsBadges:
  • Matt Heusser
    "Do you have experience with this kind of renegotiation scenario?"

    The closest I've come is to offer an initial quote (say, on price per hour), then when it comes contract time, ask for more. when I've asked for more, if I've had a compelling reason and the rate increase didn't change the economics (EG +15%, not +75%), it has tended to work out.

    After the contract was signed? I haven't seen that. I wonder if others have?

    I /have/ done a lot of contracting for remodeling - I own a home built in 1871. If a contractor promised me an earlier end-date on a fixed price/schedule contract, and I had a compelling reason (my parents were scheduled to visit) then yes, I'd pay more for that.
    4,970 pointsBadges:
  • v008370
    Value based pricing as opposed to time based pricing has long been a conundrum to consultants.  Not just IT either.  Accountants are tackling this using subscription pricing, which adds an incentive for them to reduce time spent on a job to retain higher margins.  

    Interesting discussion though!
    25 pointsBadges:

Forgot Password

No problem! Submit your e-mail address below. We'll send you an e-mail containing your password.

Your password has been sent to:

Share this item with your network: