Lessons From Ten Years of Freelancing

Leo Park6 min read

I have freelanced as a developer for ten years. Here is what I wish someone told me in year one. Back then I thought freelancing was mostly about being good at code. I spent my evenings learning new frameworks, polishing my portfolio and reading about performance tricks, and I assumed clients would hire me because my work was clean and fast. Some did. But the projects that went wrong in those early years almost never went wrong because of the code.

Most of it is not about code. It is about communication, expectations, contracts, money and the courage to say no. These are the lessons that took me the longest to learn, and the ones that have made the biggest difference to my work and my sanity.

Write it down

Every scope, every change, every deadline, in writing. If I could only pass on one lesson, it would be this. Early in my career I took on a website rebuild for a small furniture maker based on a friendly phone call and a handshake. We both left that call with completely different ideas of what “a simple online store” meant. Three months later we were both frustrated, and neither of us was exactly wrong.

Now nothing starts without a written scope. It does not need to be long or full of legal language. It needs to be clear. Mine usually covers:

  • What is included, listed feature by feature.
  • What is not included, which is just as important and often forgotten.
  • The timeline, with milestones and what I need from the client at each one.
  • Payment terms, including deposit, schedule and late fees.
  • How changes work, and how they affect cost and timeline.

When a change comes up mid-project, and it always does, I write a short change note: what is changing, what it costs and how it affects the deadline. The client approves it by email. It takes five minutes and has saved me from countless misunderstandings.

For anything involving larger contracts, intellectual property or liability, I strongly suggest having a lawyer review your standard agreement once. It is a small cost that protects you for years.

Two people shaking hands across a desk
A handshake starts a project. A written scope keeps it healthy.

Scope creep is a conversation

Scope creep has a bad reputation, but most of it comes from good intentions. Clients see the project taking shape and get excited. They think of new ideas. They assume a small tweak is small. The problem is not that they ask. The problem is when nobody talks about what each request costs.

I used to quietly absorb extra requests to keep clients happy. A new page here, an extra form there, one more round of revisions. Each one felt minor. Together they added weeks of unpaid work and left me resentful, which is bad for everyone. Now I treat every new request as a normal, friendly conversation: “That is a great idea. Here is what it would take. Do you want to add it now or after launch?”

Most clients appreciate that honesty. Many choose “after launch,” which often turns into a second paid project.

The best code I wrote was the feature I talked the client out of.

Leo

Say no kindly

A clear “not right now” keeps projects healthy. Saying no was the hardest skill for me to learn, because early on every no felt like money walking out the door. But a project with too many features, an impossible deadline or a budget that does not match its scope is not a good opportunity. It is a future problem.

Here are a few ways I say no without closing the door:

  1. “Not for launch, but let us plan it for phase two.” Keeps the idea alive without risking the deadline.
  2. “I can do that, but it will push the launch by two weeks.” Lets the client make an informed choice.
  3. “There is a simpler way to get the same result.” Often the best outcome for everyone.
  4. “This is outside what I do well. Here is someone who would be great.” Referrals build goodwill on both sides.
  5. “My schedule is full until next quarter.” Honest, and far better than overcommitting.

The most valuable version of no is the one where I talk a client out of something they do not need. A custom feature that a well-tested plugin or a simple process change could handle. A complicated integration that serves three users a month. Saving clients from code they would have to maintain forever is part of the job.

A tidy home office with a desk and laptop
Ten years of client work, mostly from this desk.

Money is a skill too

Nobody teaches developers how to run a business, and I learned most of it by making mistakes. A few habits have made freelancing far more stable for me. I am not a financial advisor, so please talk to an accountant or tax professional about your own situation, but these are the basics that worked for me:

  • Take a deposit before starting any project. It confirms commitment on both sides.
  • Invoice on milestones, not just at the end.
  • Set money aside for taxes from every payment, in a separate account.
  • Keep a cushion for slow months, because they will come.
  • Raise your rates regularly, with plenty of notice to existing clients.

I also stopped pricing by the hour for most projects. Fixed project prices, based on a clear scope, reward me for working efficiently and give clients a number they can plan around.

Key takeaway: the business side of freelancing deserves the same care as the code. Clear agreements and steady money habits make everything else easier.

Take care of the person doing the work

The last lesson is the one I ignored the longest. Freelancing can quietly consume your whole life if you let it. No boss tells you to stop, and there is always one more bug, one more email, one more client in a different time zone. In my third year I burned out badly enough that I took two months off and seriously considered leaving the field.

Now I keep office hours, even though I work from home. I do not answer client messages after 6 p.m. or on weekends unless something is truly broken. I take real vacations and tell clients well in advance. To my surprise, nobody has left over it. Clients respect boundaries far more than I expected, especially when the work is reliable.

Finding good clients gets easier with time, too. In my first few years I took almost anything that came along. Now most of my work comes from referrals and returning clients, and the best predictor of a smooth project is a client who answers emails, respects the scope and pays on time. Doing honest, reliable work for those people is the best marketing I have ever found.

Ten more years

Looking back, the code I wrote in year one is long gone, rewritten or retired. What lasted were the habits: writing things down, talking honestly about scope, saying no kindly and protecting my time. Those are the skills that turned freelancing from a stressful hustle into a career I genuinely enjoy.

If you are in your first year, be patient with yourself. Learn the frameworks, absolutely. But spend just as much time learning to write a clear proposal and have a difficult conversation. Your future self, and your future clients, will thank you.

Leo Park
Written by

Leo Park

Author

Start the conversation

No comments yet. Your thoughts could be the first.

Leave a reply

Your email address will not be published.

✦Motion Effects is onMenu, headings and images animate on the live page (not in the editor).