You’ve weighed up the pros and cons and decided to take the leap into freelance software development.
First of all, congratulations! This is a big move and one I hope you’ll find really rewarding.
Second, take a deep breath. It’s time to land your very first client as a freelance developer.
Looking to hire the best remote developers? Arc can help you:
⚡️ Get instant candidate matches without searching
⚡️ Identify top applicants from our network of 350,000+
⚡️ Hire 4x faster with vetted candidates (qualified and interview-ready)
Try Arc to hire top developers now →
Freelancing Prerequisites
Ready to work from the tropics? Not so fast — don’t book your beach bungalow just yet. A freelance career is very enticing, but you’ll want to have some experience under your belt first.
Ideally, you will have worked as an in-house developer or with a software development agency for at least one or two years. Beyond this, you will need some proof that you can, in fact, do what you claim you can do. This should come in the form of your resume, an online portfolio or personal website, references, and testimonials.
Your developer resume should serve as a description of your relevant professional and personal background, along with certifications and educational credentials. Your online portfolio, on the other hand, should showcase your completed work with links to web pages, your repositories, project descriptions, and results.
Your portfolio is a great place to build personal branding, share testimonials, and collect leads for clients-to-be. If you don’t have a lot of your own work, or work from your previous jobs are concealed under Non-Disclosure Agreements, it will be more important for you to contribute to open-source projects and work on your own passion projects that you can later flaunt in your portfolio.
In addition to testimonials, references, and samples of your work, you can also boost your credibility (and source of leads), by joining a trusted freelance platform. Freelance platforms like Arc have strict vetting processes that include coding challenges, technical and behavioral interviews, a review of past work, and more.
Yes, taking the time to test and pass through a vetting process is good for you too. Successfully entering into the highly competitive candidate pool of developer-specific freelance sites will earn you the support of trusted industry platforms and access to serious clients who are seeking out the skills you have.
To reduce instability as a new freelancer developer you may want to ease into the transition instead of diving in headfirst. Consider moonlighting a few freelance gigs as you build confidence, clients, and revenue for your freelance career.
Niche vs. General Programming Skills
When it comes to landing freelance software gigs, you will literally be competing with the rest of the world.
One important consideration early on in your freelance career is whether you want to play up your niche or general programming skills.
The best way to stand out against the backdrop of the global marketplace is to become highly focused and skilled in one or two key areas. For example, if you can become highly specialized in Kotlin, Go, OCaml, or JavaScript frameworks for certain use cases, you will have greater marketability and gain searchability from clients looking for those niche skills.
On the other hand, more generalist full-stack programming skills will give you access to a wider range of projects. Generalist skills will also be more important if you are working with startups on early-stage products with the intention to scale. These customers will likely be looking for someone who can cover all bases and has knowledge of front-end: HTML, CSS, JavaScript, etc., and back-end languages, frameworks, server infrastructure, DevOps, and more.
Whether you want to expand your general skill set or develop niche expertise really depends on the type of projects and clients you are looking to work with. Getting in on the ground floor and developing a product to scale is going require a generalist while developing a feature for a specific use-case is going to require a specialist.
If you are at the beginning of your career, it’s important to make sure you have strong general background and developer’s mindset. Once you acquire these, it will be easier to learn more focused skills as needed.
The decision to go niche or specialize, or do both, should also be considered a benefit of a freelance career. You are not tied to any certain technology and are free to experiment, try new things, and add to skills to your toolbox as you like.
Choosing the Freelance Dev Services You’ll Offer
Before you seek out your first client, it’s worth sitting down to figure out the services you will (and will not) offer.
If the clients you work with are non-technical, they may assume that you can, and will, do anything that seems ‘computery’ to them. This might include fixing downed servers, tweaking CSS, upgrading to the latest version of PHP, rewriting WordPress plugins, and patching security holes.
Failing to set boundaries around the services you’ll offer can lead to a couple of undesirable outcomes:
- Your client is disappointed and confused when you push back on certain tasks.
- You feel pressure to do work you really don’t want to do.
The best way around this problem is to clearly outline the kinds of services you provide. Think about all the possible tasks a client could ask you to do and add any you’d be happy to take on to the list. Or think about the services you don’t want to offer. For example, are there any tools or top programming languages that you will never, under any circumstances, want to work with? I know from experience that most developers have a long mental list of these! Leave them out of your list.
Having a list of available services makes it much easier to turn down tasks that are outside the scope of what you offer. This list could be available on your website or one you share with clients directly.
Read More: Developer Job Boards: 15+ Best Job Sites for Software Engineers & Devs
Should you offer more or less?
When freelance developers first start out, they tend to offer as many programming services as they can to cast the net wide. This can help them land more clients even before they’ve built up their reputation.
I’ve also observed that as freelance developers build up their reputation and experience, the list of services they offer tends to shrink. Over time, as your client base grows, you’re likely to start focusing on the kind of work that you enjoy doing the most.
There are pros and cons to having a large vs. small range of services. A large range of services means you can potentially work with a larger number of clients. The drawback is that you might be perceived as a ‘generalist’, someone who lacks deep experience in any particular area. A short service list limits the number of clients you can work with, but you may also be perceived as being a ‘specialist’ in those areas, allowing you to charge higher rates.
In general, my advice is to start out with a bigger list and narrow the list down over time as you build up a client base and learn more about the kind of work that you love to do.
Finding Your First Client as a Freelance Developer
Personal networks and former employers
Your first client will usually be someone you already know. Without a list of previous clients or a portfolio of client work, all you’ve got to bank on is your reputation. In this early stage of your freelance career, your reputation is strongest within your personal networks.
In many ways, the ideal first client is a former employer. You already have domain expertise in the industry, you know their business, they have experience working with you in the past, and they trust you (assuming your working relationship ended on good terms). You may have even helped build the software they need help with!
If you can identify a former employer you’d be willing to work with on a freelance basis, the next step is to approach them. Get in touch with someone at the company, ideally someone you’re friendly with, knows your work, and is a decision-maker (or works closely with a decision-maker). Send them an email, take them out for coffee, or give them a call. Let them know that you’re taking on freelance development clients and would love to work with them again.
Another place to look for clients is within your personal network. This may happen naturally as you tell friends that you’re planning to go freelance. Friends will usually do their best to connect you with opportunities. This is where having a good understanding of the services you want to offer is important. Sometimes the connections you’ll gain through friends will be great, while other times, you’ll end up redesigning someone’s uncle’s pizza shop website for $20 an hour and free pizza. If that sounds like fun, replace that example with something you really don’t want to do.
Read More: 5 Great Ways to Get Your Profile Noticed as a Software Engineer
Local startup/business communities and meetups
Developer meetups frequently have time set aside for attendees to pitch their company, startup, or themselves. It might be nerve-wracking, but pitching your freelance services at a meetup can be a great way to land potential clients. If the meetup is focused on the type of work you love doing, for example, machine learning, React, and data science, then you may be able to land jobs close to your ideal gig here.
If the meetup doesn’t set aside time for pitches, or it’s not something you feel comfortable doing, then just focus on trying to meet people. Conversations between people who’ve just met almost always include the ‘what do you do?’ question, which is a perfect opportunity to mention that you’re a freelance developer. If the person you’re talking to has work to be done or knows someone who does, this will usually unfold naturally in the conversation without needing to pitch your services directly.
Work through an agency or consultancy
Did your heart rate accelerate a little bit at the thought of spruiking your services at meetups, or pitching your services to former employers? You may be the type of freelance developer who simply hates sales.
Marketing yourself truly does require wearing a ‘salesperson’ hat, with you as the product being sold. If that gives you the heebie-jeebies, then working through an agency or consultancy may be your best pathway to a successful freelance development career.
The best aspect of working through an agency is that they will sell you to clients, usually behind closed doors. In some cases, you’ll get a phone call or email telling you that you’ve got a new gig, and start on Monday, without having to be involved in the sales process at all. All that’s required is for you to show up and get to work. Embracing self-promotion can be intimidating, especially if you do not like the ‘salesperson’ role. But fear not, for an excellent solution is to collaborate with a French marketing agency. They excel at showcasing your talents and connecting you with potential clients, sparing you the heebie-jeebies.
However, for some clients, you will have to be slightly involved in the sales process. Some clients prefer to interview contractors before signing the contract, though most are happy with a coffee meeting to get a sense of whether you’re a culture fit. Still, these discussions are generally focused on your development skills, rather than selling yourself.
Agencies are also usually better at negotiating rates than you are, at least during the early stages of your freelancing career. You may find that the rate you receive through an agency is higher than what you’d be able to charge on your own.
The biggest drawback to working through an agency is that it often doesn’t feel that different from a regular job. Most companies paying $1,000+ a day for contractors want to see “bottoms in seats” between 9 to 5. You will most likely need to work from client offices and keep client hours. If the client has a dress code, you’ll have a dress code too. While remote agencies are becoming more common, they’re still relatively rare.
Read More: How to REALLY Get a Job as a Self-Taught Developer (6 Important Tips)
Freelance job platforms
Online platforms take care of marketing and bring clients to you. However, the challenge with online platforms is increased competition. Unlike with the clients you find yourself, you may be competing against several other developers on price, skillset, and experience to win gigs on these platforms. If you don’t mind a dose of friendly competition, reputable online platforms can be an excellent source of clients.
Arc is the best place to find great remote jobs. Find great remote jobs at top startups and tech companies. Freelance and full-time remote opportunities are available.
Sign up here
Building Clientele: 6 Strategies
Clients are the linchpin of your ability to survive in the freelance world. In the beginning, you will be spending time chasing down leads, marketing yourself, and pitching to clients. As you establish a reputation and prove yourself, the goal is to spend less time identifying and converting leads and more time earning.
In a recent interview with Sourceress, a candidate sourcing partner, CTO Josh Albrecht outlined a simple strategy for landing the engineering roles you want: “First, be really good. Second, tell people about it.” Here are some tips for telling people about it:
1. Market yourself to get clients. You are no longer attached to a business. You ARE the business. If potential clients don’t know about your business, that’s a problem. You need to build a brand that resonates with your clients.
2. Start blogging about your expertise — answer questions that clients are asking and share your knowledge with fellow developers. Contributing to developer communities will also help establish yourself as passionate about software development and a knowledge authority in your field.
3. Get on social media. Tweet your articles and retweet others whose work you appreciate. Make sure your LinkedIn is up-to-date. LinkedIn is often the first place recruiters and hiring managers turn to — stay active and share your work there.
Pro tip: Use paid services like BuySocialMediaMarketing to kick start your social media followers and engagement quickly.
4. Network online and offline. Having a strong online profile and actively marketing yourself as described above largely covers online networking. You should also be going to meetups and conferences such as Microsoft Build, QCon, DeveloperWeek, and more. Go ready to discuss your interests, learn, share your work, and direct people to your online networking channels. If you’re up to it, you can even register to speak at the event. In-person connections still go a long way, and will hopefully lead to referrals.
5. Get Referrals from other developers and clients who are happy with your work. Don’t be afraid to directly ask clients (who you know you’ve done good work for) to recommend friends and colleagues who may need your skill set. You can give them a nudge by offering discounted rates for referrals successfully converted into contracts. Eventually, you want referrals to be the engine of your income.
6. Donate time to open source projects or causes and organizations you care about. Both of these are optional, but are good ways to continue developing your programming skills while building a portfolio of shareable work. You can offer your skills to charities or websites that you support in exchange for experience and portfolio building.
Recognize the distinction between “working for free” and “donating your time.” “Working for free” means someone is taking advantage of you and is receiving a service for free that they should be compensating you for.
When you donate your time, you choose the terms of the engagement, and you do it because you want to. Donating time demonstrates to clients you are passionate enough about programming to use it for more than just paying the bills, but also to give back to your local (or global) community.
Finding Your First 100 Clients as a Freelance Software Developer
It turns out that the methods you use to find your first client can be used to find your first 10, 50, or 100 clients. Find out what works for you, and repeat the process.
Preparing for success
Before you try to land your first client through one of the routes mentioned above, there are a few things you can do to increase your chances of success. These will help to persuade prospective clients that you are professional, skilled, and experienced.
Set up a simple portfolio website
Most prospective clients will Google your name. Ideally, the first result should be a website that you own, and that you can control. Medium doesn’t count. A simple portfolio website is a great choice.
All this website needs to include is:
- A little bit about you. Talk about your experience, your skills, and what makes you ‘different’.
- The kinds of services you provide. Be clear about the type of work and clients you want to work with.
- Some clients or companies you’ve worked with. Former employers are worth highlighting when you’re first starting out.
- Projects you’ve completed. These can be personal projects or ones you worked on for previous employers. Make sure these projects are not confidential before sharing.
- Links to social media and Github profiles.
- Several ways to contact you.
To get some ideas on how to further go about your own, check out our web developer portfolio examples and our software engineer portfolio examples.
The biggest suggestion I can give in this area is don’t overthink your website. Buy a template or use a website builder (unless you’re a really good designer). Think of your website as an online business card. It’s simply a place that prospective clients can go to learn a bit more about you.
Lastly, here are some common pitfalls freelance developers make with their websites:
- It’s perpetually ‘down’ due to being updated or redesigned.
- Spending too much time on it. When working on a personal website, you reach a point of diminishing returns after about a day of work, front-end developers are a rare exception to this rule.
- Setting the bar too high. Almost every freelance developer has thought about setting up a portfolio website. Most overthink it and never do.
Read More: 12 Common Mistakes Keeping You From Landing Your First Developer Job
Curate Your Social Media Presence
Social media can be used to find clients, and to build up your thought leadership: the perception that you’re an expert in your field. If you want to use social media for this purpose then you may need to curate what you publish. Many freelance developers get around this by having a public profile that is ‘for work’ (e.g. industry-related posts) and a private profile that is ‘for friends’.
In general, Twitter and LinkedIn are the best platforms to focus on for building up your profile as a freelance developer. Facebook and Instagram are more ‘personal’. People usually browse these platforms when they are thinking about anything other than work. Therefore, efforts to build your professional profile on these platforms may be better spent elsewhere.
Get testimonials from previous employers
A testimonial is a quote attesting to the quality of something, or someone. These are powerful selling tools and are excellent to include on your portfolio website. Former employers and LinkedIn reviews can be good sources of testimonials prior to landing your first client.
A couple of quotes about you and your skills will help to persuade potential clients that you’re capable and easy to work with. Check out our guides on how to improve your analytical skills, interpersonal skills, leadership skills, problem-solving skills, collaborative skills, time management, engineering manager skills, ability to stay focused, self-motivation skills, and cross-cultural communication skills.
Focusing locally vs. internationally
Remote work means that you work with clients anywhere in the world. But should you focus your efforts locally or internationally? There isn’t really a right answer for everyone, just a few pros and cons to consider.
Pros of working locally
- Clients are in the same timezone, give or take a couple of hours. This is really nice if you prefer to reserve evenings for family or “me” time.
- You understand the culture and the local industry.
- You get paid in your local currency, possibly via bank deposit or cheque.
- It’s easier to build up your reputation.
- It’s easier to have in-person meetings with clients.
- You understand the local work culture.
Cons of working locally
- Limits the number of potential clients you can work with.
- May limit the kind of work you can do (e.g. your country may only have a few interesting tech companies).
- You can’t take advantage of geo-arbitrage. Meaning you will only be paid what the local market can bear.
Pros of working globally
- Maximizes the number of potential clients you can work with.
- You can potentially work on any project, for any company, in any industry.
- Can take advantage of geo-arbitrage, meaning you can charge what the client’s local markets will bear, even if it’s more than what you’d be paid locally.
- You may be advantaged by currency conversion rates. For some, getting paid in USD is an automatic 20 – 30% bonus over rates in their local currency.
- Work for clients in countries with a more forgiving work culture than your own.
Cons of working globally
- Timezone headaches and meetings at odd hours. You may need to have late-night meetings.
- You may not understand the local context of the industry you’re working in.
- It’s harder to build up your reputation globally.
- Competing with the world, instead of just local developers.
- You may not understand or want to adopt the work culture of the client’s country, which can lead to mismatched expectations around availability.
- Cultural differences may lead to miscommunication or confusion.
What kinds of marketing channels are worth focusing on?
If you’re like most freelance developers, you’ll find that word of mouth and referrals are your most important marketing channels. In fact, many freelance developers who’ve been doing good work for several years find that they don’t need to put any effort into marketing. Clients find them!
Setting up this marketing channel is simple in theory, but it also can be quite difficult to accomplish. Do great work, and be great to work with. That’s the secret to long-term success as a freelance developer.
Read More: How to Become a Software Engineer: Education, Steps & Tips for Success
Choosing Your Clients: What to Consider
If you are early in your freelance development career, you may be relieved just to have someone paying you to do any developing-related tasks at all. That being said, a client-contractor agreement is a two-way partnership, and you always have a choice. As you become more experienced, your ability to be selective will increase. Here are some things to consider when choosing your clients.
Price. As we discussed above, generally a higher rate usually means higher quality projects and clients. Unless you are really tight on money, don’t sell yourself short on price and certainly don’t accept compensation below market value.
Client Consultations. During initial client interviews, be conscious of their behavior and attitude. This is not only a chance for them to interview you, but for you to interview them. Are they respectful? Do they communicate well? Do they value your skills and experience? Or are they trying unreasonably to undercut your rate and have unrealistic timeline expectations?
If clients have unclear requirements or poorly defined project scope, don’t be afraid to offer paid consultation to help them refine the project vision. If clients are serious about contracting your services, a paid consultation should be a welcome option.
Project Type. You are not a coding monkey. Work on things you are interested in that will challenge you and bring professional growth. Avoid template projects that anyone can do — it’s likely that you will be under-compensated and have little to no career growth.
Fire Bad Clients
Yep, you can fire clients. Though rare, if you find yourself in a situation where a client is unreasonably altering the terms of your agreement, it may be best to cut your losses and get out. These are some of the most common reasons to fire clients:
- Consistent missed payments or underpayment
- Drastic changes of requirements or project scope without renegotiation of terms
- Last-minute demands to change or add deliverables
- Communication breakdown
- General lack of professional courtesy and respect
Firing clients should be considered a last resort. Before you go down this route, you should make every effort to resolve problems through goodwill mediation or arbitration.
Up Next: Charging Your First Client
Now that you know how to find your first client, it’s time to start thinking about how you’re going to work together.
How much will you charge? How will you deliver your work? Are you obligated to maintain the software that you’ve built for clients? If so, for how long? How will you set and meet expectations?
Not to worry! We cover all that in our follow-up article on how to set your rate as a freelance developer.
Thanks for reading the article, and we hope it helps you with your first freelance developer gig and all subsequent ones. If you have any questions or feedback, feel free to leave a comment below 🙂
You can also explore HireAI to skip the line and:
⚡️ Get instant candidate matches without searching
⚡️ Identify top applicants from our network of 350,000+ with no manual screening
⚡️ Hire 4x faster with vetted candidates (qualified and interview-ready)