At first I was signed up on freelancer.com as well and did several ~$150 contracts where I could bid/get picked/do the work/get paid practically the same day, which helped my psyche. I also did a relatively large project on elance.com but unfortunately didn't get paid for it due to disputes over milestones (the customer kept adding to the to do list), which is what led me to the escrow on odesk.com. I did a few fixed rate contracts but found my time management skills were not exactly stellar so switched to hourly for a while and found some peace knowing I was getting paid for my time like a regular job. Once I got back in the swing of things, I tended to prefer fixed rate again for the freedom it provides.
For odesk.com, I put a couple of pics in my portfolio, got a decent score on a skills test, and had some credentials in my education and employment history. But ya, at first I was not getting any invites and was bidding on several contracts at once without any bites. On the surface, a lot of the bidders look very experienced and I just couldn’t see how to compete with them. I guess what changed is that I stumbled onto some contracts where the client was frustrated with the quality of previous work, and I took the plunge and cleaned up their apps for them. It was an eye opener because I saw the kinds of tradeoffs that are made under low budgets. It wasn’t that any individual aspect of the code was bad, but more that it was a hodgepodge of different approaches all mashed together, that broke the don’t repeat yourself (DRY) principal, had no separation of logic and interface, was full of memory leaks, just on and on. The code had been written overseas for a really low rate and so several people had been banging away on it just trying to get it done. It was kind of remarkable, in a way, but not the kind of code that could be easily reused. So it hit me that the reason a high hourly rate is worth it is that a client can either choose to pay a team to follow good coding practices (which costs time = money) or pay an experienced developer to do it and avoid the broken telephone game. There really is no free lunch, and I think that clients understand that before developers do. So eventually I threw up my hands, realized I couldn’t fight the laws of economics, and “reluctantly” raised my hourly rate. I tried $30/hr for quite a while because that’s the overtime rate for a typical $20/hr programming job in Idaho and I don’t think a contractor should bid below 1.5 times the salary they desire (due to down time etc). So your contracting rate will be some multiple of the going hourly rate in your location. I also stopped being anxious about it, because I knew what the work entailed, so I wrote my bids in a conversational tone, just saying roughly what would be involved and not making any huge promises, and even saying where complications might come up, allowing for contingiences. That worked pretty well and I started getting more hours in and receiving invites from clients that weren’t looking for bargain basement code. It was kind of weird though to be charging more but not seeing it in my bank account, and I was having a lot of lean months. I hadn’t really factored in the hours I spent mulling over the code in my subconscious. So I came to terms with the fact that I was having trouble getting in more than about 4-6 billable hours per day, even though I felt like I was working all of the time. So I went ahead and just accepted that I’d average 25 hours per week and raised my rate again to ~$50/hr to account for the research I inevitably did but wasn’t charging for directly. I found that it alleviated a lot of the dread I was feeling when I thought about getting started working each day. For me, it was never about the work, but battling my own tendency towards distraction and procrastination. That was the point where I started getting more interesting contracts that were actually a pleasure to work on. I had been in fight or flight mode for so long that when the survival instinct died down, coding seemed to feel like a natural thing to do again and it was much easier to get in the zone. It was like picking up a good book after not reading for a few years. It had never occurred to me that clients had been going through this exact scenario in reverse thousands of times around the world, had felt frustrated and arrived in a similar place.
I really wish someone could have told me all of this, but I probably wouldn’t have heard it anyway. And in fairness, I made a lot of mistakes, for example after my six month contract last year at a higher rate, I went back down to $30/hr thinking that I had to do that to get seen. It wasn’t the case at all though, and trying to beat the laws of physics just set me back again. So I went back to my current rate and things have been good. At some point I will probably raise my rate again because I’m noticing that the gun.io contracts are priced higher than I’ve been charging (probably due to location) and I need to plan for the future, having a family etc. Also writing this out now, it sounds a little out there, so I want to emphasize that it’s just the same programming any of us have been doing. I spend 80% of my time scouring the web for the answers, mostly on stack overflow, and 20% of my time actually typing. I normally accomplish one item on my todo list per day, maybe two or three if they are small. And I’ve come to terms with the fact that any estimate I make must be tripled, so that what I think will take two weeks will actually take six. That’s been a bit of a blessing in disguise though, because I know that to actually finish something in two weeks, it means I can’t write much code. It puts the emphasis on finding open source projects that do what’s needed, or wiring up the logic in Interface Builder (finding whatever run of the mill solution works with Apple’s human interface guidelines, instead of trying to code around the issue). Also I keep a large notes file, for example tips like “~/Library/MobileDevice/Provisioning Profiles” contains Xcode’s provisioning profiles, so when I’m using a client’s developer credentials I can trash mine and not spending hours trying to get things working that should already work. If you can get to a good setup and know that you can deliver, it makes it a lot easier to bid. So go ahead and try for some smaller/easier contracts at first and if you find you are finishing ahead of schedule, spend the extra time making it top notch for the client. Someone might hear about it through the grapevine and look you up. It helped me a lot to stop thinking about competing with other contractors, or even just satisfying the client, but instead imagine the end user and what they will get out of the work. I think that’s about it, but I wouldn’t want to leave out the fact that having a cool game in my profile and a few lets just say “interesting” blog posts probably helped as much as anything. Those are somewhat based on luck though and wouldn’t be much to talk about without the fundamentals. Also follow your nose a bit if you know someone in the business. I’m a bit isolated out here and I could have saved a lot of time if I lived in more of a tech city. If you do your homework and also put yourself out there, things will work out.