Making money from home in the modern online marketplace
With the speed and reach of the modern web, it is easier than ever to make a living as a freelance developer. A freelancer, or independent contractor, is a self-employed individual who finds work from different clients, rather than being hired as an employee at a single company. You can find clients from all over the world, set your own hours and rates, and work on projects from the comfort of your own home. Getting started, however, can be a daunting task.
I have been freelancing for five years and make my living as a full-time freelancer. As a top-rated freelancer on Upwork, I have an intimate knowledge of the freelancing world and how best to achieve success as a developer for hire. If you are interested in offering your services through an online marketplace, here are some tips to help you shine:
Freelancing requires dedication and good time-management skills. It's best to have a regimented schedule; for example, I freelance full time, so I'm in my home office working from 10am to 6pm Monday through Friday. Following a regular schedule makes it easier to focus on your work and avoid distractions; if you work an hour here and there when you feel like it, you'll end up working less often and making less money. Additionally, your clients will like it when you work regular hours and they know when they can expect to reach you.
Start out small. Potential clients like to consider your past experience. When you are new to the freelance world, you don't have profile with an extensive history of past freelance projects. If you don't have previous experience, clients will feel more comfortable hiring you if your rates are on the low side. Starting out with relatively small and simple projects allows you to build a freelance portfolio while getting used to the ins and outs of independent contracting.
Don't bite off more than you can chew. This includes accepting large contracts where you don't think you can finish the project well before the deadline, accepting contracts where you aren't reasonably certain you have the necessary skills to complete the work, and taking on too many contracts at once. If you fail to deliver, the client may leave you a scathing review that prevents you from getting new clients in the future.
Never work for someone who doesn't respect you. Some clients seem to think that independent contractors are tools to be exploited, rather than assets to be valued. They will not treat you like a person and working for them will make you miserable.
Beware the scope creep
Scope creep is one of the most common problems that plague software development projects. Scope refers to the overall size of the project (measured in work that needs to be performed or features that need to be completed). Scope creep refers to the slow but steady growth of project scope with no end in sight. Scope creep is frequently the main culprit for projects falling behind schedule, going overbudget, or failing altogether.
As a freelancer, you might not see the problem with scope creep at first. Larger scope means steadier work and more money for you, right? But it's not that simple. First, if you're payed by milestone, you'll keep having to negotiate new milestones for all these new features. Second, the larger the project grows, the more difficult it is to test and debug. Third, uncontrolled scope creep can lead to the client running out of money or patience, which can lead to heated arguments and lots of stress. The project may even get cancelled before completion, which means you have nothing to put in your portfolio. Lastly, if you were hired through a freelance website, the client may leave you a negative review.
So how can you fight against scope creep?
The first one is simple - once work is underway, don't suggest new features that will increase the scope of the project.
Help keep the client grounded. Each time the client mentions a new feature they want to add, remind them that this will take extra time and money. If you are seriously concerned about never being able to finish the project (for example, because the client is adding new tasks faster than you can complete existing tasks), tell this to the client.
Never add anything the client didn't ask you to add. Maybe you have some idea for a great little feature that will only take 30 minutes to implement. You throw it together and show it to the client; they love it, and immediately take full ownership of it. They want to change and expand upon your idea, and suddenly your 30-minute feature has turned into a two-week ordeal that has thrown the entire project off the rails.
Billing and payments
Regardless of how you set your hourly rate, many of your early projects will likely be fixed-price contracts. These are projects where the client and freelancer agree to a total price up front; rather than getting paid by the hour, the freelancer gets paid for actual work completed. Fixed-price contracts often have a deadline (which may be loose or hard). Clients prefer fixed-price contracts when working with new freelancers, because they know how much they are going to spend in advance.
For fixed-price contracts, it is best to set up milestone payments, where you get paid a fixed amount for completing certain steps. The milestones should be clear and irrefutable. For example, a milestone could be "finish mockups for every screen", because it's easy for everyone to verify that's been finished. Try to avoid vague milestones like "25% complete", because the client may argue with you about what constitutes 25%.
Once you gain a lot of experience and have a good portfolio and project history, you'll find that more clients approach you with hourly contracts rather than fixed-price contracts. In my opinion, for an experienced and dependable freelancer, hourly contracts work out better for both parties, because the client can request changes or new features without having to negotiate new milestones, and the freelancer knows he will get paid for every hour worked.
Be weary of contract terms such as "100% payment on delivery", "no payment until app is published", "no payment if you miss the deadline". These can give the client incentive to drag out the project, or disappear from the face of the earth, to avoid paying you.
If a client owes you a payment and tells you that they are waiting for their next paycheck, stop work immediately and do not continue until they pay you. "I'm waiting for my next paycheck" often turns into "sorry, I can't afford to pay you and need to cancel the project".
Never work solely for a percentage or profit share. You will receive countless invitations written like this "I have an amazing new idea for an app that has the potential to make millions. I don't have a lot of money to pay you now, but I will give you 30% of the profits after the app is complete". These are naïve people with no business knowledge and no idea how to manage a successful project. Their project will probably never be completed, much less be successful. You won't gain good experience or have something to put in your portfolio. There are plenty of clients with good ideas who can afford to pay you. Work for them instead.
Never work for free. This includes "interview tasks", bug-testing, game design, UI design/mockups, or anything else the client asks you to do before they hire you. They aren't actually planning to hire you. They just want you to do some free work for them.
For freelance work, you do not have a W-2 nor income tax withholding. THIS DOES NOT MEAN THAT YOU DO NOT PAY INCOME TAX. Instead of normal withholding, you must manually make estimated tax payments four times a year. When you file your taxes in April, you may have to pay additional money or may get a refund depending on whether you underpaid or overpaid your estimated taxes. This means you cannot spend all of the money you make each month; you must save enough to be able to pay your estimated taxes, or the IRS will charge you a penalty for late payment. This may sound daunting at first, but it's actually pretty simple and tax software like Turbo Tax can walk you through the process and let you know when you pay your estimated taxes and how much to pay. Don't think that just because you're a freelancer means that you can get away with not paying your taxes. Freelance services like Upwork will report your earnings to the IRS each year, and if you don't file a matching tax return, the IRS will notice.