Freelancing: episode 1

Warning: This blogpost has been posted over two years ago. That is a long time in development-world! The story here may not be relevant, complete or secure. Code might not be complete or obsoleted, and even my current vision might have (completely) changed on the subject. So please do read further, but use it with caution.
Posted on 04 Mar 2012
Tagged with: [ freelance

A few months ago, I decided to quit my current job and start with freelancing. Or actually, only the “quit my job” part I knew for sure, on the freelancing part I was still wondering if I should make that step. However, a few month later, I decided to share with Google^WInternet on how I’m currently doing, what things you might face and how I do things. Hopefully, I can convince one or two readers that are still not sure to go for the freelancing gig as well :)

The story so far

So basically what has happened is that a few months ago, I’ve decided to quit my job (see here for the reasons why). Now, it has been for the better part of 10 years probably that people around me ask (or tell me that I need) to start with freelancing. The reason - and the only reason - why I haven’t done so is the fact I’m looking up against trying to sell “myself”. To be honest, I’m not a salesperson, and I don’t want to be. Other things like doing administration, bookkeeping and all the businessy side of things that comes with the job I pretty much don’t mind. I do however, like to have the freedom of deciding what I would do, and how to do it. So I started out with some job interviews to see if there was somewhere else I could find a nice job, and even though I had enough places to go to and interviews to do, there wasn’t really a position in which I saw myself for a long time. So, in the end, I’ve decided to actually try a few months of freelancing to actually see if it was really what I expect it to be.

Now, starting freelancing isn’t really hard to be honest, it’s just making the first step that looks scary, but before I actually started, there are some things I tried to think of. For instance, there are some constraints I placed upon myself, which I think is a good thing:

I know I’m pretty good in what I do, so I want this to show in A) my hourly rate and B) the jobs I take. This means I won’t do your WordPress or Drupal site, even if I get paid a decent amount of money for it since it’s not something I like to do. I don’t see myself so much as a PHP developer (that term is lousy to begin with), but more as somebody who can help you out on consulting and designing your needs (both on the software and infrastructural side of things). I want the jobs that I take to represent this. Now I know, these jobs don’t come by every day, so I have to take in account that if I voluntarily decline 80% of the jobs I get offered, I really need a lot of offers in order to still be able to work continuously. But I think this is a good thing: lowering your standards won’t benefit you (unless you want to be known as a Drupal or WordPress developer, in that case, go for it but be ready to be squeezed out every last euro you make on your hourly rate) and it won’t benefit customers if you are not doing a job you like.

I do not want to travel a lot.
This is important for me. I do have a fiancee / soon-to-be-wife which is more important to me than any job. Meaning, I’d rather work for a little bit less money and be able to work at home or max 30 minutes away, then more money but having to spend 4 hours a day in traffic jams.  Since I’m not living in a “big city” in Holland and lots of job offers I get are at least a 1.5 hour / 2.5 hour drive during rush hour. I probably decline these because of said reason unless arrangements can be made for remote work.

Remote work There are many companies out there that already implement remote work. It’s actually quite easy BUT you must make sure that you have the correct kind of developers. Not everybody can work remotely. For me, remote work means I can get up at 8am, and committing code at 8.05. It also means I can go out whenever I want to do the groceries, do a little bit of work during the evenings and what not. It works for me and the companies I’m currently work for, all work with remote developers. For me, this also opens up a lot of extra possibilities: I don’t have to rely on jobs in my neighborhood, but I can literally do jobs over the whole world (I’m working currently for an American company, where I’m leading / guiding a team of Indians, so I’m not lying when I say literally all over the world). This also mean I can actually afford not taking any job with these conditions.

I want to do what I like I didn’t quit my job to do things I don’t like. If times are hard, maybe, and then even maybe, I would consider on taking those jobs. But the freedom and the risc involved in being your own boss must reflect in the fact that I’m able to decide what I do.

So in all fairness, I’m setting the bar pretty high here, and these posts are here to show you a bit on how this journey goes.

January - March :  head start

So this is the plan: doing the things I like, for the money I want/need, in the environment I want. I’ve decided to start on 1-1-2012, which happens to be the end of my contract.  Now, in all fairness, I do have a head start on most starting freelancers out there. I have my own company since 2004, I worked in there full time for over 4 years, even had some employees so I pretty much know what needs to be done. Also the additional hours in figuring out how to work the business-side have already been made, so that saves a lot of time now which I can focus on finding my first contract.

Tip #1: Don’t panic
If it works in the universe, it works for this too. You probably will be disappointed on many occasions: cool jobs that gets taken by somebody doing it for 1 euro less per hour, people who want everything, but really don’t want to pay a lot of money for it. Customers who want you to do the design - slicing - frontend - backend and the whole infrastructure (preferably in two months). Sometimes you spend a lot of time and effort in trying to get a job which falls trough. That means you might have to start from scratch on finding another job etc. In the end: don’t panic and remember: the costs of acquisition should be calculated in your hourly wages, so in fact you are still getting paid (even though you don’t know yet by who). Acquisition is not easy, but it doesn’t have to be very hard (see tip 3 and 4).

Tip #2: There are always things to do, even if you haven’t got a paid gig.
I’m known to be active in lots of things. And I do mean LOTS. Now normally, I don’t have time to finish up these things but when you are looking for a job, waiting for some feedback, or maybe just doing something completely different for a day (you are entitled to do that you know,.. you are your own boss!), try and spend it on things you like and what can actually benefit you in the long run: write blog posts, learn a new language / framework, help out open source projects. Things like that help you a lot. They can help you spreading your name around which basically is free publicity for you and your comany.

Tip #3: Don’t use recruiters You can spend lots of hours talking to recruiters and they can (and will) promise you the most beautiful things like ponies and rainbows and unicorns. But in the end: they will call you for drupal jobs even when you told them over and over again you don’t do Drupal. Quite frankly, they don’t care about you, or what you will do, as long as they can place you at another company so they can collect their cash. I’ve tried to find jobs through recruiters, but they will never find the jobs you want and even when they do, they don’t want to pay you the amount you like. Everytime I have a recuiter on the phone it’s about how the market has declined (which isn’t), how the hourly ratings have plummeted (which haven’t) and how hard it is to find a good job so you should probably take the first one you can get (which you shouldn’t). However, I don’t mind working through intermediates though (for instance, I do that now), as long as they know what I’m worth, they don’t haggle over my price being to expensive and all the other tricks in the book. These companies are rare, but they are around. Make sure you know them and they know you.

Tip #4: Use and expand your network
I’m mainly focused on PHP, and know a lot of people in the PHP community and they know me. Whenever a cool job opens up, chances are that they will know it first and they will tell me. When I need people, or when I know of a job I can’t/won’t do myself, I probably know one or two others who might be possibly interested in them. I don’t take any money from it like recruiters, I just pass them on in the hope that they will do the same thing. Your network is probably your most precious asset, and expanding it on conferences, meetups and social events is probably worth every cent of it.

So, we are inside month three now, and we are ahead on schedule (so that’s a good thing!) and we already have some job offers to keep me busy until the end of this year (which is really cool). I’ve been offered positions inside some of the companies I did some freelance-work for already (which is a big complement I guess :)), and I did lot of teaching and consultancy. I’ve cleaned up messy code, “made things better” and we are about to set off on setting up a complete new project from scratch together with some other freelance colleagues. So hopefully I can write another post in about 3 months or so talking about what I’ve learned :-)

As always, if you have your own experience, please do share them since I’m always up for some good tips. And in the meantime: happy freelancing!