I quit my full-time job as a software engineer.
It turns out quitting is the easiest part of a freelancer's journey. I wasn't sure what to do next. I ended up on a 2-month backpacking trip around Europe — most likely influenced by Alex MacCaw's How to Travel Around The World For a Year.
After the trip, a former co-worker referred me to an interesting contract. I ended up working in a research lab for 4 months. Afterwards, I started seeking out contract work. There were no epiphanies. I wandered into becoming a freelancer.
The tactics I used were:
Reaching out to former colleagues and friends was the best way to get clients. The next time you're out for a coffee or lunch with someone, mention you're currently freelancing and seeking a contract. Many freelancers even start out by contracting with former employers.
Have a LinkedIn account? I'm sure you're getting recruiter messages. I started replying, asking if they knew any companies requiring Ruby/front-end contract work.
My least favorite approach is using job boards. I've used Craigslist Gigs, Hacker News' Seeking Freelancers, Ruby-only sites, and a few more. The response rate always knocks down my confidence a peg or two.
I started out by asking for $50/hour.
As I felt more comfortable with my workload, I started charging a bit more for each new client and my rate slowly increased.
I also switched to a daily rate — the best decision I've made this year.
Switching to a daily rate was a win/win. Clients get a freelancer who's focused on their project. The freelancer implicitly only gets batched work.
The switch to a daily rate came from various Hacker News comments left by patio11 and tptacek. Patrick McKenzie talks more about not charging hourly here: Growing One's Consulting Business.
I'm hoping to switch to a weekly rate in the future.
Full-time or part-time? Focus on one project or juggle multiple projects?
My first contract was full-time (40 hours/week) and I only focused on that single project. It was no different than having a full-time job.
I also tried juggling multiple projects. It was painful. Finding contracts was a job on its own. I ended up billing 20 hours/week but felt like I was working 40+ hours/week.
Focusing on one full-time client is easier but riskier. What if you lose that client?
These days, I prefer focusing on one client. This has led to plenty of downtime (when a project ends and I don't have another contract lined up). If you go this route, it's important to save money and to diversify your portfolio — more on that later.
I'm still nowhere near my full-time salary. The downtime between contracts is de-motivating. Not to mention the stigma associated with freelancing — "when are you going to get a job?". Oh, I'm tempted to start interviewing at least once a week.
I stay motivated two ways: listening to podcasts and having a bi-weekly meeting with a friend.
There are quite a few podcasts about freelancing and starting products. It helps knowing there are other (more successful) developers doing the same thing:
You may be the sole owner of your business, but it doesn't mean you should go at it alone. I've started having bi-weekly meetings with a friend. He holds me accountable to my long-term goals. It's also a time when I get to discuss about problems and recent wins.
A friend asked me if I plan on growing this business into a consultancy with employees. I have zero intention on doing so.
I'd rather diversify into products. These developers started out with consulting and transitioned into products:
In particular, I like Rob Walling's stair step approach mentioned in: Moving from Consulting to Products with Brennan Dunn. The stair step approach means you start with a small product and slowly move up. With each product launch, you'll have more motivation and knowledge.
Freelancing is my first step. What's yours?
Hugh Bien — programmer and tinkerer. Was a freelance developer, startup engineer, and computer science student. Now working on several small apps/sites.