Fog Creek Software
Discussion Board

Independant types redux

Wow, I never expected the number of comments I got on my "should I bill for finding a kernel  bug" question.  Don't you all have jobs to do, or something? :)

To clear up a common misconception, nobody has refused to pay anything.  I'm just feeling a bit of 20/20 hindsight guilt over spending almost a week tracking down a kernel bug.  I haven't yet invoiced for that week, but I have no doubt I'll be paid.

I actually used my boss (head of company B) as a sounding board when I thought it was a problem in my code.  He knew when I suspected hardware/kernel problems, and he approved my continuing to work on it.  As someone said, once I could prove it wasn't my code it only took about 2 hours to find the real bug, then a quick google showed it was a silicon bug that had a 2 year old patch available.  What made it so difficult was I had no hardware tools, not even a voltmeter.  At any other job I'd have slapped a logic analyzer on the chip and proven it was a hardware issue in half a day.  It was using software to track down a high speed hardware problem that made it so tough.

I hesitated to bill as I know he's on a tight budget, and when he gets more work I want to ensure he thinks of me without reservations. 

As a final note, we got mail from company A today, they're happy with the results.  They still claim their operation wouldn't have triggered the bug, but A) we had no way to know that; and B)  I'll bet they'd have had mysterious lost bytes had I not fixed the problem.

Thanks for the input, I'll be billing for the time.

Unemployed coward
Tuesday, February 17, 2004

"They still claim their operation wouldn't have triggered the bug, but A) we had no way to know that"

Uh, having company B ask them wasn't an option?


Tuesday, February 17, 2004

The data is classified, we have to take company A's word for it.  All we know is the packets are 8 to 1k bytes long, at a typical rate of 1 per second.  Getting a 1k packet every second would have triggered  the bug if the planets aligned themselves correctly.

It just occured to me, maybe Company A doesn't want to fess up because I shouldn't have known I could get a 1k packet every second.  It is classified, ya know....

Unemployed coward
Tuesday, February 17, 2004

Good work, Unemployed Star.

Tuesday, February 17, 2004

If its classified, budget constraints tend not to get in the way too much.

Simon Lucy
Wednesday, February 18, 2004

Well, for future reference:
UC to Company B: "Hey, there's this bug in the source code that might cause problems. Should I fix it?"

Company B to Company A, in writing: "There is a bug in the original source code which may cause [x] when [y] happens, but may also have other unforeseen effects. For a fixed-fee charge of $z  we can offer a patch to correct the bug. If you do not wish to pay for the patch, that will waive our warranty obligations. Please indicate in writing which course of action you wish us to follow by [date]. Work is on hold until we receive a response."


Wednesday, February 18, 2004

And while he's waiting three months for a response, what's he doing for money, since he's not getting paid while he's waiting around.

Your Navy background is showing through Philo.

Wednesday, February 18, 2004

One big problem with fixed price contracts is that "by definition" the client does not want to hear about or acknowledge out of scope, real issues that can impact the success of the project. This is by far the one issue that makes most fixed price work in this business a tarpit and a huge liability.

It is most likely, based on the discussions up til now, that in "Coward's" case, B going to A with a finding of a kernel bug would have resulted in a directive to stay within scope. Clients tend to act in fixed price situations like the contractor "by definition" must not discover any facts that affect the reality of the deal.

The problem with B doing the "contractually stipulated thing" is that by staying within scope, they are actually negatively affecting the potential success of the project, as well as opening themselves up to professional liability (IANAL) for "covering up" the kernel bug. IE: B may not be able to get paid if problems are found due to unrelated platform bugs. A can claim "B's the expert, they should have known when they bid."

And, a third party in the future may "jointly and severally" blame anyone whose fingerprints were on the work, including A, B, and B's subs.

You guys saying "coward should eat the work" may be correct legally, but you're failing to appreciate all the implications of failing to do the right thing even when the client tells you to do the wrong thing.

And rolling the changes back out? B and coward may be setting themselves up for liability for not addressing a *known* problem. Even though they weren't paid to fix it. The law attaches a lot of weight to one's proven recognition of an issue. (take Martha Stewart changing her daily schedule entry about her trade, for instance.)

As far as Coward's liability, his contract is with B and it's hourly. B loses money? Wah. wah. wah.

It's not Coward's fault. It's the fault of the inflexible form of contract used to cover the deal.

The right thing that "should" happen is that: A should recognize the value of the extra work, pay for it and acknowledge its importance; B should be aggressive in pursuing this; and Coward should get paid for his time.

And B should not sign stupid contracts in the future.

Bored Bystander
Wednesday, February 18, 2004

"Your Navy background is showing, Philo"

One thing I *hate* about giving out my background is then people use it as a crutch to read my mind without going through the troublesome work of actually having the discussion. This creates the interesting situation that what I say is jointly and severally related to
- My Navy background
- My contracting background
- My legal background
- My not having actually practiced law
- My "lack of contracting experience"
- My working for Microsoft
- My visit to the Playboy Mansion
(okay, not that last one - that's just me showing off)

Believe it or not, I am actually capable of independent thought.

My point through this is:
a) I like to make lists. This is due to my ADD background)
b) His work, on an hourly contract, was out-of-scope
c) When an hourly contractor hits an out-of-scope bump, he should feel obligated to contact the client and determine the course of action
d) For the client, the bug was within scope of a fixed price contract, but they were free to try to negotiate additional funding for the fix or attempt to get a waiver on the warranty
e) Absent a waiver, not fixing the bug and delivering opens Company B up to a warranty action (and bad blood) when the bug surfaces.
f) "What does he do to pay the bills while he's waiting for an answer?" - That's why independent contractors should always have more than one client, and why they charge more than FTE's - it's feast or famine, but a wise manager & salesman can make a lucrative living off it. In the meantime, don't whine about real life. :)
g) Turning in invoices for $2000 than the original estimate does not breed additional business.


Wednesday, February 18, 2004

*  Recent Topics

*  Fog Creek Home