I have been learning to code for past few years. I would love to get started with freelancing, but facing difficulties rating my skills and deciding what to charge for the work.
Tips and guides would be helpful.
The answer is simple. You need to charge to total amount your customer is willing to pay for!
Before saying the price you need to understand the country your customer is from, the size of the company and the project. You need also to compare your level of expertise among other developers.
If you are fast and deliver high quality coding I can guarantee you will have more customers willing to pay the price you set than the total time available for coding.
I suggest you to start with low rates, get some customers, show your work quality and start to increase the price.
Mario Giambanco
Director of User Experience Development
Freelancer for over 10 years here.
First - decide if you want to freelance to earn some extra cash, or if you want it to be a full time gig. Although your rate can be the same for both, when it's a full time job, you need to pay closer attention to your rate.
As a side / part time job, you can really set the price to whatever you think the market can bear. Some charge per the hour and some scope the project and charge a flat fee per a project. I prefer a flat fee. Programming isn't an exacting science. You might have scoped a project properly, but things come up; you get stuck on a problem and it takes you longer to implement then you thought. You might miss a feature and have to add it in. You might be waiting on a design from someone and their taking a long time.
I've done it both ways; working on projects billed per hour for a day job and flat fee projects. There's much more pressure on per the hour from the client generally. Once you give someone a number, they expect that number. If you plan 100 hours for a project and it ends up taking 150 and your hourly rate is $50 - the client might be really mad.
If your planning to freelance as a full time job, a lot of other things come in to play. You need to set your rates so that you can cover your entire life, + your new business. How much is your rent / mortgage? How much does food cost for the month? If you drive, fuel for your car and maintenance. If you have to pay for medical (as in the USA) how much does that cost? We all need a break; how much do you spend a month on entertainment be it seeing a movie or going out to dinner. If your primary development machine died tomorrow, how much would it cost to replace it at a moments notice? If your machine dies, you can't work! How much will you need to set aside for income tax? Do you need to support a wife? Husband? Child?
Then, how will you find new work? Advertise on Facebook? Twitter? Word of mouth? Advertising is now a part of your business. How much will this cost month to month?
How many hours are you willing to work? 40 / week? 50 / week? Don't forget, you'll need to spend time marketing, invoicing, building your portfolio so you can show off your work, talking to new clients, etc...
These are all living and operating expenses. Calculate all of these and everything else I missed per month, divide by how many total hours your willing to work and add 20% for stuff happens. That's your rate.
That rate can also be applied to an hourly maintenance rate. You'll need to support the projects you build and as a full time job, time spent maintaining is now time wasted not finding new work. You'll need to charge for this.
Another important aspect of freelancing full time; make sure you have a runway. Before you quit your day job, have some cash in reserve to live for a few months. Some months will be great - non-stop work, plenty to do and plenty of money coming in. Other months, nothing. Those low months, you still need to survive. Also - clients almost always never pay on time. You'll need cash in the bank to deal with that.
After you rebound from low months, replenish the runway so when it happens again, your not left fending for yourself.
If you plan to do this full time, line everything up before you go out on your own. Find clients, schedule projects. Find and get used to using an invoice system. Make a contract template. A contract is the only thing that'll guarantee you'll get paid. Find a lawyer you like for when you don't get paid.
Freelancing can be incredibly rewarding; programming is one of the few jobs you can do at a day job, and on your own after work. Freelancing can also be incredibly painful if you let it. Theres no boss to buffer you from the client. Theres no accounting team to deal with billing or invoicing. No marketing team to ensure everyone get's new work. You do everything yourself.