Race to the top
Generally, when you read about freelancers in blog and discussions - many, if not most - participate in the Great Race To the Bottom; best illustrated by sites like Freelancer, Upwork and last but not to forget: Fiverr - the global online marketplace offering tasks and services, beginning at a cost of US$5 per job performed....
I have no intention to sell my code for pennies. When I become commercially obsolete, I'll write Open Source code in the nights and play my gitar outside the mall in the day. That will pay just as much money, and it will be a lot more fun! In the mean time - lets ask the most relevant question for new freelancers: Where do I find myself some nice, paying clients ?
The easiest way is of course to get them from your network. That works well for a lot of professions. Developers on the other hand, and especially the better among us, are generally not very good at networking. Code is so much more interesting than small talks! So in order to find clients, one way is to hunt down the agencies that look for talent.
I have been talking with two such agencies recently, Toptal and Upstack. Both seems professional, and both seems to agree that top programmers do not work for pennies.
I have also been in touch with a few traditional recruitment agencies (that contacted me on Linkedin). The pipeline for new meat there is to take some standardized coding test, like the ones on Codility, and then give you an offer based on the result of that test. That is a cheap and "scientific" way to screen developers, but it will favor newly educated "good at school" candidates over experienced ones. The new candidates will simply have the math and common algorithms used in these tests fresh in memory.
The recruitment process at Toptal (and probably also Upstack) is confidential. I can however disclose that it is much more thorough - based on technical interviews, and evaluation of your actual code, in addition to the (obligatory) tests.
Just to illustrate how much these tests count when you compete for top positions, I will tell you the story about the only one I did.
Yours truly, and a handful of other senior C++ developers, were applying for some contractor work at one of the largest software companies in the world. We had passed all the interviews, and just needed to pass one of these obligatory coding tests. It was done in a classroom at their field-office in some capital in Europe. We got one hour to solve a simple "walk-the-nodes" challenge (with some constraints) in a binary tree. I had never seen a task like this before, and I was puzzled. I thought I solved the problem and wrote some code that seemed to do the job. This was just after C++11 was out, and I used some of the C++11 features supported by the compiler we were offered. The manager responsible for the hiring called me the next day and told me that my algorithm was wrong, while my code was exceptional. Could I please fix the bug and re-submit the test on email? Please? Well I did, and a year later I was the senior developer responsible for the C++ events framework and database libraries in their core server product.
Toptal's idea is to offer the top 3% of the developers to their clients. Upstack is going for the top 1%. This is a raise to the top! Sign me up, please!
If you are really good at what you do, serious about your work, and you have bills to pay, it's obviously doable to find customers that are willing to pay for quality. The best way is of course to find your own clients - but that is really hard. It's also resource-intensive both for you and for the potential clients that opt-in to listen to you. In many cases, it's better to leave the marketing and sales job to an agency, and just join their pool of top talent.
There are millions of cheap Java programmers in Asia, willing to code almost for free. I see no reason what so ever to compete with them at any sport, except for the race to the top :)