I took a client on in February for a mobile app. Another developer had built some infrastructure and I told them that I might try to save some of the infrastructure.

We made an agreement for certain features, including a style redesign.

Since that time, we had several meetings, the style design grew larger than I initially anticipated (I expected around the same complexity as the last design, instead it was more complicated). They've also been consistently adding new style requirements, like animations, new pages, new layouts, etc.

I also decided to integrate with a large part of the devops as it was enterprise level. I could have delivered a much smaller devops setup (I'm not a devops engineer), but I chose to try to preserve it as it would serve my clients long-term goals better. I don't feel I've communicated that well, as now the project is about two months late (due to the aforementioned stylistic parts, as well as this devops stuff).

My client is incensed. The app is late, and extremely so. But their employees have been asking for changes, and this devops stuff has just been a gigantic mountain of work for me. I finally finished it, but I had to learn Docker, Kubernetes, and an identity management system from scratch.

I realize that in the future I need to get an explicit contract with the exact features my client wants (we never discussed the exact server architecture or anything like that, and I'm not sure that the client understands enough to know whether or not this is valuable to him).

All I know is I am exhausted, I have worked extremely long hours over the past couple months and they're still angry. I haven't even billed since early April as I wanted to ship before billing.

I feel this is a combination of my and my client's fault (mostly mine), but how do I deal with them? Do I just say sorry and keep working? Try to explain what's happening and why things have taken so long? I'm working constantly on this and have been for months, and my client is extremely angry for non-delivery right now.

  • 1
    @DarkCygnus a few changes, and up until now, the devops - I had to migrate an entire server cluster to a new domain with a bunch of new information. I had to learn a ton of devops technologies I am not familiar with. I finished that yesterday, so the rest of the delivery should be fine, but it's super late already, and I am extremely exhausted
    – Joe Smentz
    Jul 23, 2019 at 16:47
  • 1
    Not to mention that I don't think they even understand the devops part, so who knows if they'll even pay me for this work
    – Joe Smentz
    Jul 23, 2019 at 16:48
  • 1
    @JoeSmentz well they have to pay, you already did it and are about to deliver it. Be careful not to be scammed tho...
    – DarkCygnus
    Jul 23, 2019 at 16:49
  • 2
    The Freelancing SE might provide a more focused audience for this question.
    – brhans
    Jul 23, 2019 at 16:49
  • 1
    Yeah, I did a poor job of managing what they needed and also putting a stop to feature creep. I also did a poor job of communicating difficult technical things to my client. I have learned a lot from this failure
    – Joe Smentz
    Jul 23, 2019 at 17:58

3 Answers 3


I feel this is a combination of my and my client's fault (mostly mine), but how do I deal with them? Do I just say sorry and keep working? Try to explain what's happening and why things have taken so long?

You say you already finished the app, so I suggest you deliver it and put an end to this stressful situation you were in, and move on.

Make sure you get paid the moment (if not before) you hand over the app (in future gigs, I suggest you ask for an initial payment at the beginning and then the rest at the end).

It is good that you realize that you have to be more explicit on the requirements, changes, etc., during development and designing. What you should do now is learn from this experience (which seems you already did) so you can do other future freelance projects more smoothly and without stress.

  • 3
    Oh, I'm going to be iron clad with my requirements going forward. "This is what you are paying for and no more"
    – Joe Smentz
    Jul 23, 2019 at 16:50
  • 2
    What is also useful is to have periodic meetings with the stakeholders, where you expose the progress of the app. And yes, you have to be very firm on the allowed number of changes, the formal way of asking for those changes, etc., so this situation doesn't happen again
    – DarkCygnus
    Jul 23, 2019 at 16:51
  • Yeah, it has devolved into them constantly asking for progress, while adding new features, while I try to work on the devops on the side which has been the huge mountain I’ve been dealing with. I should have presented them with saving the server architecture they had or making a simpler architecture, I should have made them wait for extra changes - they literally have asked for a number of material updates and acting as if they’re obvious, despite the fact that their initial design did not include them.
    – Joe Smentz
    Jul 23, 2019 at 16:55
  • It’s mostly stressful dealing with the constant calls and emails when I’m literally working 12-14 hours a day and exhausting myself.
    – Joe Smentz
    Jul 23, 2019 at 16:55
  • @JoeSmentz I am really sorry you experienced this... but, hey! you already finished :) I know you may feel burnout right now, so I also suggest you consider taking some days off after delivering this to cool down... and yes, all those things you learned you should do next time
    – DarkCygnus
    Jul 23, 2019 at 16:58

An additional, important piece here is to communicate clearly when new requirements are added (because there will always be gray areas in contracts). You can say something like:

This requirement was not included in my original time estimate, and I will need to evaluate the effort required to fulfill it. Depending on the size, it may have to be deferred until a new agreement is reached or the original agreement is ammended to reflect a new timeframe and cost of development.

That's not the best wording, but my point is you need to let the client know that modifying the original request can both take longer and cost them more money. In my experience, the more upfront you are about this, the more likely both parties are to come to a happy agreement.


Tell them how much is done and how much is remaining. Give a realistic estimate from today.

If they get angry, simply say that due to the changing requirements the scope got bigger and thus you haven't been able to deliver. If there's something else that's causing this delay, simply say that you're sorry and give a date.

It's also reasonable to be able to tell them which part of the delay is because of the altered scope of the work or unexpected problems that occurred. What does this mean for their cost?

Stop accepting new requirements. Only accept new requirements when the client understands what it will mean in terms of delay and added cost, assuming you have time for it to begin with.

Once the project is over you should research how to better anticipate the scope of such project, set an acceptable buffer for new requirements and so on (tell client what new requirements mean in terms of delay).

You should definitely get feedback from the already pointed out Freelance SE if you're not sure how to proceed, and there are numerous videos and articles on the matter that should help you navigate from here.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .