Finding Projects as a Freelance Software Developer

Three years ago aged 45, I started as a freelance software developer in Southern Germany. It were three pretty amazing years. I had paid work for 522.5 days of 750 working days, which amounts to nearly 70% of total working days. My hourly rate was roughly 94 Euros with 8 hours per day. Additionally, I passed on 285 days of work to other developers at a rate of 61 Euros. Despite this success, finding projects still feels a bit like black magic. Sometimes I could have got three projects at the same time. Sometimes I struggled for several months to find the next project. I want to share my experience in finding projects: what worked for me and what didn’t.

There is one thing that hasn’t worked for me at all: that a recruiter finds a project for me. I have been contacted by dozens of recruiters and spent numerous hours answering their calls and emails. The reason for this failure is fairly obvious. Recruiters charge a premium of 15% on top of my hourly rate. If my rate was 87 Euros, recruiters would charge more than 100 Euros to the customers. Customers working with recruiters are unlikely to cross the psychological threshold of 100 Euros, because they are looking for cheap labour. This is corroborated by the fact that the rates of all projects offered to me by recruiters ranged from 65 to 75 Euros. In the long run, I’d be better off with a permanent job at these rates. Nevertheless, a short-term project (not more than three months) at these rates can make sense to bridge some otherwise unpaid downtime.

Another approach is rather unlikely to work either – at least in the short-term. I skimmed job sites like LinkedIn, Xing, StackOverflow and StepStone for jobs with my special skills (HMI development with QML and Qt). Almost all job ads were for permanent positions. Nevertheless, I contacted a person well-placed in that company via LinkedIn or Xing. 80% didn’t respond. 15% said that they don’t work with freelancers on principle. Occasionally, I managed to get an interview. They were certainly impressed by my skills and project portfolio but decided in the end to try it themselves. Again, this makes perfect sense from their side. They are hiring people for permanent positions, because they believe that they can do the projects on their own. There are very few companies who understand that they can save a lot of money down the road if they spend a little more in the beginning. The big majority of companies must fail first to appreciate the value of an expert. So, it is worth checking in with these companies again once or twice a year.

Enough of what’s not working. Let me turn to approaches that worked for me. So far, I got all my projects from people who knew that I would make a difference to their projects. My first project came from my roommate at one of my former companies. My second and third project came from companies with whom I had worked closely at my previous employments. One of these companies hired me through one of their suppliers. This supplier was happy with my work and contracted me for another project. A former colleague of mine – freelancing like me – recommended me to his client. I bumped into him at a developer conference, where both of us gave talks. We had a good chat over lunch and some months later we worked on the same project.

All these people had enough trust in me to make valuable contributions to their projects or to recommend me to other people. They knew me well enough to trust me. It doesn’t matter how many connections I have on LinkedIn or Xing (too many). It only matters how many of my connections trust me enough to bet money on me (very few). When I quit my permanent job three years ago, I had one special reason to look optimistic to my future as a freelancer. During the previous 3.5 years, I had built up a solid network of “trusting” people in my role as a business developer – without losing my edge as a developer. I was pretty sure that I could find business for myself, because I had found good business for others the years before.

Despite my “trusting” network, I had two periods of several months where it looked like I’d never get another project. Both periods occurred after long and exhausting projects. I had simply forgotten to foster my existing “trusting” connections or to build new ones. When these projects ended, I had to cold-start the process of finding the next project. The lesson here is: Keep looking for the next project continuously! Never stop looking!

This gives rise to the question: How do I build new “trusting” connections? The short answer is: I try to make people remember me by providing them useful information, which they would have overlooked otherwise, and ideas, which they – hopefully – didn’t think of themselves. There are many ways to achieve this.

Ideally, other people approach me because they heard of me. I facilitate this by writing regular blog posts and by giving talks about my work. Blog posts are a long-term play. It was only recently after nearly three years that two companies approached me because of some interesting posts. My posts get something like 200 views per month despite sharing them on all the usual social networks. So, they are hardly noticed. My most read posts are those that got picked up by some aggregators – “accidentally”. Nevertheless, writing a blog is essential. My blog is my extended business card and CV. Moreover, I can point potential customers to relevant posts or copy paragraphs from my posts into targeted emails.

Giving talks is an excellent way to get to know people. I can show 50 or even 100 people that I deeply understand their problems and that I can come up with good solutions for their problems. I have 30 to 60 minutes to build trust in my capabilites. Jackpot!

I try to get business cards from the people who come up to me after the talk. If possible, I ask the organiser for the list of attendees. These people are the perfect entry points into their companies. They can introduce me to the right persons inside their company if they are not the right persons themselves. So, I try to follow up with an email or phone call shortly after the talk. I said “try” because I tend to forget this when I am neck deep into a project. Well, I am a developer with all my heart.

Talks worked very well for me. I have found one project because I reconnected with a former colleague of mine at a developer conference and he recommended me to his client. This year I gave two talks at meetups for my special area of expertise in my local town. I got one qualified lead out of it. It didn’t work out, because I wasn’t available immediately. But there is a good chance that it will work out in the future. Also this year, I gave a talk to an organisation of agricultural OEMs. I had done some work for one of the OEMs. This OEM invited me to present my work to the other OEMs in this organisation. I got two qualified leads out of this. I don’t know yet how these pan out. But it is looking good.

I wrote quite a few cold in-mails to people in companies that could benefit from my services. If I was really lucky, I got a response that they are not interested in my services. Normally, I didn’t get any response. If I had met people before or these people introduced me to their colleagues, I almost always got a response. That’s why talks and meetups are such good ways to create a bond of trust with people.

The most important lesson I learned is this: There is some luck (a.k.a. randomisation to developers) involved in finding projects. I have to contact the right person in the right company at the right time with the right idea. Well, that’s a lot of things to get “right”, isn’t it? I can improve my odds by being perseverant. I may contact different people in the same company at different times or the same person multiple times with different ideas or information. The important thing is: Never give up! Try again!

Finally, I want to thank my customers for three amazing and succesful years.