Back when I was a freshman at Clarkson University (nee Thomas S. Clarkson Memorial College of Technology), I was paid to write programs on the PDP-8. Yeah, I was a smarty-pants. End of the two-week pay period, I would have to fill in my time card, telling Dr. Willmert how many hours I had worked that week.
Computers then were just like computers now; hit the wrong command and you can destroy hours of work. No, we can't blame everything computer that works poorly on Microsoft, since Microsoft didn't exist at the time. Well, while I was working, I can recall two instances where I destroyed several hours worth of work. Oops. I made the professional judgement that, when you buy my time, you buy my mistakes as well.
How can this be acceptable? Shouldn't there be some sort of mechanism for correcting for my mistakes? Shouldn't I split the loss between employer and employee?
Let's say that I had mistake insurance, where my mistakes were covered by insurance. If I made a mistake, I would not bill my customer for the lost time, but instead would file an insurance claim. Wouldn't that seem to be a better solution? All my customers would pay the insurance, and none of them would have to pay if I made a mistake.
Well, that's a silly idea! Of course my customers are paying for the mistake -- in my mistake insurance premiums. I don't get to keep the money that they pay me which has to go to the insurance company, so as far as I'm concerned, I'm not making that money in the first place. So in order to get the same amount of money as without, I'd want to increase my rates to cover it.
Same thing if I didn't have insurance. Let's say that mistakes didn't cost me all that much. Instead of purchasing insurance, I simply self-insured. There's no real change in my situation. Instead of me paying that small amount per month to an insurance company, I'm paying it into a bank account. I withdraw money from the bank account whenever I don't charge a customer because I screwed up.
Now, take that money, and instead of me putting it into the bank account, I give it back to my customers. I charge all my customers a little bit less because I sometimes make mistakes for one or two of them. It's the same. Modulo overhead, the amount of money being flipped around is the same, and the effects on the customer and myself remain the same.
There remains two minor differences: when I make a mistake, I know that I made it. My customer doesn't necessarily recognize that I made a mistake. In an insurance regime, that might affect who asks for insurance. Also, when the customer pays for my mistakes, their payment is proportional to the difficulty of the job. If it's a hard job, then I might make more mistakes. On the other hand, it'll be worth more to them.
Anybody see any parallels to medical malpractice? You should, because that's what I was actually writing about, not programming.