Nine years of freelance and contract engineering will teach you things about human nature that no computer science degree covers. I’ve built for companies from Miami to Alabama, all remote, all from Nigeria, and I’ve collected a full set of freelancer scar tissue to show for it.
An invoice that took four months and a very uncomfortable email to collect. A client who ghosted mid-project after I’d already shipped the hard parts. A contract with scope-creep so aggressive I eventually had to relearn how to say “no” without apologizing for it first.
The temptation I had to actually fight
It would have been easy to get cynical — to start every new client relationship assuming bad faith, protecting myself with contracts so airtight they communicated distrust before a single line of code was written. For a while, honestly, I did exactly that. It made me a worse collaborator and, I think, a worse engineer, because guarded work is rarely generous work.
What actually pulled me out of it
Grace isn’t a business strategy, and I’m not going to pretend it is. But choosing to extend it anyway — giving the next client the benefit of the doubt, staying honest even when a shortcut would’ve been easier and unnoticed, doing quality work for people who hadn’t yet earned my full effort — changed how I show up more than any negotiation tactic did. Not because it always worked out. Some of those clients still burned me. But I stopped becoming someone I didn’t want to be in the process.
Nine years later
I’ve got two companies now, a much better sense of what a fair contract looks like, and a considerably lower tolerance for scope creep. But the thing I actually kept from those nine years isn’t the technical skill — that was always going to come with reps. It’s the conviction that how you treat people when there’s nothing in it for you is the actual test, and I’d rather pass that one than any coding interview.