I’ve been freelancing for about five years now. Not everything went according to plan. Most things didn’t. But I learned a few lessons the hard way so you don’t have to.
Charge more, work less
In year one, I charged $15/hour. I worked 60-hour weeks and barely made rent. In year three, I charged $40/hour and worked 30-hour weeks. The math isn’t complicated. The hard part is believing you’re worth it.
Raise your rates every six months. Some clients will leave. The ones who stay are better clients anyway.
Scope creep will kill you
Every project expands to fill whatever goodwill you offer. “Can you just add one more page?” turns into two weeks of unpaid work.
I now have a rule: anything outside the original spec gets a new quote. I send it before I start the work, not after. Clients respect this more than you’d think.
Good communication beats good code
I’ve lost projects to worse developers who were better at explaining things. Clients don’t care about your tech stack. They care about whether you respond to messages, whether you meet deadlines, and whether you make them feel heard.
I set expectations upfront. I send weekly updates. I over-communicate when there’s bad news. It makes more difference than any technical skill I have.
Specialize or compete on price
For the first two years, I was a “web developer.” That could mean anything. I was competing with everyone. Now I focus on WordPress and custom business sites for small to medium companies. I’m not the cheapest, but I’m the best option for that specific niche.
When you specialize, your marketing practically writes itself.
The tools don’t matter
I spent years obsessing over the perfect tech stack. React vs Vue, Tailwind vs Bootstrap, MySQL vs PostgreSQL. Clients don’t care. They care if the site loads fast and looks good. Pick what works and focus on delivery.
In five years, the sites I built with “ugly” code are still running. The ones where I over-engineered the architecture? Those got rewritten twice.