Spare-time freelancing for the full-time developer
For the past 3 years, I’ve been dipping my toe into the shallow end of freelance software developing. In other words, I’ve been working a full-time development job as well as freelancing in my evenings and weekends. While the journey has been a bit bumpy at times, it’s been a massively rewarding experience that I feel has pushed me forward leaps and bounds.
Doing part-time freelancing is essentially the same as taking on a second job and should be treated as such, but if you’re smart it can become a flexible tool that can work around you. I’m lucky that my current circumstances afford me the privilege to do it:
- I have a full-time job (currently at Residently, we’re hiring btw!) that has a healthy attitude to flexibility, out-of-hours endeavours and work-life balance.
- I live close to a city with a good digital industry.
- I don’t have dependents to care for.
- I’m in good health.
If I didn’t, it’d be much harder to freelance.
Why do it? #
So why would anyone want to do it on top of their day job? Well…
Level up your non-technical skills #
Even the briefest freelancing experience throws you into topics you’re rarely exposed to in a development position:
- Business - Negotiating, professional communication, requirements gathering, managing scope, managing feedback, working with non-technical people, time management. The kind of skills that technical folk need more and more the higher they go.
- Finances - Book-keeping, tax returns, contracts, indemnity, invoices, chasing up said invoices. All pretty boring stuff, but still useful wherever you go and whatever you do.
- Marketing - Clients rarely just stumble onto your door step. You need to learn a bit about how to market your skills to get them onboard.
For me, this is one of the key reasons to dabble with freelancing in your spare time. When punching up into more senior roles, it’s often peoples’ non-technical skills that hold them back. Leveling up these definitely puts you in a stronger position in your full-time position.
Bump your saving power #
If you’re saving up for something special, or paying for an unexpected bill, having the option of doing a bit of freelancing to bolster your income can be really useful. If tomorrow you find the house of your dreams, a bit more cash for a mortgage deposit can go a long way to reducing your interest.
I’d say if money is your sole motivation, there’s more long-term friendly approaches you can take. Salary negotiation is one option, moving to a higher-paid position elsewhere is another. But not everyone may want to, or be in a position to leave their job. There’s often many factors involved, such as how much you’re learning and developing, commute time, flexibility, etc.
If neither of the above are appropriate for your circumstances, I’d say freelancing is a valid alternative for putting some cash aside.
Create a runway to full-time freelancing #
If you’re reluctant to take the plunge into the deep-end and go full-time freelancing straight from employment, trying it out in your spare time may be better.
It gives you time to accumulate a handful of clients you can rely on for work whilst you get started full-time. Having no income for the first few weeks whilst you scramble for work can be a scary prospect. Much better to have that runway to ease into it with.
It also gives you an opportunity to see if freelancing is for you. Not everyone enjoys managing their own time and setting their own deadlines. Some people like that work is during work hours and when they clock out for the day, it’s their time. Freelancing hours can sometimes gets messy.
Experience how different development teams work #
There’s a good chance that some of your clients will have their own development teams that you’ll be working closely with. These situations can be super useful for seeing how other teams operate.
You may notice how awesome their CI pipeline is, or how great their approach to agile is. Conversely, you may notice areas for improvement and things that may cause issues. All good knowledge that you can:
- Feedback to your client with (making them happier).
- Introduce to your full-time development team (making you and them happier).
Getting started #
So let’s say you’ve decided you want to try out freelancing in your spare time. What are the best ways to get started?
Double check with your employer #
Before you start investing time, it’s worth confirming with your employer that they’re comfortable with you freelancing in your free time. Some employment contracts will flat-out disallow it, some might not mention it, some might permit it. If you’re unsure, double check with your boss. Remember it’s your responsibility to prevent it from affecting your full-time duties.
Get your name online #
Having an online presence is a quick and passive way of getting client leads. Having somewhere on the internet that companies looking for someone with your set of skills can find you is key.
At minimum, I’d say get a Twitter account sorted with a bio that mentions you’re freelancing. I was surprised how many digital people make use of Twitter’s advanced search features to hunt for freelancers.
I’ve been on LinkedIn for a while, but haven’t found it great for leads, but this may be down to my lack of engagement with it. I’ve heard positive things from fellow freelancers.
A personal website containing relevant keywords and a way for potential clients to reach you is worth setting up. Basic things worth clearly mentioning are “freelancer/freelancing”, “developer/engineer/programmer”. How you market the languages and stacks you know can be tricky. Presenting yourself as a generalist problem solver casts a wide net and makes you less of a commodity. However, sometimes specialising towards a niche set of technologies can be more attractive for clients who have a specific problem. Definitely experiment with this and see what works for you.
Turn those cold enquiries into leads #
To be a developer is to endure the daily slew of emails and LinkedIn requests from recruiters. Most of them are time wasters, but I’d definitely pay attention to when companies contact you directly. If you’re not looking to move, engage with them and see what problems they’re trying to solve. You’d be surprised how many of these enquiries can be converted into freelancing work.
Meetups and user groups #
Meetups and user groups are a common stalking ground for companies trying to fill development positions. Like mentioned above, engaging with people and understanding their problems presents good opportunities to help them. Doing a hard sell can be a put off for some, so focusing on just helping people is a good way of starting working relationships. Something as simple as “If you’re having trouble with this, maybe try foo or look into bar” could lead to something 6 months down the line.
Make the most of your colleagues #
If you’re employed full-time, chances are you’ll be surrounded by a wealth of digital people who may have dabbled with freelancing; put them to work!
My first gig came from a designer friend who knew I was on the look out for work. He had a client that needed a WordPress website putting together. I said of course, despite never making a WordPress site before. 😄
Just a casual mention when chatting around at the water cooler can be enough to get it in your colleagues’ minds.
Figure out how much to charge #
How much you charge your clients is a huge subject and not one I’d call myself an expert in. However, here’s some tips from my experiences starting out:
- You’re probably not charging enough. Most new freelancers set their day rates very close to their per-day employment earnings. Depending on where in the world you work, this is waaaaaay lower than what you’re worth as a freelancer. If you feel your rate is too high, it can be really uncomfortable giving a potential client the figure, but you’ll be surprised at what companies are happy with. If it is in fact too high, there’s always room for negotiation in these conversations.
- Get a feel for how much comparable freelancers are charging in your area. Talk to people, maybe freelancers or recruiters you know. Do a few searches for freelance job listings, some of the better marketplace websites will include the rates clients are willing to pay.
Tips and advice #
Here are a few lessons I’ve learnt over the years that might be useful to you:
Remote work is a must #
If you’re on standard working hours as part of your employment or you live out of town, you’ll definitely find it tricky spending any time whatsoever at your client’s offices. Therefore, being able to work remotely with your clients is a must.
Some companies prefer freelancers to work from their offices and interact directly with their in-house teams. This isn’t practical for spare-timers, so when approached by these kind of clients it’s always best to be upfront about your situation. It may turn off some people, but I’ve found a lot are comfortable with it, particularly now that working from home has become common place. Companies are now better structured to handle communicating asynchronously across timezones.
Also, don’t underestimate the value that a developer working evening and weekends brings versus one who works standard hours. A product owner can spec out a feature or enhancement, hand it over to you at the end of the day and return to find it done when they arrive at their desk the next day.
Avoid hard deadlines #
If there’s one thing that’ll stop you freelancing, it’s burnout. Working too much to meet deadlines will invariably eat up all of your free time, leave you frazzled and hurt your ability to do your full-time job.
To combat this, always favour clients who don’t work to hard deadlines. Teams that work in sprints or to a continuous delivery methodology usually avoid deadlines that are set in stone and are better equipped to bring in a freelancer to pick up the slack.
Hitting this client sweet spot will make your freelancing experience soooo much better, your happiness and mental health will reap the rewards.
Charging for time spent over fixed cost projects #
Clients who favour deadlines go hand in hand with estimates (often what’s used to set deadline dates) and fixed cost projects. “Fixed cost” projects are generally ones where you agree with your client how much a chunk of work will cost them beforehand (usually a function of how long it’ll take you) and regardless of how much time you actually spend on it, that’s how much they’ll pay you.
It puts a lot of pressure and difficult questions on you, the freelancer, and establishes a combative, uncollaborative relationship with your client that becomes more about ticking boxes than it does about producing value. It usually exists in a world where the client doesn’t trust the freelancer, or the client’s customer insists on working on a fixed cost basis.
I’ve found charging for how much time you spend on a project to be way better. There’s more collaboration, unreliable estimates are done away with and questions of cost, timing and priority are shared by both parties. The freelancer doesn’t need to worry about under-estimating work and the client doesn’t need to worry about estimates being over-inflated by the freelancer to cover the risk of under-estimating.
You won’t be able to convice everyone that it’s the best way forward, very often established company processes take precendence over what some random freelancer prefers. But if it’s an option, I’d recommend charging for time spent.
Never take holidays to cover your freelancing #
If you’re ever seriously considering using your full-time holiday allowance to keep on top of your clients, you’re definitely biting off more than you can chew and are headed straight for burnout town.
Talk to your client, figure out something more realistic. Most will be accommodating, especially if you’ve got a good relationship. They don’t want you dropping off the face of the Earth because you’re at the end of your tether. Come to an agreement that’s sustainable for both sides.
Retainers are 👌 #
Retainers are essentially when a client promises to pay a freelancer every month/week/etc in exchange for blocking out dedicated time for them. They’re ideal for spare-timers; small, regular, manageable bits of work. Finding availability over the span of a month or week is much easier.
Always push for retainers if you can get them.
Try to own your client relationship #
I’ve always tried to avoid finding clients through intermediaries. Websites like Upwork tend to “own” the relationships and hold the power; there’s some bad war stories out there. They can be good for getting a few jobs under your belt, but you’ll find yourself competing with people around the world, many with significantly lower living costs. You go from being a real person with specialist knowledge to a commodity that can be swapped out at the click of a button.
Also, by working directly with your clients you avoid broker fees which on top of taxes can take a big bite of your take-home amount.
Listen to freelancing podcasts #
There are a bunch of great podcasts to learn more about freelancing, my favourites are Brennan Dunn’s Double Your Freelancing and Matt Inglot’s The Freelancers’ Show. They cover a loooot of topics so I’d probably say pick and choose the ones that interest you. If you find them useful and have the time, I’d recommend going through all of them. Topics you may have initially overlooked or not really understood can sometimes transform how you approach your freelancing.
Stress can be a friend and foe #
When it comes to freelancing, and probably to work in general, you should recognise when you feel stressed.
Occasionally, stress can be a good thing, though it might not feel like it at the time. It can tell you that you’re pushing yourself out of your comfort zone, into unknown territory. Learning new skills, experiencing new things, meeting new people.
But it can tell you you’re taking on too much, or the wrong kind of work. Listen to it and adjust how your work lest you fall victim to burnout.
Don’t let other aspects of your life suffer #
Most importantly, don’t put your life on hold to do it. Accumulating money and professional skills doesn’t compare to hobbies and time with friends and family. Always put it behind the special things in life.
Hi, I'm Joe Forshaw.
I'm a Freelance Software Developer based in Manchester, UK.
For news about my posts and things I'm working on, signup below or follow me on Twitter.