Want no-BS insights on building a highly profitable freelancing business?
✓ FREE 5 Day Course on Winning Top Paying Clients
✓ Q&A - Send In Your Questions, I Answer Them Here
✓ LIVE Webinars
✓ The Chance to Win a FREE Coaching Call
I guarantee 100% privacy. Your information will not be shared
Freelance engineering and freelance coding are the oldest of the online freelancing gigs. There’s two reasons, a) technical guys are, well, at the forefront of tech, and b) there is usually very little need for “in person” interaction.
Even those team progress updates can be done over Google Hangouts.Image Credit (CC)
Here’s what this article will cover:
- Setting yourself up for freelance software engineering
- Deciding on your best engineering skills and rates
- Finding freelance coding opportunities
- Reaching out to potential clients
- “Rent A Coder” type work to avoid
Setting Yourself Up For Freelance Software Engineering
There isn’t a great deal you need to get started. Here’s what I recommend –
- Get a decent Mac or PC that you enjoy working with. Taking an 11 inch cheap netbook with me for my first 6 months of travelling was an insanely bad idea. I now have a MacBook Air.
- Consider getting a second monitor if you need the screen space. I have a very light and portable USB powered Gechic 2501C HDMI monitor.
- Get an external hard disk for taking backups. I have two Samsung 1TB USB3.0 drives.
- Set up Skype, and/or Slack for communication, and get a decent headset.
- Get familiar with the online tools that your clients might use for collaboration – Basecamp, Trello, Jira, Google Hangouts, etc.
- Get set up on GitHub and learn Git inside and out! Freelance coding collaboration is much more difficult when someone on the team doesn’t know how to use Git properly (that was me not so long ago).
Deciding On Your Best Freelance Coding Skills and Rates
Freelance engineers have a “If I can’t do it, I’ll learn and figure it out” mindset, and while that’s a very important aspect of being a great engineer, it isn’t a great marketing tactic.
As an engineer, I’d be thinking, “I’ll charge $90/hr for specialist embedded hardware work, security testing or network architecture, “$60/hr for Python or C work (because that’s probably the most I can get)”, and maybe “$35/hr if an interesting Ruby project comes along because I’d be slow but I reckon I can learn quickly”.
As a marketer though, I’m looking for the most profitable intersections of my skills, e.g.:
- C or Python development work in the embedded hardware space.
- Embedded systems security
- IoT networking
Without combining skills, I’m just another freelance coder, competing on portfolio and hourly rate.
Don’t go straight for jobs that you “could do”. Go for profitable jobs that suit your skills that you “can do”.
Being a great software engineer is about continuously learning. My very first freelance gig was at $20/hr building a PHP site when I’d never written a line of PHP in my life. Separate the work you’re doing to learn and the work you’re doing that’s most profitable.
As a buyer, when a freelancer responds to a job posting with 20 bullet points of programming languages and technologies, I’m totally turned off. I’ll select the freelancer that gives me 1 bullet point that shows he understands my needs and mindset. The freelancer’s application is a chance to show that you can meet your client’s requirements – not a competition on how good your resume is.Image Credit (CC)
Finding Freelance Software Engineering Opportunities
Here are some of my bookmarked sites in no particular order:
Work In Startups – There’s an interesting mix of opportunities here. You’ll often get to take ownership of a larger part of the engineering side of the project in a startup/smaller firm. Note that a lot of the opportunities here involve working for equity only, or for low rates until the startup “makes it”.
Angel.co Startup Jobs – Some very well paying opportunities for top companies, and a good mix of freelance and remote work is also available.
Stack Overflow – Some great companies advertise here and rates are generally good.
We Work Remotely – Generally decent companies offering good renumeration for remote/contract work.
AuthenticJobs – More great contract & remote opportunities.
LaraJobs – Some great opportunities for Laravel coders
TopTal – Rigorous application process and high paying clients. I actually applied for TopTal as the idea of a regular stream of good opportunities was obviously very appealing. I had a brief 10 minute Skype chat, presumably to check that I was a human being and could communicate clearly. I then got sent a link to a set of timed algorithm challenges. I completed the first one, looked at the others and just closed the window – sent them an email thanking them for their time but that this wasn’t for me. The coding algorithm challenges are more degree level computer science class type challenges, and not remotely relevant to the type of work I do or was looking for.
Working Nomads – Great listing of remote digital opportunities.
Upwork – Upwork gets a lot of stick for being overrun with spammy “bottom of the barrel” offshore freelancers. In my opinion, 95% of that is deserved. That said, there are a few gems there and I’ve won two great clients paying top rates for embedded hardware development in the last 3 months through oDesk.
Avoid “Rent A Coder” Work
Avoid being hired as an odd-job guy on an existing project. It’s consistently the worst paying and troublesome type of work.
The most horrible projects to take on are ones that the client says are 90% complete but have a few new features to add and bugs to fix.
- The previous freelancer(s) walked away leaving the project 90% complete. Whatever the reason, this is a cause for concern.
- The code is almost guaranteed to be a poor tangled mess.
- What looks like a simple bug fix to the client (that he’s also not expecting to pay a whole lot for) can cascade problems throughout the project that then take even more debugging and untangling to get to the bottom of.
If a potential client approaches me looking for an odd-job guy, I’ll usually quote significantly higher than I would otherwise.
Reaching Out to Potential Clients
The client might be hiring for a freelance coder, but what he’s really saying is, “I have a problem and I’m looking for a solution.” Don’t sell yourself on your years of coding experience, how many lines of code you can write per minute or how many great projects use your code. The client doesn’t usually care. Read between the lines, find out who he is, what his business is about, and how you can add value.
Take your client’s problem, and phrase your response to include:
- An understanding of the client’s business and his problem
- The ways you can solve that problem (now including any experience or skills that address that)
- The ways that you can add additional value beyond solving the stated problem
- Something to pacify the client’s fears (broken deadlines, overcharging, poor work, dumping the project half way through)
- Why you are uniquely placed to address the client’s needs
How I Judge Freelance Engineering Opportunities
I approach an opportunity with an open mind. Sure, I know that clients from some countries are in general going to be paying significantly less than those from others, but setting that aside, I try and work out a rough score, something along the lines of…
- I see the possibility of a long term relationship (+3 points)
- I get to work with smart founders and smart members on the team (+3 points)
- The project has funding behind it (+3 points)
- The project has a solid business strategy behind it (+3 points)
- I get to take responsibility for a large part of the technical side of the venture (+2 points)
- I can learn new skills and technologies (+2 points)
- The project is using modern and interesting tech (+2 points)
- I’m excited about the project (+2 points)
- The people on the team are decent, moral and approachable (+2 points)
- The project is in a social area that I feel strongly about (+1 point)
- The client is a one man band that I’m working directly with (-1 point)
- The client doesn’t have a clue what the project involves (-2 points). (Take off another point if he thinks he does)
- There is no strategy or specification for what’s needed (-2 points)
- The client is fixated on budget and/or doesn’t value my time (-3 points)
- The client has a bad attitude, or is a micro manager (-3 points)
- The client has no interest in my expertise and advice, and wants to explain how I should build the project (-3 points)
- The client can’t communicate and expects me to guess/mind read the requirements (-3 points)
A long term relationship with a good client is worth more than 10 high paying one off projects.
And lastly, language! English is my native language. I speak average Spanish but not enough to conduct a professional technical relationship. For that reason, I’m looking for clients that speak English. +1 for a native english speaker, -1 for a broken english speaker. I’m happy as long as we can clearly understand each other. If communication is too difficult though – forget it, it’s never going to work.
Share your experiences and any comments below!