Fog Creek Software
Discussion Board




Software Development Ethics

So there's this guy I stopped working for 4 months ago.  I gave him the standard two weeks notice, and even have done some bug fixes since then.  He claims he's sending me a check for these, but I haven't seen it yet.

Anyway, now I find out he thinks I'll continue to do any bug fixes for him for free, apparently since I wrote the bugs in the first place... is this out of line?  I kinda want to get on with my career and put this project behind me, but I'd like to be a nice and ethical guy at the same time.

The real show-stopper bugs have been pretty much resolved.  I'm afraid I could be fixing tiny bugs and little quirks for the rest of my life.

confused
Thursday, June 17, 2004

You have to explain to him that this wasn't a fixed price project.  As a good contract or license would say, bug fixes are billable.  They don't represent mistakes.  They are work that hasn't been done.

Gunnar Skogsholm
Thursday, June 17, 2004

As someone who's normally sitting on the other side of your predicament let me give you some advice.

Your development contract (you did have a contract, didn't you?) should specify a period after your employment during which you will fix bugs or respond to queries for free. And then that period has to stop. Because it's really not fair for a client to hold a developer to fix bugs indefinitely, since the client is under an obligation to ACCEPT the software in a reasonable time, warts and all.

In the absence of a contract you might want to spell out a policy along these lines:
(a) you'll fix bugs of a critical nature for free for the next month;
(b) you'll fix bugs less than critical at cost (time & materials) for the next month

and then you'll either offer to fix bugs or enhance features at your standard contracting rate after that, OR he'll have to find someone else to do it.

From my point of view that would be a fair arrangement and it's something I try to work with my contractors: there's some accountability and recognition that bug finding can be hard and even very good testing can let serious bugs through. But I'm also under an obligation to do my darndest to perform my acceptance testign in a reasonable time frame and, once the software is accepted, anything else is a change request that I must pay for.

Hisso
Thursday, June 17, 2004

Hisso, I don't think the guy was working under a business-to-business contract. It sounds like he was an employee.

Confused, your employer has absoutely no call on you to do further work, whether it's called bug fixes or whatever. I presume he doesn't plan to keep paying you a percentage of his sales? So you don't keep working for him for free.

Next time he asks you to do more work, tell him the hourly rate you will charge and demand that most of the estimated total be paid in advance. He wants you to do the work; not the other way around. You are doing him a favour.

Inside Job
Thursday, June 17, 2004

Inside Job is quite right -- if you were an employee, then none of what I said applies. It's unethical of your former employer to try and call you back.

Hisso
Thursday, June 17, 2004

It isn't unethical for them to try and get you to do work.

But there's no constraint on you, either on ethical or any other grounds to do anything for them.

Simon Lucy
Thursday, June 17, 2004

If you want to do the fixes present him with a consultancy contract, specifying an hourly rate. I wouldn't make it fixed price.
Since you were an employee, any responsibility towards the product ended with your termination.

Just me (Sir to you)
Thursday, June 17, 2004



If you're fixing bugs for free now, eventually he's going to have you developing new functionality for free.

Unless you had a guarantee or a "will fix bugs for XX days" clause, stop it.

Think of it this way... for every second you're putting in for this guy for free, the rest of your life (job/family/friends/fun) that is being ignored without compensation.

KC
Thursday, June 17, 2004

In general, and without any specific contract (and that might include a verbal commitment), an employee has NO OBLIGATION whatever to a former employee to perform services. You might have a non-compete or intellectual property agreement that has to be obeyed, but you certainly don't have to perform bug fixes.

Especially if you aren't getting paid.

On the other hand this guy could give you a bad reference if you don't do what he wants, but I wouldn't worry too much about it.

In short, you are being taken advantage of. Was your prior job your first job? That excessive feeling of obligation points to lack of experience.

frustrated
Thursday, June 17, 2004

"I find out he thinks I'll continue to do any bug fixes for him for free, apparently since I wrote the bugs in the first place..."

This was my funny after lunch reading for today. Thank you. :)

Daniel Daranas
Thursday, June 17, 2004

>> Inside Job is quite right -- if you were an employee, then none of what I said applies. It's unethical of your former employer to try and call you back.

You guys are confusing poor Confused even more.  Even for a contractor, there is no ethical obligation to do work for free.  It's called the 13th amendment.  If there were a contract, he wouldn't be confused.  If there is no contract, then the software still belongs to Confused.  Confused, you can decide whether to fix your own software.  If you point out to the customer that the IP rights still belong to you, he may want a contract to transfer IP rights.  In exchange for that, you require that you get paid for all the work you have done, and for any future work.  However, don't interfere with the client's business, or appear to be holding them hostage.  They could sue you for that.  But getting paid for all the work you have done, and any future work (at the same rate you got for the original work) is reasonable.

Confused, send me an e-mail, and I can hook you up with a contract.

Gunnar Skogsholm
Thursday, June 17, 2004

Gunnar, I think you're confusing poor confused. The guy seems to have been an employee. He doesn't own the software. Forget that line of reasoning.

Second, if confused starts charging for further work, he doesn't have to do it at the previous rate. He can charge what the market will bear. Since he doesn't want to do it, he should price it quite high.

Re the other point someone raised about the employer giving a bad reference, there's a limit to this. In fact, if he did give the staffer a bad reference in this situation, he could be sued in many countries.

