If you're looking for some extra cash and have a few hours a week to spare, freelancing is a great way to stretch your programming muscles and line your wallet. Even better, freelancing can be a very lucrative career if you have dreams of working entirely for yourself.
Before starting an agency, I freelanced all throughout undergrad and grad school and well into my first full-time job before making the switch to freelancing full-time. I turned a few side gigs into a six-figure career, and you can too.
Before you do anything else, build a portfolio.
Visitors will want to know more about you and your work before they think of hiring you. Remember: your freelance portfolio is not your resume. Potential companies and entrepreneurs looking for freelance help are not interested in what school you attended. They want to know what you can do and how you can help them further their goals.
Make sure to include some information about yourself. Include a photo if you're comfortable with that. Because you may never meet these companies in person (unless you have local freelance arrangements), put yourself in your best light online. Let your personality shine through.
Don't have paid work to display in your portfolio? Don't worry about it. Showcase anything you've built that shows off your best work, whether it's a redesign or a small webapp you built for fun. You can add paid projects to your portfolio as you take on more clients.
Getting your first clients
The first few clients will always be the most difficult to find and sign on. Your mileage will likely vary on your likelihood to find leads through these sources, but I've seen success for other freelancers getting their start in the following areas:
- Upwork. I know, I know. Upwork is a love/hate relationship for many. But it's a great way to get in front of people who may not otherwise find you. Think of it as the Amazon marketplace of developers. Just be sure you don't fall into the race to the bottom on pricing. You're not going to appeal to everyone on there if you don't have the lowest rates, but you don't want to undercut yourself. Your work is valuable and you're being hired to do this for a reason.
- Social media. Write a tweet letting your followers know you're available for freelance work and link to your portfolio. Ask followers to retweet it. Find some freelancer Facebook groups in your niche. Quite often I see leads being shared when someone has too much work or the client isn't a good fit.
- Friends and family. Tell your friends and family you're getting into freelancing and you'd love to have them pass your name onto their friends who may need some work done. I receive a new lead at least once a quarter from a friend or family member who knows I'm in this industry.
- Non-profits. This is a great way to add some client work to your portfolio while giving back to your community. Smaller non-profits in your community don't usually set aside enough money in their marketing budget to put any focus on their website. If there's a local non-profit you would like to support, reach out and see if you can arrange a deal with them to build out your portfolio at a reduced rate.
- Cold calling/emails. In all honesty, I rarely hear of directly reaching out to a company offering to rebuild their website being successful, but it has happened before and can happen again. If you're okay with being rejected, it's worth a shot, I suppose! :)
Establishing your rates
My favorite topic! Everyone undervalues themselves - including myself sometimes. It takes just one potential client who says you're too expensive to make you second guess your rates. To be completely honest, I've been in this business for over a decade and my rates are something I continue to struggle with.
It's difficult to say "You should charge X" without knowing where you're located, what type of work you're doing, what your skill level is, and the many other factors that go into pricing a project. It's definitely important to take your market into consideration, as rates are going to differ from place to place. Take a look around the web to see the market value for your area and skillset.
A good rule of thumb is to do the following math to calculate your hourly rate:
- Calculate how much you would like to make per year freelancing.
- Add in any expenses you'll incur as a freelancer, such as credit card transaction fees, a co-working membership, additional equipment, and monthly/annual costs for software and services you'll need to conduct your work.
- Divide this number by the number of billable hours you'll freelancer per year. Note that administrative tasks (marketing, communicating with leads, preparing contracts and invoices, etc.) will on average take up ~25% of your time, so don't include this in your billable time.
Now you have your target hourly rate!
Need an example?
- Let's say I want to make $10,000 in my first full year of freelancing.
- My additional expenses will be approximately $2,000. That means I'll need to make a total of $12,000.
- I expect to freelance approximately 5 hours a week for 48 weeks out of the year. 5 * 48 = 240 hours. Remove 25% of those hours for administrative work, bringing you to 180 hours.
$12,000 / 180 hours = $66.67/hr.
It's not perfect, but it's a good way to get a starting ballpark rate.
Continue to increase your rates with each project or as you take on more complex work. Another agency owner once told me that if a client is willing to pay $6,000, they're probably willing to pay $7,000. If they're willing to pay $12,000, they're probably willing to pay $14,000, and so on.
Lastly, never reduce your rates for a client without removing something from the scope.
Landed your first client? Great! Now what?
First thing's first: don't do any work before you have a signed contract. Your contract is the only thing that will protect you AND the client from the horror stories you hear about freelancing. Whether it's a close friend or someone you've never met, send them a contract. If they won't sign the contract, don't work with them. Need a sample contract? There's one available on this Medium article. Adapt it as you need. It's well worth the small investment to have a lawyer review any legal documents you send to clients to make sure they're enforceable. It's a one-time cost that could save you thousands upon thousands down the road.
Next, get a down payment. How much you want to set your down payment for is completely up to you. Sometimes I require 100% up front, and sometimes I'll split the project cost over a series of payments as we hit certain project milestones. An easy rule of thumb if you're just getting started is request 50% up front and the final 50% before you deliver the final product. Not sure where to accept payments? I'm a big fan of FreshBooks and have been using it for a few years now. Their support is excellent and they make it really easy to accept credit card payments AND track your expenses (which you'll definitely need to be doing as a freelancer!)
Lastly, create a folder and save the estimate, signed contract, and any important conversations regarding the project details. You'll thank yourself later for having these immediately handy instead of searching through your email.
Okay! Now you can start working.
Common freelancing mistakes
- Don't over-promise what you can't do. If it's a similar skill and you just haven't had the opportunity to dig into a specific facet of your preferred development language, it's fine to take on the project if you know it's something you can do based on your current skills. But don't say you can code an iOS app for a client if you've never done any iOS development before.
- Don't work for free. I'm not talking about donating your time and skills to a good cause. I'm talking about working for exposure or to "prove yourself" to a client. Your work is valuable. The client wouldn't be giving away their product or service for free, and neither should you. If you're still building up your portfolio, you can discount your rates if you want so you can get some paying clients under your belt.
- Be realistic about your time frame. The honest truth is projects almost always take longer than expected. If you think something will take you a week to code, tell the client it'll take two. Something will come up that will throw off your schedule. It's better to deliver earlier than expected than to have to push out a launch date.
- Keep track of your expenses and set aside money for taxes. Look up your country's laws around freelancing and taxes as a contractor. If you live in the US, you should begin paying quarterly estimated taxes. Set aside a small percentage of your payments to put towards taxes. If tax law isn't your forte (as it isn't for most devs including myself), it's wise to consult a CPA to make sure you're saving enough and have your expenses properly recorded come tax time.
Whew, you made it to the end! If this article didn't answer all of your questions, ask below and I'll do my best to get you an answer.
Want more freelancing goodness? I wrote a book called Start Freelancing Today that is a deeper dive into starting and scaling your freelance business. Click here to purchase.
Happy freelancing!
Latest comments (50)
Great intro!! Thanks for the value!
I always recommend to be careful with upwork and platforms like that, there is soo much sh*t happening on there. But you're right, its also a good place to start. I think there might be better ways to begin though, and become and stay independent of those platforms.
I am looking for a freelance flutter job. contact => mtmth990@gmail.com
phone=>00959773372834
Thanks for this post Kelly. I'm a fullstack web development student looking forward to get into freelancing but the fact that it not easy to find clients and the thought I might not be good enough keeps holding me back. How can I deal with this?
This is a good post! One thing I learned recently that I've been doing is to try and avoid hourly rates.
This is a good discussion on why trading time for money (what most of us do for a dayjob and then translate to how we should freelance) is the lowest rung on the ladder to working for yourself.
nathanbarry.com/wealth-creation/
You can see this advice echoed by other consultants and freelancers as well once you dig into podcasts or articles.
Daedtech is one of my favorite resources on professional freelancing/consulting and Erik gives out excellent advice:
daedtech.com/dont-take-freelancing...
For myself, as an example, I do freelancing technical articles for a client on a semi-regular basis. When they reached out, I used this advice to avoid doing hourly billing. Instead my rate is based on how much I write, not how long it takes me. Now if I really wanted to level up, I would change to offer a packaged service, like $1000 for 2 articles a month or something on that line. In more sophisticated cases, I'd be able to point to how much business my articles drive (like, 200 people clicked through the trial subscription sign up link in a previous article which drove an estimated $x revenue for you, therefore I'm asking for $y based on how much value I offer).
I know when I first started out doing client work, all the advice seemed to be hourly billing but I'm glad I found out about better ways to offer value and get paid for it that isn't tied to time spent.
thanks for your information
I wanna freelancing with python but I can`t choose which one of the subject is good
Nice post, thank you Kelly, i'm really trying to work more as freelancer but it is being hard for me.
Thank you Kelly. Very helpful guidelines. I'll try to consider and practice them.
From someone who has tried freelancing in place of traditional employment, this is a very good guide for getting started.
I particularly liked the line: "never reduce your rates for a client without removing something from the scope." This is something that is easy to forget when negotiating.
Thank Kelly :D,
so great post!
Some comments may only be visible to logged-in visitors. Sign in to view all comments.