My life as a freelancer
Posted on October 24, 2011 by Paul
In the summer of 2006 a work buddy, George, has told me that I could make some extra money programming on a site named Rent A Coder. I’ve signed up the same day. After losing some time on a project that never started, I lost my interest in “coding for money”. I almost forgot about RAC.
Fast-forward two years, I was a PhD student at a small North American University with a student visa and … nothing else in my pockets. For a few months I was able to make a living from a scholarship until they forgot to pay me for about two months. Oh, the delights of eating only rice for one month and a half … it was terrible and exciting at the same time.
At end of this “dark” period of my life, I decided that I needed to do something to ensure my living for times like these. I’ve always enjoyed programming, my PhD was all about coding numerical methods for CFD (Computational Fluid Dynamics). My problem? I was only knowledgeable of one programming language, Fortran, and only a beginner in C programming. Of course, I was well versed in writing small Bash and awk scripts for processing my numerical data files, but that was all.
I’ve reactivated my Rent A Coder account and I started hunting small programming jobs. My first “job” was a lousy five bucks C project, 5$ for which I’ve worked one week with a demanding client (this is always a good thing for a beginner, a demanding client will make you better by pushing you to implement a robust application). At the end of this week, I was able to deliver my code (some Statistical calculations on huge numerical inputs, a typical input file was about 10-100MB numerical records) and to finish all the exercises from the K&R book :).
I started my C project as a beginner, able to write some simple “Hello World” applications and I ended the week knowing C and being able to deal with large data sets. Of course my C code was basically Fortran translated to C and I did similar work for my PhD project. I was really proficient coding Fortran since 1999 when I took my first programming course.
After this first C project, my client has started to send me C projects on a weekly basis. I was able to charge more and more as each project was slightly more complex (parallel programming on Linux using system libraries) than the anterior one. At the same time I’ve started to tackle a bit of C++.
I’ve learned quickly that my biggest advantage over the other competitors was that I knew my Math well and I was able to combine this knowledge with a capacity to learn a new programming language in a few days. Also I was really motivated to find new projects and I’ve worked really hard for the first year.
The other face of the coin is that, as a beginner, you will compete with coders from different economies that will keep the prices down so you won’t be able to make a living from these projects, at least not for a year or so. The competition is fierce at the entry level. Expect picky clients that will ask you to work hard for 10$ and will always ask more than they’ve mentioned in the project description.
In my second year as a freelancer, I wasn’t able anymore to accept all the work that was send to me, and I’ve started to filter my clients asking for at least 500$ per project. It was a good deal for me, 4-5 projects in a month was a medium salary in Canada. Also, I’ve started to select only interesting projects. No more crappy jobs for me, thanks!
So in 2-3 years I’ve jumped from 5$ per project to about 30-40K per year, I boosted my knowledge of programming languages and I learned my data structures lessons. Also I was up in the first 500 coders (from about 200.000) on RAC. It wasn’t easy, I’ve worked sometimes 8-12 hours per day to finish some project or to learn a new framework.
Now, I have a few private clients for which I work directly and I have plenty of time for following a few projects on my own, like creating a programming blog, writing a Scheme interpreter and coding for Apple Store. I work sporadically on RAC (now vWorker) and only on interesting projects (usually parallel programming and computer graphics). I don’t need to hunt for new projects, usually it suffice to bid on an interesting project and I can start the work. Once you are in the first 100 coders, you basically compete with yourself, with how much you can or you are willing to work.
But most importantly do not forget that freelancing should be only a step in your career as a developer, your target should be to make money from passive incomes (like software that you will sell through Apple Store or directly to your clients) and not to work your entire life for other people’s dreams.