-1

I just finished a 5 month contract where I was hired as a program to make a program. The program is part of a bigger project. On my last day just as I was handing over everything, my boss had me show him some output from the program. He is not really technical (at least when it comes to programming) and he almost never checked my work. He noticed some omissions/bugs in the output and had me change the code. Of course it broke the program. Of course I couldn't get it back to a usable state. I did have a backup but my boss said it was too old. I do feel bad about not having made a more recent backup. Now my boss wants me to come in another day to finish it off. I wouldn't be paid for this and this is more of a favor.

Summary:

  • My manager collected all deliverables on the last day
  • My manager had me change something that broke the program just as I was leaving
  • I stayed late to fix it but I was growing fatigued and frustrated and needed to stop
  • I reverted back to an old version, but it was quite old and my manager didn't like it
  • My manager wants me to come in some time next week to fix it
  • I wouldn't get paid but I'm ok with this
  • My manager micromanages and always pokes around and messes up what I'm doing
  • the building I worked at has relatively strict security and I would probably have to fill out paper work just to get back in the building.
  • my manager is bad at communicating
  • other people who work with my manager think what he's trying to do is nuts and is a train wreck (like the way he's organizing data)

My thoughts on what to do:

1) if I do go in, have a specific time that I will leave after no matter what. For example if I decide to go in for 8 hours, I would make a backup of everything, then after 8 hours I would be done even if the program is in a worse state than when I started.

2) I would like to speak to my manager's manager as I can communicate better with him. I am going to give the ultimatum that I'm only going to come in when my manager isn't there, as he tends to micromanage which results in breaking things. I know when he gets stressed he comes by every 20 minutes to ask how I'm doing and poke around and this seriously derails me. How can I state this diplomatically?

Any other requirements I should ask for? I'm also concerned that when I come back the IT department will have shut off access to my account. FWIW I'm sure I could fix the problem with the program in a calm environment given 1 or 2 hours.

UPDATE: I called my manager's manager (my manager is on vacation now) and he said it was his preference that I write some documentation as to the changes and how to fix it.

With regards to the contract, it clearly said which days I started on, how many hours a week are worked, and how many dollars and hour I get paid. Nothing about the product or deliverables.

With regards to the version control: I was told not to use it, though I had been making incremental backups. I did revert to a backup but my manager said it was too old. Yes I realize I should've made another backup of the finalized product, but I was in the process of handing everything off to my manager and was "caught of guard" when all of a sudden he had me change the source code.

final update: I went back in. Fixed it. Now they want me to come back in again saying it's not running/they don't know how to run it. I'm not going back in again.

closed as off-topic by IDrinkandIKnowThings, gnat, scaaahu, yochannah, The Wandering Dev Manager Sep 7 '15 at 17:11

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions asking for advice on what to do are not practical answerable questions (e.g. "what job should I take?", or "what skills should I learn?"). Questions should get answers explaining why and how to make a decision, not advice on what to do. For more information, click here." – IDrinkandIKnowThings, gnat, scaaahu, yochannah, The Wandering Dev Manager
If this question can be reworded to fit the rules in the help center, please edit the question.

  • 5
    The word no comes to mind. But questions asking us to make a decision for you are off topic – IDrinkandIKnowThings Sep 1 '15 at 19:29
  • 31
    Why was your code not in source control? – HLGEM Sep 1 '15 at 20:08
  • 4
    If he said not to use version control, it's his own responsibility to have made his own backup before making his changes. You have no obligation to save him from a self-inflicted wound. How important is he as a reference, and will rescuing him improve that? Frankly, I think you should be charging consulting rates even if it's "a favor". – keshlam Sep 1 '15 at 21:04
  • 10
    "I was told not to use version control." <-- This statement is no excuse for a professional. Just imagine you're a professional driver and your boss says "don't use a seatbelt." You can and should still use version control on your own development machine, even if the company is not investing in a centralized version control system. – Brandin Sep 2 '15 at 6:20
  • 6
    Version control works this way - when you get to the final release, you commit that version into version control and tag it as "0.1.0-rel" or something similar. If you or your boss fiddles with it on the last day and breaks something, you just roll back to 0.1.0-rel to get to the previous known working version. But it sounds like you didn't do that (i.e. you weren't using version control). – Brandin Sep 2 '15 at 7:54
