How to Quit Your Job and Start Freelancing as a Software Developer
September 12, 2019
So, you want to quit your job ASAP and join the magical world of software freelancing, eh?
Not so fast, unfortunately...
It's going to take time to get there - but you can do it! The steps below worked for me, and I've seen them work for others too - but they do take time.
A quick note
This post won't cover the pros and cons of freelancing (there are many of each!), or the nuts and bolts of contracts and negotiating, or how much to charge for your services... but it will get you ready to take the plunge.
I'll be posting more about that in future posts, so to get notified when those go out, you can join the newsletter.
Now - on to the good stuff!
1. Don't do anything rash
If you're in a job that's wearing you down, then I totally get it: you want out!
But here's the thing: if you quit without a plan, then you'll just take the first job that comes your way, because you have to pay the bills, right!?
The problem is that not all clients and freelance gigs are equally good. There is a huge variation in the work you do, the money you can make, and how you are treated from client to client - so you never want to be in a situation where you HAVE to take a gig.
I've seen too many people that get trapped in bad client relationships (myself included!) so I want to save you from that fate.
OK - so what do you have to do?
2. Start saving money
Most people skip this step, but it's a critical one.
You need at least 3 months of expenses saved up in an emergency fund - preferably 6 - before you should think about quiting to start consulting.
There are at least three reasons why you need to save money first:
Overhead and expenses
It actually costs money (more money than you might think) to run your own little company - even if it's just you. You need a new laptop? That's on you. Need to register the business? Gotta pay to do that. It all adds up.
Downtime between clients
No matter how well you plan your freelance gigs and projects, gaps will find a way of sneaking in to your timeline. As a consultant, if you're not working - then you're not being paid - so you have to save up money for those down times.
Clients can take forever to pay
This is the one that many people don't think about. If it take you 30 days to negotiate a contract, then 30 days to do the first part of the work before you bill, and then 30 days for the client to pay (NET 30 is very common) - then that's 90 days that you've just gone before receiving anything!
There are ways to combat that (like requiring payment up front, or switching from NET 30 to NET 15), but still: cash flow will kill your freelancing if you aren't ready for it.
3. Define what you're good at
While you're busy saving money, this is the fun part.
Figure out what you want to do!
If you're already a software engineer, then you already have someone paying you to do work - time to really figure out what that is!
In general, the more specific you can be about what you're good at - the easier you'll find it is to get clients.
Clients like to know what they're getting into, and who they are hiring. What are your skills? What are you able to do for them?
For example, saying something like: "I'm a full stack developer" will mean something to an engineering manager, but may not mean anything to a client looking to get a web app built.
For technical clients
If your potential client is technical (meaning: they are probably a developer themselves), then you can define what you're good at by the technology you use.
For example, I might say that I focus on React, with backends in Ruby on Rails or Node.js
A technical client will then be able to match that to their stack, and know if I might be a good fit.
For non-technical clients
If your client is non-technical, then they often don't care what tech you're using! Instead, they want to hear something like:
"I make business web applications that can scale to 10,000s of simultaneous users"
Technology vs Outcomes
So for a technical client, it's OK to define yourself by the technology you use, but for a business client - define yourself by the outcomes you can produce.
4. Become a visible expert
Once you know what you're going to specialize in, next it's time to really show that you can do that thing.
It doesn't matter how much experience you have - if you can't point to something on the Internet that really shows that you know your stuff - then clients will have a hard time believing you.
There are several ways you can become a visible expert:
Start a blog
One of the more straightforward paths is to just start writing about your chosen topic online. If you don't want to spin up your own blog, then you can write on a site like dev.to (which is great, because it comes with a built-in audience)
Make a portfolio
Portfolios can be nice, but are more critical for designers or UI/UX roles than they are for developers. Still, it can be nice to have a site that you can point to with your existing work. It can really show (especially business clients) what you're able to do for them.
The magic bullet: write an ebook
This isn't as hard as it sounds! Even a short ebook is still an ebook - so string a few blog post length chapters together, and you'll have something that you can package up in no time.
When I got started, I first wrote an ebook about React, and it was like magic for getting clients. The conversation usually went like this:
Prospect: "So, what have you done with React before?"
Me: "Well, I wrote this ebook here"
Prospect: "Oh! You must really know your stuff then!"
...and that was the end of the discussions about that. Ebooks are magic! ✨
5. Meet other developers
As you are defining what you want to do, and writing about that in a public place on the Internet - you should also be going out to meet other developers in real life.
Notice that I'm not saying "go network", or "meet potential clients" - because in my experience that doesn't work very well (at least - not at the start).
Instead, I mean: go to meetup.com and find a technical meetup near you, and go with no expectation of getting a client from it.
Instead: go and make friends!
Many of my contracts over the years have been through friends I've made at meetups. It's great because you can get to know someone in a casual setting, and when you're ready to actually look for work you can just send a few messages to people who are already your friends!
For extra points, give talks at meetups too! That's a great way to get in front of a lot of people to 1. show that you know what you're talking about, and 2. let them know that you're looking for clients.
6. Plan your exit (pick your first client)
OK - so you've picked your niche, written about it online, and made friends with other developers in that niche.
Now it's time to find your first client!
The good news is that software developers are in HUGE demand right now. When I started thinking about leaving my job to freelance, I basically just asked around to see who had some extra work
(You've made friends at meetups, right? Start with them.)
It can be kind of weird or nerve-wracking at first, but here's a script you can use:
"Hey [friend], I was thinking about doing some independent freelancing! Do you happen to know anyone looking for a contractor for [whatever you're good at]?"
That's not so bad, right?
A variant of that script has lead to probably 75% of my work over the years.
Pick a good first client
The final advice I have here is to (maybe) not just pick the first client who walks in the door.
You wan to make sure that 1. you can actually do the job, and 2. the client will respect you and your time.
If you get any weird vibes or bad feelings - then just gracefully and cautiously decline, and go look somewhere else. There are plenty of potential clients, and a bad one can kill your consulting business before it even gets started.
7. Quit your job
The big day! this is what you've been working towards.
I don't know your specific situation, so can't help you much here (sorry! You'll have to figure this one out on your own), but I do have one piece of advice:
Don't screw the team over, don't burn any bridges, and don't be a jerk. The tech world is smaller than you think - so just be nice about it.
8. After your first client
You have your first client - Hooray! 🎉 The hard part comes next 😉
First, you have to deliver on what you've promised. Don't skip this step! (hopefully obviously!) Freelancers live and die by repeat business and referrals, so do a good job and communicate well.
Next though - you always have to be looking for your next project and client.
Sometimes you will get a long contract that keeps you busy and pays you well, but there will always be a time when you need to move on - and so you always need to have the next project lined up.
This is one of the cons of freelancing that wears people down, but if you've followed the steps so far, then you're ready for it. Here's what you do:
- Keep writing about your work online
- Keep going to meetups
- Keep giving talks, and telling people that you're a freelancer
Again - this is one of the best times to be a software freelancer because there is such a huge demand; but you still have to be proactive about it.
Freelancing can be tough, but it can also be really rewarding.
I've been able to work for some really neat companies on some really cool apps, and it's been exciting to jump around and see so many different projects.
I'll be writing more about freelancing in the future, so be sure to sign up for my newsletter to be kept in the loop.
And if I can help you out in any way - let me know! I love to help people live up to their potential, and freelancing is a great way to do that.
Thanks for reading!