Star Wars meme: Chewbacca looking like a boss

Code of Conduct for Online Freelancers, Part 2: How to End Toxic Client Relationships Like a Boss

Part 1 explained how you can communicate effectively with your client starting from the first lines of text you send via a freelance site. Now, let’s examine those inevitable times when things go south and you are in danger of having a negative business impact from the engagement. When you do business online long enough, it is inevitable to encounter a client who is simply not happy about what you do, no matter how you do it.

So, the advice here is not for the case that might happen, it is for the case that will happen. Just see for example how many discussion threads there are about a “dispute” on Upwork Community Forum.

Even if it feels tempting to tell your client to simply **** ***, you should know how to end toxic client relationships with honor and dignity.

Be like Chewbacca and learn how to end a toxic business relationship like a boss

Learn how to end a toxic business relationship like a boss. You’ll thank yourself later.

Unfortunately, I would never go out and reveal the details of the actual case to protect my client. Even bad clients are “holy” in my mind and deserve professional treatment even if they are not capable of doing it from their side. I’ll omit all details and focus on the process and communications only. Also, the business outcome.

The case

The project came to me as an invitation through a freelance site. It turned out to be very educational in the sense that I learned to deal with the worst specifications I have ever seen regarding what the final delivery was. And many other horrible aspects of working remotely for someone who fosters a toxic culture at work.

First, the client looked like a really interesting company doing similar things to what I was doing with enough differences in terms of the specialization to be a good mutually benefiting match.

I was very attracted to the big-name customer of my client that I could use for marketing and portfolio. It was a fixed-price project just about in the bracket of being acceptable. The client even mentioned having too many customers being the reason for seeking the help of freelancers, and my offering was perfectly aligned with what they would need in the long run. So, I didn’t mind having the minimum budget to start with this very cool guy!

The expectation

The whole scope of my project was estimated to be about one week of my time. Easily I could nail it. It was something to be built for a physical space that my client’s customer owns and to be done with technology in which usability and technical quality are strongly affected by the environment (this is the case of signal-processing-based technologies in general).

The hardware needs to be set up in the exact right way, and the software needs to be built in a way that works well together with the hardware setup and the environment. I had done this type of work a dozen times earlier, so I had no doubts about leading my client through the process as I always managed to do it.

At first, the client looked competent and super nice, and the first batch of specification documents was not too bad. I got the idea. I built the first version to demonstrate most of the functionality: what the system does and how it looks according to the specified parameters.

The first clash

The first issue was “oh hey I forgot the sounds,” which was not just a matter of adding a couple of soundtracks to the software but having a complicated synchronization procedure in place. The soundtracks would need to be started separately in a way that they become one, in the end, depending on what the users do. Oh, and some sound effects were needed also! 🙂 So, it was not just “adding some sounds” but developing an entire interactive soundscape. OK then…

When asked about going through the spec to clarify other potentially missing things over a phone call, the reply simply was that he “is too busy” for setting up a call. The impression given deliberately was that as he is running his company (I guess just a couple of people in real), he’s got his hands full of handling bigger things, haha! Everyone knows, of course, that in a period of 15 minutes, you can surely talk through more things in a voice call than if using a text chat, so I guess the reason for sticking with the text-only communication was part of the company’s culture or personal preference.

I took an extra day making the soundscape work perfectly, which took quite a bit of testing and fine-tuning to get it right. Anyway, all done.

But my delivery was lacking something that was not mentioned earlier, so instead of a thank-you, I got a little bit of screaming which resulted in me making a quick fix in a couple of extra hours.

Now, I started worrying about how to deal with this client…

The second clash

The second issue was about the graphics quality. His polite feedback was that “It looks horrible” and “it’s absolutely useless!” The further away the user is from the hardware, the worse the graphics look. It is like a video camera with a digital zoom that produces image quality that is always limited by the hardware’s original resolution. My question was “what is the distance?” since that was the most important factor defining the outcome here. The further away, the smaller the image. Everyone gets this, right?

Instead of an exact number, the reply was a range so wide that it didn’t help at all in replicating the conditions in my home office. The estimate (please note: not the measurement!) was given which lead me to the obvious conclusion that the image quality from the hardware is so bad that the improvements on the graphics on the software level don’t provide any better results. But the client had to get what he was asking, with a couple of not-so-polite words about my competence.

So, I had to quickly learn how to fix it. There was a specific algorithm available, but I had to translate it to the programming language we used here and get it running with the hardware we had! Nothing like this was ever discussed before the issue arose. I mean, it wasn’t enough for the client not to be able to specify the software to be developed but also the competence needed!

