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.
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.