Home AMX User Forum AMX General Discussion

Would you agree to this?

A company wants to contract me to make some changes to their existing code. This is the last paragraph in the SOW from them.
"It is you responsibility to perform full system testing after the code updates have been made and to verify these updates are operating correctly. If for some reason any code updates accidentally affect or change other parts of the code, then it is your responsibility to identify and fix. If new code bugs occur because of this and are left untreated, then it is your responsibility to go back onsite to fix on his own time and we will not pay for those additional code fixes due to those errors."

My question is, would you sign this and do the work?

Comments

  • a_riot42a_riot42 Posts: 1,624
    Kenny wrote: »
    A company wants to contract me to make some changes to their existing code. This is the last paragraph in the SOW from them.
    "It is you responsibility to perform full system testing after the code updates have been made and to verify these updates are operating correctly. If for some reason any code updates accidentally affect or change other parts of the code, then it is your responsibility to identify and fix. If new code bugs occur because of this and are left untreated, then it is your responsibility to go back onsite to fix on his own time and we will not pay for those additional code fixes due to those errors."

    My question is, would you sign this and do the work?

    It would depend on all the other factors, pay, client, future work, etc. They might be wanting to pass old bugs on to your lap by saying you created them. I've dealt with that before, and because you likely don't know what works and what doesn't, there's no way for them to determine the origin of old problems. It also depends on your ability to read someone else's code, absorb it and make changes to it.

    If they complain about a bug that you didn't create, it will be your word against their's, and they may not pay based on that. I probably wouldn't agree to that myself, but your situation might be different. I would amend it to say that since you didn't build the project, your modifications will be done on a best efforts basis, and you can't be held responsible for legacy code problems unless they pay for you to deal with it.

    I've taken over a few projects, some that were nightmares and needed to be rewritten from scratch, and others that required a small tweak and were good so every one is different. I've stepped into a project where they just wanted TV fav channels updated, which I did by changing some constants, and them all of a sudden they are complaining about all the things I broke that they now want fixed for free lol. I just put the favs back to the way they were and said "No thanks, good luck"!
    Paul
  • PhreaKPhreaK Posts: 966
    This company is either trying to be seriously dodgy (which is bad thing) or, just ensure systems are tested properly (which is a very, very good thing).

    I would ensure a copy of the original unmodified code is made visible to both parties before starting work. If it's not already in source control, put it in there. You should do that anyway, even if this paragraph of the contract didn't exist.

    Now, what comes next is personal advice from someone on the internet that you have never met and likely lives in a separate country and legal environment than you so should definitely be taken with a healthy side of salt...

    If it did come to the situation where an issue is identified and you were called back in, I would happily investigate, however if it is provable these are not related to code modifications you made, bill for this time. If it was your bad, no problems, resolve it and move on. Simple.

    The only exception to the above is if you were passed the code and it was an absolute mess. Let the client know that you cannot make changes to this and guarantee system stability and either walk away, or ensure you quote enough to be able to perform a complete reprogram.
  • ericmedleyericmedley Posts: 4,177
    My short answer: nope, wouldn't sign.
  • DHawthorneDHawthorne Posts: 4,584
    I wouldn't touch it. I've had far too many incidences of customers blaming things on my code that had nothing to do with it. Most are reasonable when I point out the real problem, but some are vehemently not (ie., they want me to fix someone else's mistakes on *my* warranty, and if I want to get paid, I have to appease them). I've told my boss many times not to touch a job originally done by someone else without either a full re-write or some very careful language protecting us. Often I get, "well, it is working, how bad could it be ...", and that doesn't usually have a nice answer.
  • rfletcherrfletcher Posts: 217
    Kenny wrote: »
    A company wants to contract me to make some changes to their existing code. This is the last paragraph in the SOW from them.
    "It is you responsibility to perform full system testing after the code updates have been made and to verify these updates are operating correctly. If for some reason any code updates accidentally affect or change other parts of the code, then it is your responsibility to identify and fix. If new code bugs occur because of this and are left untreated, then it is your responsibility to go back onsite to fix on his own time and we will not pay for those additional code fixes due to those errors."

    My question is, would you sign this and do the work?

    I wouldn't touch that with a ten foot pole if I could avoid it. The phrasing just screams "Jerk who is going to fight over paying the bill when the job's done" to me.

    If I had to get involved I'd insist on thoroughly documenting the existing state of the system as part of the billable time for the updates before updating anything so you don't get hosed fixing all kinds of crap that never worked.
  • GregGGregG Posts: 251
    I'd want them to write a full test specification checklist for completion that includes both old and new items which have to be working. Then I'd want to see the current system pass the old system's tests before starting.
  • John NagyJohn Nagy Posts: 1,740
    The worst case, presuming the company isn't trying to shift old trouble to new hands, is that the changes as you plan to make them might be mutually exclusive with the operation of something already in place. So you'd have to re-engineer your work at your expense, or re-engineer the old source, at your expense, to resolve the problem.

    Either could take hours, days, weeks, or forever. To agree to uncompensated work of unknown quantity is madness, and if the company can't see that, you need to consider pressing for T&M front to back. Or walk.
  • PHSJasonPHSJason Posts: 66
    Obviously, your updates should be a separate revision with the option to load old code back at any time to verify the problem only exists with the update. A clause of:
    "Old source code and programming will be kept and will be used where practical to verify system functionality. Any request for future errors or debugging that can be duplicated with the original code(problem preexisting) will be billed on a time and materials basis at a rate of_____ per man, per hour, including all consultation, testing, installation, programming, documentation, and travel time."

    Something similar for testing the functional state of equipment. Having them tell you the left-rear speaker in the theater worked before you got there is always a bonus. Always advise a FULL system test, on the clock before touching anything, even if it takes 2 more days just to test.
  • champchamp Posts: 261
    I'd charge and do a full program re-write, otherwise you are risking too much.
    I've been caught out several times with existing systems.

    I have come accross several existing projects where variables are not initialized (especially array sizes) in code and when I re-send the original tkn the program doesn't work or behaves oddly, the original programmer must have set the arrays via a watch window originally then left me a little time bomb.

    I've also been caught out replacing dead controllers where the original code did not set the ports correctly, so IR ports used for RS232 don't work, or RS485 ports are still RS232 thus pulling down the lighting systems RS485 buss to ground.

    Then there are AMX modules, originally they were defined (device, virtual), I have used modules with the same name where the parameters have been swapped around.

    There are so many ways to get caught out, not winning a job then not making money whilst sitting at home is way better than not making money whilst working on somebodies house whilst they blame you for problems you didn't create.
Sign In or Register to comment.