Anyway, I did it! I spent an extra two (long) days finding the algorithm, translating it to the programming language we used, and making additional parallel processing tricks to make it run in real-time. Now, the client was happy after testing. From which distance and under what conditions, I still didn’t know.

The judgment day

The judgment day, the day of the installation, came eventually. We were never short on the calendar time as per the original plan, but by now the workload was doubled and we were lucky to meet the deadline set with the client’s customer weeks earlier.

The client strongly required that I’d be online the whole day for support for the time he was visiting his customer site to do the installation. Nothing like this was agreed upon at the beginning of the project, of course. But since he paid some money (peanuts now with the doubled scope), he owned me, I guessed.

At first, it looked like the installation was going OK. But, knowing the client’s style pretty well by now, I was expecting some screaming and yelling and was prepared for stretching the day.

The screaming came soon enough. 🙂

The issue was about some angle regarding the hardware setup which affected the distance to the user which in turn affected the graphics quality. After some screaming (CAPITAL LETTERS IN TEXT CHAT with plenty of exclamation marks of course!!!!!!!!!!) and my calm attempts of finding out what needs to be done to fix the issue, I asked the angle to be measured together with the distance that had been the biggest missing factor.

Instead of getting a number (again!), this time I got a photo of the hardware from too far away and from a camera angle that didn’t reveal all the facts! “It’s like this.” And instead of knowing the distance in meters, I only got the number of steps taken by him. Very professional. 😀

Now I started thinking that as the client appeared to be a competent engineer, he must have skipped all the courses in school that teach about the importance of exact measurements. On top of being a complete ******* of a guy in terms of communications and work style, he seemed to be a failed engineer as well. There wasn’t any end to the disasters with this guy… 🙁

But now I got a photo at least and an approximate distance. I looked at the bright side. I could use the info to solve the problem at least partially. I found an online tool for measuring the angle from the photo, adjusted the software with an hour of ferocious clicking, did a quick test, and sent him the update.

And guess what? The entire parallel-processing-based improvement I spent two days making was not required at all! Simply, I guessed, because the distance the client used in his own tests was not at all the same as what the client’s customer had.

Then I only realized: the client had never been to the customer’s site before!

Now, this didn’t make any sense at all, because this meant, that my client here attempted to develop a physical installation that has a dependency on the environment which must be known at the start of the project. It is a built-in property of the technology in question! Without knowing the environment, everything done in any project would be based on assumptions and guesses and who knows what issues installation on the real site would produce. To say it nicely, the client had no idea how to do his job in the first place. Not speaking of making it a profitable business.

Anyway, I sent the update. No thank you came. No other message came either. I stayed online as long as I could, then went to sleep.

The next day, I had a message waiting in the chatlog simply saying that “we had to leave early” which would have been nice to know yesterday! But since he paid, he owned me, so no need to notify or apologize for not notifying me. OMG, this guy! 😀 And no need to thank for solving yet another vague problem, again!

The aftermath

So, by the end of the project, I had:

  • Accommodated every wish of the client, twice on a topic that took at least a full workday to finish (the unspecified soundscape and the graphics quality problem).
  • Doubled the hours.
  • Asked for measurements about the environment, yet never got it, so I could never replicate the setup and test everything properly.
  • Sucked up all the unprofessional messaging, yet always replied professionally from my side.
  • Booked a full day of calendar time for remote support (but of course I could do other minor tasks while waiting).

It was only at the end of the project that I realized this was nothing new to the client. This was how he works! He seems to take projects that are poorly funded (either desperation or greed, it didn’t matter much here), come up with very loose assignments for externals (perhaps not caring about anyone else than himself anyway), and treat people like ****. No kind word came once things were done or during it. The only good feeling about the project was during the first couple of days.

I had spent a lot more effort than expected, yet never asked for adding the price. From the beginning, I got the impression that asking for more money was not feasible in terms of the budget, and after working with the person (and by “working” I mean I did everything humanely possible whereas his role was limited to screaming) it became clear giving rewards for additional efforts was not his style as even thank-yous didn’t come through. No point in asking for a bonus. 🙂

At some weak moment right after finishing the project, I was really worried about the review I’d get on the freelance site. It could be bad. I was considering sending a message saying that I’d drop the price to something really low and “buying” a good review. I remember there were weak moments during the project also when I was thinking of just quitting and ending this toxic business relationship.

Then I thought that I did double my hours and accommodate every wish to make sure I didn’t get a bad review. And the result was perfect after all, so I just remained silent and waited for his review.

