7

I made an offer to a long-time client to build a system for them that would increase their profits drastically. They agree at that point. The problem is if the system completely broke for a few days, they would lose a lot of clients. They have confidence I can develop/maintain it to prevent this. I feel like our relationship is such that, they know I wouldn't just disappear like some consultants.

The problem is, they are worried about if something were to happen to me, what then? It would be a matter of time before an update broke something they couldn't fix. I would provide all the source code and it would not be hard for another developer to replace me (NodeJS codebase).

They couldn't learn it in a few days enough to be useful most likely, but the odds of me dying and the system failing at the same time are so low. I'm not old or otherwise at extra risk of death. I feel like this is such an odd concern they are using it as an excuse? Whats a professional way to approach this? I really want to build the system because it actually deeply interests me.

  • 1
    when you buy laptop, how do you manage chances that it can get stolen? – aaaaaa Mar 2 at 23:44
  • 12
    It's a valid concern. As a developer you've probably heard the term 'bus factor'. If not, look it up. – jcm Mar 2 at 23:47
  • 1
    Such an existential question. Welcome to the Workplace! – mcknz Mar 2 at 23:56
  • 6
    See bus factor. It is a normal, legitimate concern. You need to show them a solid plan for what would happen if you suddenly became unavailable for any reason. – Patricia Shanahan Mar 3 at 0:20
  • 3
    Possible duplicate of How can I prepare for getting hit by a bus? – gnat Mar 3 at 7:17
14

The problem is if the system completely broke for a few days, they would lose a lot of clients. They have confidence I can develop/maintain it to prevent this

You are entering territory covered by SLA: Service Level Agreement.

It will include things like: how many days it take you to patch your system, how often you expect downtime to happen (uptime %), what is you guarantees of data loss, and such. It has to be part of the contract for the system.

It is OK to have SLA that says: if bad things happen, we don't care. But it should be communicated in advance, formalized, and understood. People will rely on the thing you designed, so you should consider possible issues.

If your strategy is that you

would provide all the source code and it would not be hard for another developer to replace me

Then you have to actually demonstrate this to the client. Unless they are proficient with your system and framework (NodeJS) they can't judge your claim. Just like backups don't exist until they are tested, test your ability to make a system that can be taken care of when you are gone.

Propose to your client to have a designated person who would be in charge of system when you are unavailable (it can be hired consultant or someone within the company). Try to teach them how to use it and manage. When it's done, your documentation will become much better, and you will learn how long it takes to take over.

PS: You dieing is only one possible issue. There are many: you getting in prison for crime you haven't committed; you getting in fight with the boss and stopping support of the system; boss' son falling in love with you and running away, hence they don't want to see your face again; you getting super depressed because JavaScript is crazy, and wanting to switch to Go forever; you getting stranded in airport in Japan due to immigration and unable to patch for HeartBleed v666.

  • 1
    SLAs typically also contain remedies/penalties for loss of business -- the company will also want to know that they will be compensated for any breach of the agreement. Best that this is done in advance. – mcknz Mar 2 at 23:54
  • 1
    Thanks for the detail! This makes a lot of sense to me now – FrostyFire Mar 3 at 0:59

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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