Since summer 2008, I have logged over 600 hours of freelance programming work through the website odesk.com. It has been an interesting experience. In May 2008, I moved to China and ended up becoming an English teacher. I started freelance work because I missed programming. While English teaching is rewarding in its own way, I missed the satisfaction that comes from solving technical problems and creating systems.
I reviewed a few freelancing websites including Rent a Coder and eLance but settled on oDesk. Why? There was no signup fee with oDesk and the fee is simply 10% of earnings. I remember other sites charging 15% and having complicated systems of bidding for jobs. oDesk seemed to offer the best model without taking too big a chunk or requiring an upfront fee. I definitely did not want to pay an upfront fee since I was just getting started.
Getting the First Job
Within a few weeks of looking, I landed my first task. Getting the first task is always the most difficult. It is a catch-22. Buyers want to see feedback to know you are reliable but you can’t get feedback until you have your first completed task. How did I get it? I had completed some tests to show my knowledge and added items to my portfolio but I believe I got the task because of the cover letter.
In the job description, the buyer outlined that he wanted an addition to a part of his admin page. My cover letter specifically addressed his problem and offered the steps I would take to solve it. This must have made me stand out as I was hired and told to go at it. This was a fixed price job. It would be the first and last fixed price job I would consider doing.
Fixed Price Downsides
Upon completing the task according to the original job description, the buyer then asked if a change could be made to make things easier. I informed him that the work suggested was outside of the original job description and I would be able to do the work but would need to negotiate more money for the task. After that, the task was closed and paid. I did not receive a reply from him.
This taught me my first lesson with freelance programming: fixed price work can be a bad deal if you’re not careful. With software, it is very difficult to define all the requirements needed for even the most trivial of tasks and you can forget about getting every detail on larger projects. This makes it impossible to estimate time needed and rate to charge.
This task was a small one and I was paid $25 for it. Since it ended up taking me nearly 5 hours, it wasn’t a good deal for money but it did enable me to get on the system and lead to my next job. Just over a year later, I have now been able to land tasks for $30 per hour or more.
Earning More
How can you increase your rate?
- Judge a book by its cover
I don’t waste my time applying to every job that interests me anymore. I am selective.
First off, I only look for jobs that pay hourly and that look like they will be a long-term deal. It’s not worth it to take on tasks that will be done in less than a couple weeks because you then need to spend more time looking for more work.
Secondly, from the job description, try to guess if the buyer will be in your price range.
Keys I look for:
- well written job description that tells me the buyer has experience and is looking for a quality developer
- location: buyers from North America, Western Europe are generally going to have the ability to pay more than buyers from less developed countries
- previous work: oDesk shows the previous work that the buyer has hired and the rate. If the rate is much lower than yours for a comparable task, move on! Be careful though that you aren’t comparing apples to oranges. Just because someone pays $3/hr for data entry doesn’t mean they are looking to pay that for a developer
- Keep Moving Up
Finally, move up from tasks that are too competitive. Tasks that have too much competition will have a ceiling on how much someone will pay no matter how good you are. For example, I did a number of tasks converting PSD image files into valid XHTML/CSS code. After a while I realised that no matter how well you do the job, it will be difficult to find anyone willing to pay more than $20/hr for it. If you do a Google search, you will find tons of places that are offering this service. Now, I only take programming tasks and have left behind the CSS tasks.
- Your cover letter is your sales pitch
Buyers probably get around 50 cover letters for each programming job. Stand out by keeping yours brief and to the point. I keep mine at two paragraphs. The first paragraph addresses the buyers specific problem they are looking to solve. I have received jobs just because the cover letter addressed specifically what they were looking for. The second paragraph gives generic info about me such as my availability.
I have posted a job as a buyer looking for a web designer and about 75% of the cover letters were generic. If you address the buyer’s concerns directly, it will definitely put you in the top of the heap.
- Always be applying
This is an open market. You should always be on the lookout for new opportunities. This applies to both employees and the self-employed. If someone is currently paying you $20/hr, then keep applying to jobs but apply at $30/hr (or whatever you feel is a fair rate). It usually takes me about 30 minutes per day to find three interesting jobs and apply to them. If you get an offer at a higher rate, the payoff is definitely worth it. You’ll get a lot of rejections but those don’t matter because you already have work.
- Figure out why you were hired
…and emphasize it on your cover letter. Some people might hire you because of your availability. For me, I always emphasize that I am a native English speaker, I am from Canada and I communicate in normal language - not tech-speak. Many of the people hiring developers on oDesk are not technical. They don’t really know (or care) what jQuery or YUI is. They just want to hire someone who can communicate clearly and get the job done. That’s it! I see so many people with titles like “5 yrs exp Cobol/Lisp/JS/PHP/Perl” and it’s sad. The buyer does not really care and you are wasting a great opportunity to stand out from the crowd. Find out what makes you different and emphasize that. It probably has nothing to do with the programming languages you know.
Pros and Cons
There are ups and downs to working as a freelancer vs being an employee. The first one is in the name: FREElancer. You are free to work how, where and when you want. Feeling sleepy and want to take a nap after a few hours of work? Go right ahead. Want to go to another city for the week and work from there? Just do it. Need to go out during the day and work in the evening? No problem. I’ve done all these.
On the other hand, there are no benefits like you might get at a job. No holidays, no vacation time, employment insurance, health benefits or whatnot. A mistake I made when first setting my rate is not adjusting for that. If you take your pay as an employee, the equivalent as a freelancer should be at least 20% more. Some people will say as high as 100% more.
I recently came across a study which showed that self-employed people do not make as much money as they would if they were an employee, but they are much happier. This correlates to my experience being self-employed vs employed. I may not have as much money but self-employment keeps things interesting. Some weeks I worked 50+ hours, others around 20. For a guy like me who values his free time and can always find things to do, it is a great position to be in.