It was agony, but it was worth it, I got a good one! Not writing a review for him was my silent protest, that’s all.

The extra week spent on this project was the most frustrating one in my freelancer career. (It still is… and it’s been six full years of freelancing by the time of writing this.) Yet, I swallowed my frustration and anger to make my client win. That felt like the right thing to do. My client is “holy” to me, no matter what happens.

Weeks later, I didn’t feel too bad about the whole thing as I did handle things professionally, finished everything ever asked, delivered the whole thing perfectly, and earned a good review. I guess I just had never encountered a person having that kind of work and communication style. Each of us has his/her own way, I guess.

Happy ending despite everything. All I lost was one week of my life in real.

How to break up like a boss

Freelance sites are pretty brutal. When things get mixed up, for any reason, it is the freelancer who suffers most. Clients can always “eject” and sign-up again which is particularly easy for companies of any size. Any person in the company could have an account. Hell, they might even get their money back! The client’s money weights always more than the freelancer’s time in these things (although I think differently nowadays).

Freelancers, however, must secure their reviews. Always.

Your track record of reviews on past projects either makes or breaks your online freelance career. It is practical to think that a good track record is actually worth money since it is the only thing that brings new projects.

Nobody hires a guy with two 1-star reviews in a row!

Explaining why an angry client gave 1 star is irrelevant. It won’t be read… unless your profile is in the $100K class and 1-2 bad reviews won’t shake the impression on the previous achievements.

We can define only one rule of thumb: Give in. Make your client win, no matter what.

The best case is that it only takes more of your hours. This will be a problem, obviously, if you are fully loaded with other projects.

The second best case is that you give a discount to accommodate the disappointment and simply stop thinking about why it happened. If there is no way out otherwise.

The worst case is that you just drop things and let the client be. Give everything done for free if the project is in its early stage so that the client has a positive feeling about you. If the project is further in the process, all you can really do is to blame yourself for not seeing the warning signs earlier and try to settle for peanuts payoff. Blaming the client, especially if done aloud, rarely brings you a good conclusion.

I’ve been through several cases where things end up bad in terms of the business, which is why every new opportunity I encounter is assessed first from the perspective of learning opportunities. Most often is a new experimental technology I’d anyway like to know which means I only use the project for justifying my own time spent on studying the tech bits. That way, even if things go bad, I gain something valuable. So, I never lose!

All bad cases I’ve been through have involved a new organization of some type. Unclear work processes, weak contracting skills, unclear goals, and undefined expectations. Also, usually, there is some clear limitation in the contract that is bent somehow by the client to stretch the budget.

Here is a short summary of other break-ups.

A) There was a case of an experimental project with an unclear goal in terms of how good the solution could get. I set a rough cap for the time and schedule and offered a fixed price deal (since I knew the budget limitations of the client). After the first half, the project seemed to see no end, as always there was another “small thing” to add or adjust.

After weeks of finishing and not hearing any more requests, the client politely stated that he’d need a few more months(!) to make the final payment, which was not a big sum. I guess some people go and commit to buying things before actually having the money. Borrowing money from freelancers like this is just embarrassing, so I politely declined with a little trick in my wording in the reply. Things ended well, eventually.

B) There was a case of starting something really cool with a fresh new company which turned out not either honoring or understanding what was agreed on paper regarding the responsibilities and payments. The day we had the contract ready, both the payment and responsibilities were shifted with some on-sided excuse from the client without any consideration to the freelancer (=me).

The whole deal collapsed in a few days as there seemed not to be any payment actually coming. I dropped the case, handed over everything done so far, and jumped straight to the next project so I could forget the whole incident. Some days lost, that’s all.

C) There was also a case of developing something quite complicated and uncertain for a new company founded by a reputed healthcare professional. After quite a bit of effort put in coming up with all the solutions and providing even more than required, I stopped seeing replies to my messages after sending the latest results. A classic vanishing act by a scammer, I thought first. Then, after almost two months of radio silence, I got a request for doing even more work for the guy!

My polite resignation was shot away the next day with a polite thank-you for reminding me of still being part of the team somehow. 😉 The organization collapsed and couldn’t produce a thing in the end because of unclear responsibilities, contract breaches, and all kinds of hassle by one of the key people.

“And then I learned how to end toxic client relationships…”

All these have been valuable experiences that helped me to make reasonable deals with all sorts of clients and keep expectations realistic. Still, sometimes, there isn’t a way forward, so there has to be an honorable way out.

The best way to quit is to make your client win anyway so that no further claims come at your back later.

Keep calm and keep going. 😉