Freelancing can be really attractive, especially to people who like the idea of being-your-own-boss. You're in charge of when you work and who you work for, for how long and what you get paid. You're also in charge of filing taxes, finding new clients, and personal training to stay on top of the latest trends. You might find that you don't like freelance work because you don't enjoy sales or accounting. You might find that you love it because you enjoy wearing multiple hats. Today we'll talk about the basics of getting started as a freelance developer.
Before you do anything, take a look into your City/State licensing requirements. In some places not having one can lead to future fines. To get started, find your local licensing office here: https://www.sba.gov/starting-business/business-licenses-permits and then start looking around.
Each City/State can also have rules on running a business from home, ask about this too to avoid future fines.
Next I would look into tax requirements for your City/State. You can do this online as well or by contacting a local CPA for more information.
All business owners are required to pay a percentage of taxes on the money they earn. At a "normal" job that money is usually removed from your check before you get paid (this is how a tax return is born), but as a freelance developer, you're in charge of setting that money aside. Doing your research can help you know what to save so you can pay it right away come April 15th instead of getting to know the IRS.
There are also different tax deductions that you may want to consider as a freelance developer, so seriously, talk to people, do your research.
Check out this Turbo Tax guide on freelancing and taxes here to get you started: https://turbotax.intuit.com/tax-tips/self-employment-taxes/a-freelancers-guide-to-taxes/L6ACNfKVW
There are a number of ways to find projects to bid on as a freelance developer. Your best asset will be networking and word-of-mouth in the long run, but for now, the following sites are a good place to start.
They're basically digital classifieds for freelance gigs, even Craigslist has a dev section! Be aware though, that many of these tools require a monthly fee and additional percentage charges, depending on the size of each project. It's to be expected, since you're basically paying for the service of having tons of jobs to peruse and bid on, but you may want to consider rolling some of those fees into your development rate if you can.
Referrals + Networking
Having friends and past customers refer jobs to you is an excellent resource and you can start the process by letting everyone know you're a freelance web developer. You don't have to be obnoxious about it, but even weaving it into an introduction by saying "Hi, I'm Sariah, I'm a web developer, what do you do?" gets in their mind that if they ever need any website help, you're the one to ask. Even if any of their friends need a website, "Oh yeah, doesn't that Sariah girl know how to code or something?" and thus the potential for incoming work begins.
You can also get the word out about what you do by participating in conversations online about development. Checkout a local facebook group or entrepreneurship meetup to meet people who are in need of websites. You don't have to get in their face and offer your services, but instead, listen in on conversations and offer free resources that they can use to do it themselves. Doing this is a great way to add value to the community and you start to become that person who helps people a lot and who must be good at development. I'm not saying give all your services away for free either, but sharing your knowledge and a few resources can go a long way with building trust and making you the person they go to when a job is too big to do on their own.
There's actually a great article that talks more about networking and providing value to your connections here: How to Network Your Way Into a $100,000 Job (Real-Life Story).
Also, keep track of your customers' information like emails, etc. These are great resources for sending out promotional emails and discounts to help bring in more work. Maybe offer a 10% discount for anyone who refers a friend for a project. Keep tabs on the work you do for clients and when technical updates come up or potential improvements you can make to their site, reach out and offer an upgrade.
What to Bid on?
While reviewing potential projects to bid on it's good to keep in mind how much time you have to work on the project, your technical strengths, will you need to study up on a new technology, etc. No one wants to get in over their head, but don't hold back from personal growth either by only taking HTML projects for the rest of your life ;)
As a freelance developer, you get to decide when you learn something new, which is pretty cool, but this can also be limiting to people who have hard time trying new things on their own. If that's you, freelancing might not be your cup of tea. If you are down for learning new things, don't forget that you really aren't alone. We work in an awesome community where people are always helping and encouraging each other. If you haven't joined a local slack team yet, get on it! If you get to something rough in a project too, there's also the option of hiring another contract developer to help you out.
Also, only bid for enough work to keep you busy, but also to give you enough time to meet deadlines. Over booking yourself on projects can lead to everything falling apart.
What do I charge?
Deciding what to charge is the number 1 question I get all the time. Short answer - it depends...
Long answer, start asking yourself the following questions:
- How much is your time worth?
- How much do you want to get paid?
- How fast can you code and code well?
These questions will give you a good place to start thinking about your potential value as a freelance developer. The next question would be:
- What are people willing to pay right now for your services?
This is where research and experience will come into play. To figure out the market rate, you could ask fellow developers about what they charge or even do a little research on what people say they'd be willing to pay too. If the going rate matches what you're willing to work for, then you have a pretty good starting place for your rate and can make changes accordingly as you gain more experience.
Hourly vs. Project Based Rates
A great contact of mine, Steven Godfrey, gave a really helpful presentation on freelance pricing at a meetup that I'd like to share some notes on here. I especially like how he broke down several different pricing formats and went over the pros and cons of each:
Hourly rates are generally where most people start out. Some might call it a necessary evil. Evil because eventually, it really starts underpaying you.
Imagine you're just starting out and it takes you 10 hours to build a basic single page application. So you charge $40/hour and make $400 on the project. "Yay!" Six months later, you've gotten better at your job and it only takes you 5 hours to build the same kind of application. That's awesome! The down side though is if you're still charging based on an hourly rate, you're technically making half as much money for the same value and quality of work: only $200 for the same product. "Oh bummer..."
This is where it might be time to move on to Project Based pricing. Ultimately though, as Steven says, "You gotta start somewhere". Use your first couple projects to figure out how long it takes you to build and to test higher and lower prices. How high can you go before people say "No"?
Project Based Rates
When you charge by project it's usually a flat rate no matter how long or short it may take, just as long as you meet the deadline. People often figure out project rates based off of prior experience -- how long it takes them to build something on average and how much their time is worth to them. Some people charge differently for specific features and then produce a project quote based on the total all those features add up to. You can do research and see what the going rate it too, etc.
They say that project based rates are closer to the actual value of the project because no longer does it matter how long it takes to get the job done, instead the price is based on the value the product is going to bring to the client. Another plus side to this is the better and faster you get at building similar projects, the more you get paid per hour. You could essentially even make more money because you'll have more time to work on several projects at once, etc.
Project based rates are also easier to collect up front so you don't have to worry about someone taking the product and running before they pay.
Contracts and Scope Creep
Always be sure to sign a contract with clients describing the type of work you'll be doing. The more detailed you can be the better and it doesn't hurt to spell out other things either like when your office hours are (when they can call you for updates), how you'd like to be paid, deadlines for payment and project completion, etc.
Having something in writing protects both you and your client and creates a record of what you're agreeing to build and what they are agreeing to pay.
In fact, there are a number of resources out there for helping you draft a contract that's the right fit for you. It doesn't hurt either to run your document by a lawyer too for a final review.
Contract Writing Resources:
- Freelancers Union Contract Creator
- How to Create Contracts with Confidence on Upwork
- 8 Contract Provisions Every Freelancer Should Know
- 8 Contract Clauses You Should Never Freelance Without
I really like how the last two articles bring up some common issues that can occur when you don't include the right clauses and provisions in your contract.
What happens if someone loses funding and can't pay you for the rest of a project? That's what a Kill Fee is for.
Is a client trying to rush you to finish a job? Good thing you spelled out a deadline date in the contract and that extra rush option too with an additional fee if they just can't wait later on.
Are you open to making revisions and doing rewrites of a project after it's been accepted by the client? It might be good to include some details on that.
Working with a group of people? It might be a helpful to stipulate who will be your main point of contact from the group so you aren't having multiple people calling you all the time, giving you conflicting requests and opinions.
Last but not least, a common issue that occurs especially when contracts aren't clear is what's called: Scope Creep. This term refers to when a client asks mid-project for an additional feature or insists they expected something a little different and requests changes, etc. Do you build those changes for free and stick to the same deadline? Do you write up a new contract? A scope creep clause can provide some insight and often prevent these kinds of questions from coming up.
Metaphorically speaking Scope refers to the expectations of the project as if you were looking through a view finder of say a telescope. Everything you see in that telescope is what you and the client have agreed that you're going to build. When a client misunderstands a contract and requests a feature that initially wasn't laid out in the scope, and you agree to add it, this is where the scope essentially Creeps and becomes a larger or more detailed area that you're looking at through the view finder and essentially working on as the developer.
Scope Creep can be frustrating as it often leads to the developer building more features for the same rate and by the same deadline -- which means more work and less money. The client feels in the right because they didn't understand the contract and you're unprotected because you didn't include a Scope Creep clause.
A Scope Creep clause can protect you by essentially stating:
"Any work not listed above will be considered new work and will be billed on future invoices"
but it doesn't really work unless you're writing the expectations of the project out clearly in the contract. If you are writing them clearly though, then this clause can be a great tool to refer to for giving the client an option to work with you in the future on further features.
Freelancing can be a great way to add more flexibity to your schedule and even make more money the better you get at your job. I'd say these aren't the only things to keep in mind when starting a freelance business, but they do give you a pretty good start. For more resources on how to thrive as a freelance web developer, check out the following blogs and tools: