Member-only story
The most important lesson I’ve learned while freelancing, and nobody’s talking about it.

Since I’ve started freelancing a decade ago, I’ve worked on a wide variety of projects spanning multiple types of industries. Some gigs were easy, while others involved late nights. I’m grateful for the lessons I’ve learned from each but I’ll never forget the gig that taught me the most important lesson:
Always — ALWAYS — get it in writing.
I don’t see this mentioned very often, but it’s essential. Whether you’re pulling clients through a marketplace like Upwork, or finding them organically, what you agree to do for your client must be well understood by all parties. As a freelancer, the onus is on you to ensure it’s written down.
Depending on the client or project, the more detailed you get the better. Why? It leaves much less room for interpretation and ambiguity.
Your client may try to push the scope to (or past) its limit. Once the price is agreed upon and funding is secured, they are officially invested and will attempt to squeeze the most functionality out of you in order to maximize their return. Hence, developers need to protect themselves.
“Is that it?”
I learned this the hard way, although I’m some ways I also consider myself lucky. Early on in my freelancing journey, I took a contract for a slimy real estate agent who essentially wanted to screen-scrape property prices off a website that shall not be named. We agreed to a price: $500. It took a week to write, and I delivered it on a silver platter.
He decides to test it: “Is that it?”
Me: “I’m not sure what you mean”
Him: “This only gives me 10,000 properties, I really want it to pull 1–2 million.”
I scrolled through our messages and didn’t find any mention of this requirement.
So, I politely explained a few big reasons why the sheer volume he was asking for was impractical given the time frame he needed the data retrieved. He said he refused to pay, and then threatened to report me to Upwork. I called him to try and resolve it, but it dissolved into a screaming match.
In the end, I decided to just take the L. It really hurt to not get paid but I needed to be rid…