A project manager (client owner) hired me to work on his project w/o a signed contract. I gave him a quote about certains tasks.

I started working on the project and it turns out the environment (vagrant w/ ansible) is very complex to setup on my computer. The whole website is very badly optimized as well and I didn't expect to spend so much time setting it up. I don't know how to handle that from my side. I recently asked him to pay 30% of my time and he don't want to pay for that. It's a well-known vagrant, but it's a mix of learn and debug.

I'm a senior developer and it's not my first environment. The issue was actually a problem with High Sierra w/ APFS. I wasted more than 30h on the problem that I can't charge and he's not sure he want to hire me anymore because of the 2-3 weeks I delayed his project.

What would you do in a similar situation?

  • Thx for your comment. I'm actually freelancing successfully for the past 4 years. It's more a general question about web environment in a rare occasion. I never had this kind of issue in the past years.
    – nj4567
    Commented Oct 29, 2017 at 12:39

4 Answers 4


First, you should try to prevent getting in such a situation in the first place.

  • Never work without a written contract!
  • Never give a fixed quote for a system or environment you are not familiar with.

(Sometimes you have to invest 1-2 days to investigate the clients setup and show you are the right one for the job. But there is a point where you got to know under which condition you will be doing your work)

Then, setup cost is work too, so I´ll bill for it!

If I want to get to know a specific framework, and can use it for other clients also, I may decide do give a 50% discount - but usually not. I usually try to give the client a working development environment in a VM - if I´m not working on his machines anyways. I´m a one-man-show so I have to make sure the client is not entirely dependent on me. This is part of my service and it has to be payed for.

Think what would an employee do? Two weeks of unpaid work for installing all the tools to his new work machine and get to know the framework and project? I think not!

  • 1
    Very interesting Daniel, thank you for your reply. I'm just curious what would you do if the project is under nda and the client don't want to give you the credentials unless he accept your quote. Would you put a blank / flexible amount of hour in the setup/environment cell?
    – nj4567
    Commented Oct 30, 2017 at 13:12
  • 1
    No problem to sign a NDA before even starting to talk. Other than that, before knowing exactly what to do, I can only ever give a hourly quote. Even then, I prefer not to give fixed prices and if I do, I´ll add from +20% to +100% on top of my estimated hours for unforeseen additional work - depending on how complex the work is.
    – Daniel
    Commented Oct 30, 2017 at 15:35
  • Interesting, thx
    – nj4567
    Commented Oct 31, 2017 at 4:48

In my experience, setting realistic expectations is just as important when establishing a relationship with a client as anything. Any additional work tends to come as a surprise to the client. I find it helpful when providing estimates to also include some form of a caveat to account for unexpected work/setup/etc. This unexpected work can be billed hourly or the quote can include x hours/money to account for unexpected work. It is important that this is communicated to the client and done honestly. If you pad other tasks to account for the extra time spent, you risk losing the client's trust and you are reinforcing unrealistic expectations for how long tasks really take to complete.

That being said, if there is no agreement, contract, or wording in the quote that would account for unexpected tasks, then you don't have much leverage in this situation other than trying to make the client understand.

In this case, I would communicate how much work was required to set up the environment and why it took so long. I would bill the client for the work since it is work. If they refuse to pay, it might be a foreshadowing of unpaid invoices and disrespect for your time to come. If the work must go unpaid and you intend to keep the client, make sure you come to an agreement on how such cases should be compensated going forward.


I think it's a bad sign trying to charge the client for unanticipated expenses prior to even having a working deal. But I applaud you for being honest about having up-front additional investments, and I think this is the angle you should focus on...

My advice would be, be honest with the client about this and explain to him that other developers might jump right into the project and pretend the work is easier than it really is at first, and once they've got you committed, they'll pad the time into later work and project creep, but you'd rather be honest with him up front and hope that he respects this. Contract work of the highest quality requires a significant level of trust. Let him know you want to immediately begin to establish this trust by being honest -- there was significant setup involved, and this is the way your relationship will always be.

Although this is also undoubtedly a learning experience. Don't underestimate the amount of setup time in future projects.

If the client still balks at your honesty. This could be a blessing in disguise, that you would have been further taken advantage of.


Simple, per hour. Agree to an hourly rate with him and log how much time you spend on ANYTHING for the client.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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