12

The answer depends on how the contract is written. If this was a fixed cost contract, you are paid x for y deliverables, then yes you need to fix the issues at no cost since the contract is not complete.

If the contract was a time and materials contract, you are paid x for y ammount of time, then you could charge for the additional time.

The other facts are secondary to the type of contract. The fact that there are still bugs in the code are part of coding, if you are not double checking the requirements then things will happen. The fact that there is no source control and so the additional changes cannot be backed out easily is a pain and I am sure you will learn for next time.

In the end this all comes down to the type of contract and if you want to work with the company again. Sometimes swallowing a days work to secure another 3 months is worth it since you may not get the additional 3 months otherwise.

  • Upvoting for mentioning the different types of contracts. – shoover Sep 1 '15 at 21:05
  • 2
    This is the only responsible answer. Read and understand your contract. If you perform work outside of the contract, you lose the protections of the contract. – Air Sep 1 '15 at 23:00
  • 1
    And mind you, the extra work shall be done at a higher rate/hour :) – Juha Untinen Sep 2 '15 at 10:30
8

As a programmer who is being paid for your output, it is your responsibility to make sure that you can reproduce all of the deliverables for which you are being paid. The deliverables include not only the final working software, but the source code and all build/make files required to build the final working software, and to deploy it as well, if you are writing cloud-based software.

This may mean keeping your own backups, and it may mean maintaining your source code in version control.

Since you have not maintained all of the deliverables, the right thing to do would be to make it right. That is, on your dime, without additional compensation, deliver what you were already paid to deliver.

  • 3
    "As a programmer who is being paid for your output" FWIW I was paid by hour, and that's clearly stated in contract – Jimmy Bauther Sep 1 '15 at 20:08
  • 3
    Hourly or by the job is just billing. It doesn't change the responsibility to deliver a complete package as @shoover lists out. – cdkMoose Sep 1 '15 at 20:14
  • 7
    More importantly, nobody should be accepting pay for programming without proper version control. – Jon Story Sep 1 '15 at 20:30
  • 4
    If he said not to then, frankly, this is his mess and he should at the very least pay you to fix it. Lesson for next time: use it anyway – Jon Story Sep 1 '15 at 21:26
  • 3
    With a per-hour contract I wouldn't come back to fix bugs. However not keeping your source in source control was a major oversight. Even if source control is not provided you should run it on your desktop. Considering you did the work then "lost" it I would be inclined to come back for a day or two to sort things out. And use source control even if you have to do it yourself – teambob Sep 2 '15 at 1:22
6

Personally I would say the manager didn't manage enough, not that he micromanages. There is no excuse for not having the version you delivered on your last day in some kind of source control. He should have come down on you hard early on if you were not properly using source control. He also should have had the code delivered earlier so he could QA it before you left.

Now you have an expensive lesson on why professionals always use source control and why they deliver what they promised. So now yes, you need to go in and fix the mess that you (not the manager, you) created when you did on the fly changes on code that was not in source control.

You ask the manager to make sure that the proper security is in place for you to return.

Then you put up with however he feels he needs to work with you. If he wants to hang over you, then tough luck. Put up with it. Be an adult. You can ask him politely to give you a couple of hours before checking back, but if he doesn't then well we have all had to put up with things that were not our preferences. Right now you want to just get this done so you can move on with your life. So just do it. Do not set limits like you will give him 8 more hours and leave even if it is still broken. You fix your mess. Start by making a source control version of the current code and check it in frequently while you are making these changes. However, you only need to fix what is currently broken. You do not need to accept and implement new requirements.

  • 6
    Hm. Yes, and no. Any competent manager should have known that a last-day change was asking for trouble; final days should be used for backing up and documenting status. I agree that the OP should have pulled a backup before starting that change in any case, locally if not in a sccs, but I do think this is shared responsibility. – keshlam Sep 1 '15 at 22:08
  • 2
    This answer just doesn't make sense to me. If your contract is over, going back in to do more work just doesn't make sense for anyone. The right thing is to negotiate a new contract even if just for a day or two. – Brandin Sep 2 '15 at 6:32

Not the answer you're looking for? Browse other questions tagged or ask your own question.