Apart from that, if he's holder the staff still liable for bugs, he's probably going to bad mouth the staffer anyway. ("His work was so dreadful he's still fixing the bugs...")

But any new employer hearing that sort of "reference" is probably going to recognise that the candidate did the right thing in leaving.

Confused, you're not in India are you? 

Inside Job
Thursday, June 17, 2004

Inside job,

I can't see where his post leads you to conclude that he was an employee.  If so, then you're right, he doesn't own the code.

My point is that contrary to some postings, he has no ethical obligation to work for free, regardless of whether he was an employee or not.

If was a contractor, then he --does-- own the code, until he transfers the rights.

Gunnar Skogsholm
Thursday, June 17, 2004

"I gave him the standard two weeks notice ..." suggests he was an employee.

I agree of course that if he was a contractor, it's his code and he should start charging for it.

Inside Job
Thursday, June 17, 2004

If he's not a charity, he is required to pay you minimum wage at least for your work. A failure to do so is not just a federal crime, but is certainly unethical.

Dave Billoughby
Thursday, June 17, 2004

Heh, wow, sorry for being vague. I really didn't intend to arouse so much speculation.

I can see from your posts that a big problem was just a lack of formal contract and, in general, basic expectations about the nature of the relationship.  For the record, I'd consider myself an employee.

I think I pretty much expected the comments you all posted, but thank you for indulging me.  I've obviously quite new to the industry, and just wanted to make sure I'm not out of line.

ps.  We really haven't been getting along that well since I quit, so I'm really not counting on him for a recommendation or anything anyway.

confused
Thursday, June 17, 2004

"For the record, I'd consider myself an employee."

It's not really a matter of what you'd consider yourself, it's a matter of what you actually were.  Did they dictate when, how, and where you worked?  If so, you're almost certainly an employee.  Did they deduct taxes from your paycheck for you?  If so, you are probably an employee.  Did they deduct no taxes and send you a 1099 every year?  If so, you're probably a contractor.

That's pretty much how it works in the US.  YMMV.

If you were an employee, you have no obligation to do any more work for them, free or not.  If they insist on it, tell them you'd be happy to be a contractor and quote a nice high billing rate.  If they balk, walk.

Aaron F Stanton
Thursday, June 17, 2004

This issure rises up pretty often in software development.

The customer contracts for a job.  The software developer does the job.  The customer then refuses to accept the job, and wants it redone.  For free.  The innocent developer then re-does the job.  The canny developer negotiates how much more the customer will pay to re-do the job.

If you did the job as an employee, then the company that employed you owns the job.  They need to get someone else to maintain it.  Any bugs that are in the code are owned by the company.

I've had more than one customer or manager say "But it's software.  It doesn't BREAK or anything.  Anything that's wrong in there YOU (the developer) PUT in there!  Why should I have to pay for maintenance?"

To which I respond -- most 'maintenance' on software comes because you want enhancements to the software.  So you'll need maintenance.  Secondly, we tested the software.  Any 'bugs' that remain in there are there because of incomplete requirements, mis-understood requirements, or a combination of factors we couldn't test for. 

Some posters have supplied really nice ways to deal with the "I wanted X, I said X, you delivered X, but I really wanted Y, and you aren't done, and I'm not paying you" dilemma.

AllanL5
Thursday, June 17, 2004

"To which I respond -- most 'maintenance' on software comes because you want enhancements to the software.  So you'll need maintenance.  Secondly, we tested the software.  Any 'bugs' that remain in there are there because of incomplete requirements, mis-understood requirements, or a combination of factors we couldn't test for.  "

Bravo!  Succinct, but non-confrontational.

This sort of thing happens all the time - for some reason people think that technical professionals are easily pushed around. 

I am very big on standing by my work - if a customer finds something that is absolutely a mistake that I made, I'm all over it at no charge.  No problem there.  That's the hallmark of being a professonal - not only owning up to your mistakes, but correcting them.

For everything else, such as the aforementioned incomplete or imperfectly understood, or uncommunicated requirements, there is a simple mantra I implore you to embrace:

"We do not work for free."
"We do not work for free."
"We do not work for free."
"We do not work for free."
"We do not work for free."

www.ChristopherHawkins.com
Thursday, June 17, 2004

Anyone doing contract development should require an upfront commissioning payment and then regular time-based payments.

They should not go without any payment until the final product is delivered, and then rely on whether the client thinks a bug disqualifies the work.

Lawyers charge whether they win or lose. Doctors charge whether you die or not. And so it goes.


Thursday, June 17, 2004

>> I am very big on standing by my work - if a customer finds something that is absolutely a mistake that I made, I'm all over it at no charge.  No problem there.  That's the hallmark of being a professonal - not only owning up to your mistakes, but correcting them.  <<

See, this is the mindset that is confusing 'Confused'.  Bugs are NOT mistakes.  They represent work that hasn't been done.  Unless one was stupid enough to bid the project as a fixed price project, it's billable, period.  If you had found the bug while still working on the project, would bill for that time?  If so, then the situation is no different after you leave.  Like the last poster pointed out, if I find a sentence in my lawyers pleading that is grammatically incorrect, will he fix it for free?

Gunnar Skogsholm
Friday, June 18, 2004

*  Recent Topics

*  Fog Creek Home