last day (15 days later) » 

09:32
60
Q: Am I morally obligated to use my own time to fix bugs in software projects?

DavidWhen a project has gone over the allotted hours, am I morally obligated to spend my own time fixing bugs or finishing the project? I've been working about 20 hours per week as a C# programmer for about 15 months for the same company. I can only work part time because of a chronic disability and ...

It appears you do not regard yourself as a full-fledged developer, and so you might be discounting yourself before your employer can beat you to it, and your offering to only bill hours that are forward-moving is a way to potentially appease your employer should they ever press this point. I doubt they ever will. You're a real developer and real developers get paid for all of the activities involved in development, including testing and maintenance.
The last paragraph of your question maybe should be a new question?
If you only can work part time because of your disability, shouldn't that prevent you from (or give you a strong case against) working overtime?
what happens when you Guess 80 hours and finish the project in 60? Will you get paid 80 hours and the client billed 80?
@KentAnderson Spot on. I'm really confused why nobody mentioned billable hours, such as bugfixing after shipping the product when requirements have been met.
09:32
Philosophical note: There's a trivial proof that shows that software cannot be confirmed as bug-free. 1) To confirm a program works for all inputs, you must test every possible input for every possible state of the program, or test every possible input sequence. 2) Input sequences can be infinite, so you can't test them all. Your hard disk is part of the program's state, and a 1kB hard disk can be in 2^2^1024 states. Therefore, you'll never confirm your software is bug-free. (equivalence classes and other testing methods help though)
If you are a 1099, then you are a contractor. Period. Contractors get paid according to their contracts. Unless your contract says that you promised to deliver something for a fixed cost or a fixed amount of hours (this is very unlikely for a 1099), then you are contracted for your hours of effort. Period. Since that has all been worked out in contract and law ahead of time, that dictates the morality of your situation.
@JohnWalthour This is not the proof that software cannot generally be shown to not have bugs, nor is it a valid proof for these reasons: 1) not all programs need to accept infinite input. In fact, arguably most do not. 2) proof of correctness can be established through Logic, rather than just incidental testing. Logic can handle infinite possibilities. and 3) in fact, there are many specific (small) programs that have been shown to be bug-free, it is the general case that cannot be solved.
What is "a 1099 contract worker" ? And how makes that different the question?
If the lesson you learned is about estimating, you might want to rethink whether you have or not: blog.hut8labs.com/coding-fast-and-slow.html. Something all software developers face. ;)
@RBarryYoung you're right - "proof" is the wrong word, and all your statements are true. I think my logic holds for all practical software development though - you'll never check every set of inputs to your program, in every state of your program. A good programmer tests a well-chosen subset of those cases; the untested cases may still contain bugs.
@Llopis According to IRS regulations, a 1099 contract worker is someone who is self-employed and works for another company, "at his/her own direction" (i.e., a self-employed consultant). In actual fact, it is a mechanism for companies to employ someone without giving them the rights nor follow the rules of an actual employee. Almost all actual consultants will, at a minimum, self-incorporate in order to have more explicit control over their relationship with the customer as well as their tax/income reporting to the IRS.
09:32
Well you haven't multiplied your estimate by Pi. So that's normal you are behind: alistair.cockburn.us/The+magic+of+pi+for+project+managers
I would help to add that to the question to provide context for non USA citizens :D
I feel it's quite dangerous to develop a mentality where you're grateful to your employer simply for offering you a job as you are much more likely to gloss over or forgive the kind of shenanigans you seem to be subject to (uncompensated overtime, confusion over accountability and financial issues), just because you think you have no other options. Realise that you do have other options and start exploring them now. Regarding your comment on part-time developer work, have a look here.
Underestimating is one of the most common business problems a freelancer can have. For that reason, I've recently started adding Hofstadter's Law as an automatic 30% increase on my estimates.
@LindseyD for quite a few developers, the rule of Pi (multiply your initial estimate by 3.14) would be more accurate for task time estimation than an automatic increase of only 30%.
@Peteris That's interesting, I like that! Like I said, I've only recently begun adding it, so the 30% is still experimental. But I've been doing this for 10 years, so that seems to be about where we consistently go over the estimate. Regardless, I make sure that my client knows that it's an estimate, and I still expect to get paid for any hours that I work (barring major screw-ups on my part).
09:32
"morally obligated" means nothing in business. nothing at all.
Pi? I'm an adherent of the Montgomery Scott school of engineering estimates: I prefer to multiply by a factor of 4.
@SJuan76 I think you mean "red flag" not "red herring".
@RBarryYoung: Thanks for the explanation of "1099 worker". I took the liberty of editing it into the question.
Time estimations shoudl also include time for nondev activities (meetings (time for all people who attend), handling emails, etc) and for bug fixing, for pushing the product through various enviromments, post production support, managment support time, unit testing, etc, Where most devs go wrong is they only think about how long they think the dev will take and usually that is a small part of the total time and extra for unexpected issues. Accounting for all the activities that 40 hour project can be a 120 hour project (a daily meeting for an hour for 6 people is 30 hours for every week) .
Hey David, just FYI, we have a site for Freelancers as well, and this question would also be on topic there. If you have future questions about freelancing problems (not programming questions but questions about the process), consider looking at Freelancing SE.
09:32
@SpehroPefhany you are right, thanks. I no longer can edit the comment, but I'll try to remember it for the next time.
You sound like a very good person who wants to ensure their work is good. Plus one to you for doing your best..
"There's been a few times they have forgotten to pay me but make it up the next pay period" What
If you are running the risk it also could be reflected in you rate. If they pay me consultant rates (100 euro/hour-ish) I can take all the risk/training. If they pay me 10-20 euro/hour its salary and they take the risk. Look at the details of your contract
What does your agreement with the client say? What does your agreement with your employer say? Are you required to deliver the project as-is or as bug free? Has the client paid up? That's why I don't do freelance work.
DA.
DA.
This is business. Morals have little to do with it.

last day (15 days later) »