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.
Top comments (54)
To be clear, I'm talking about not working for exposure or to prove your skills to a client. These won't pay the bills and it's disrespectful to your hard work. Your portfolio should speak for itself.
I'm not talking about never contributing to open source or donating your time and skills to a good cause. This wouldn't fall under your freelance billable hours anyway.
Yes, clients who expect free work are major red flags all in all.
Free work on your own terms is a whole different story.
Great write up Kelly! One question: At what point do you find it valuable to set up an LLC / other sort of entity to separate out "side-gig/freelancing" from "professional work/consulting"? Any tips on that process?
Great question! Set it up ASAP. Regularly freelancing outside of an LLC is risky because there's no legal protection for your personal assets. In the case where you'd find yourself getting into a sticky lawsuit situation, you don't want everything you own to be on the line. Once you find yourself accepting regular payments, it's a good idea to get your LLC set up and get a separate business bank account.
In the US, setting up an LLC is easy and affordable. Cost varies by state, but in my case (Georgia) it was $50 to fill out one form and submit it to the Secretary of State.
Woot! Will do. And just to be clear -- no need to go through the Stripe Atlas / online marketplace type setup here since we're not selling products, but services?
I'd say Stripe Atlas is overkill for getting started as a freelancer regardless of their service offering - just use the list of what they cover in their $500 fee as a guide for what you need to set up. Your main priorities are the LLC formation, EIN generation, separate business checking account, and make sure everything is set up correctly with the Secretary of State.
I've been looking at freelance guides and potential courses to get deeper into freelancing and most, if not all, guides/courses always avoid talking about taxes and etc.
Literally talking to a CPA is probably the best advice I've heard so far.
100%! A good CPA is worth there weight in gold. I can not remember an article that talks about taxes. When I did 1099 contract work I put away 33% of every payment for taxes. It was probably overkill but I never had to worry about under payment at the end of the quarter / year.
Being friends with clients is a bad idea?
You can certainly have clients as friends and friends as clients as long as there's a clear understanding of the line between business and friendship. I've worked with some friends without issue and I've also lost friends over bad business arrangements.
I'm at a point in my career now where I would rather refer a friend to a colleague instead of work with them directly, but I know other freelancers who have no problem at all working with friends as clients (or clients as friends).
In most cases - yes. Because soon you will either stop being friends with them or end wasting too much time for free.
I have a few exceptions in the past 20+ years, but in general - avoid making business with friends, at least without setting very detailed constraints where friendship ends and where business starts.
Awesome comprehensive intro! It certainly covers a lot of details I would not have thought of, like adding credit card transaction fees to your yearly income.
Regarding a CPA, do you think it's as useful to consult with one if you're just starting to freelance? Or is a consultation more worthwhile when you have a decent income?
Great question! In my opinion, the earlier you consult with a CPA, the better. It's helpful to be starting on the right foot tax-wise, as nobody likes finding out they owe a ton of money that they haven't been saving up for come tax time.
In the grand scheme of things, you're maybe spending 1-2 hours worth of billable hours per month on a CPA. Even better - add the cost of a CPA into your yearly income!
Thanks for the writeup, some good points!
I came across this article which offers a somewhat different approach:
A point which he makes and which I agree with is Upwork and similar "market places". Personally I strongly dislike them because they make you play within their rules, and their best interests are definitely not yours as a freelancer (look at the fees and commissions that some of these 'platforms' are taking). Being truly independent makes it possible to get the best out of yourself.
For me the trickiest thing was/is how to determine my niche/specialization - that is, what exactly am I selling? Specialist or generalist ... develop a product or offer a service ... fixed price or hourly billing ... what's going to be my strategy?
Main problem was that I felt I was "too broad". This has pros and cons - the advantage is that you can take on a wider range of projects, the drawback is that your "sales story" becomes more complicated, and that it's almost impossible to keep up to date with such a wide range of technologies.
High quality and efficient development with these tools, whilst putting soft skills (top notch communication, analysis, design and project management) front & center, is what I want to formulate as my "value proposition". Make it clear that what you have to offer is worth the price.
In case the client insists on a different selection of tools/technologies, then I can fall back on my "broad skillset", but in that case I'll want to raise my hourly rate (I want to make my favorite tool chain more attractive for them than the alternatives).
Offering this clear and articulated "value proposition" also makes it easier to attract higher quality clients, and to set a good rate (this was/is my second biggest issue, I almost always "go too low" for instance because the client just doesn't have the necessary budget).
Of course this only works if you build up a larger set of prospective clients so that you can say "no" to the ones that are not prepared to pay what you're asking. With a bigger pool of 'prospects' you can just say "no" more often.
So how do you get this larger pool of prospects - that's where the second part comes in: build your authority, and based on that do your marketing. Blogging, open source, networking, offering useful "freebies" that you developed as 'side projects'. I've only invested a little bit in these activities but that's already taught me that this can be very effective when done right.
Someone like Brennan Dunn (doubleyourfreelancing.com) has some good ideas in this area (I'm in no way affiliated with him, but I got inspired by some of his ideas).
Just some thoughts, but as always the truth is in the middle and the answer "what's the most effective approach" is "it depends", what works for me might be entirely different from what works for you.
Excellent post! Many of the developers who work as mentors with OpenClassrooms actually start out as a way to supplement their income when transitioning to freelancing. So newbie freelancers may want to look at our mentor site for more info: mentor-en.jobs.openclassrooms.com
Nice article. Am just starting up as a freelancer and wanted to know
How do you make a contract for an incremental project. The requirements keep changing daily.
How do you include that once the project work is done, there will be a monthly/yearly cost to keep the site up.
I'm no seasoned expert, but I would like to add my thoughts here in case they help.
I usually will write the contract so that it explains what kind of work is covered, and how many hours of said work type are included in the cost. For example, "$60/hr for the first 30 hours of work including content creation, editing, layout design (etc)". Then I will add another rate for other type of work or work beyond the first breakpoint (in this case, photo manipulation or layout modifications, after the first 30 hours have been met).
My husband and I designate 2 types of contracts: Project (the initial build or overhaul of a site) and Operations (website maintenance and upkeep). The second type is what we use for the annual costs of running the site, if the client has chosen to let us manage it on their behalf. Most of our clients, however, have prefered to maintain control over the site, so we don't get many Operations contracts. When we do, I typically set the cost to cover all overhead, plus about 8hrs of work per month if needed, and a higher hourly rate if the 8 hrs is exceeded.
Hope that helps, @vjnvisakh .
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?
Great advice Kelly, I'll brush up on it after the holidays
Thank you! Let me know if you have any questions!
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.
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:
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.
You watched Uncle Bob's video, didn't you?
In case you missed it: youtu.be/eisuQefYw_o?t=891
I've been flirting with the idea of freelancing for a long time! Definitely keeping this list in my back pocket!
Also mini win, I got referred as a freelance person because of who I was and i was so flattered even though the timing just wasn't right.
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.
Some comments may only be visible to logged-in visitors. Sign in to view all comments.