Typical Programmer

A glittering performance of rare perception

Popular articles
All articles

About me
Hire me

How to start freelancing and get clients

01 May 2017

I get asked how to start freelancing and get clients more than any other question, so I’m going to give away all of the techniques and secrets and gotchas I’ve learned as a freelancer and as a manager/customer hiring freelancers.

I’m not selling anything, there’s no eBook or course to buy. This article is long because there’s no tl;dr version. If you are serious about freelancing you have to put in significant time and effort, there’s no shortcut. I’m writing about freelancing as a programmer and software developer (and sometimes system admin) because that’s what I do, but at least some of this information may be useful to freelancers in other fields.

If you don’t plan to freelance but want to find a full-time or part-time job, or a job that allows you to work remotely, some of this information may apply.

I want to make the distinction between building a freelance practice as a solo freelancer versus freelancing as a temporary employee. Lots of programmers fill slots in development projects and teams as temporary contractors (called 1099 employees in the USA). Not everything in this article applies to the temporary employee jobs. There’s nothing wrong with those jobs and in fact they are a good way to develop skills and work with people you might get work from later. If a company is looking to fill out a team they may only care that you know Ruby on Rails and React, because they have managers and team leads and senior developers who will assign and review your work. My very first programming job, at Nike in 1979, was that kind of project. They didn’t want to bring on 60 employees, most of whom would wash out or leave in a month or two anyway, so they hired a bunch of contractors, put them in a mentored sink or swim environment, and kept those who could produce. Some of this article may be useful for people looking for temporary contracting work, part-time employment, working for contract firms (aka “body shops”), or doing remote temporary jobs. I just don’t want to get a lot of comments like “I went to a bootcamp for six months with no prior programming experience and got a contract job based on that.” I know that happens, nothing wrong with it, but that’s not the kind of freelancing I’m writing about. What I’m describing is often called consulting.

What is freelancing?

Freelancing is a form of self-employment, also called contracting or consulting.

Freelancers are not employees, they contract with clients (also called customers) for specific tasks or projects. Freelancers can have more than one client at a time. In general freelancers are responsible for their own equipment and tools, education, work environment, taxes, health insurance, etc., though the details vary by nationality and country.

Freelance engagements are usually short-term and for some defined set of tasks. Some freelance engagements can go on for a long time, and some freelancers grow into trusted and important roles with their clients. I’ve had freelance jobs last a few days, and I’ve had jobs that have lasted ten years.

How do I get started freelancing?

You need to have marketable skills you can sell: programming, design, writing, system administration, etc. You can learn and develop skills after you’ve started freelancing, but if you are starting out with few or no marketable skills and little practical experience you’re probably going to have a hard time getting started. Most successful freelancers have years of experience.

By marketable skill I mean an ability to do something that has value to your potential clients. Having a degree or knowing a programming language is not a marketable skill in itself as a freelancer (it might be if you are looking for a job as an employee). Clients pay for solutions to business problems and added value. Period. No client will ever tell you they need 2,000 more lines of Javascript by next month. For your clients the best indicators of your skill come down to:

  • Someone they trust tells them you are reliable and have the necessary skills.
  • You can show that you’ve solved similar problems before.
  • You have lots of experience in their business domain, or something related.

Whatever you think of as skills now – programming languages, frameworks, operating systems, etc. are not skills your clients actually pay for. All they care about is how you can help them with whatever problems their business faces. They won’t always present their problem in those terms – it’s part of the job to identify business problems, gather and organize requirements, and come up with solutions.

Clients expect freelancers to produce something of value immediately – you have to hit the ground running. There’s no onboarding or probation period. If you don’t know what you’re doing right away you are wasting the client’s time, and your own, and no one is going to pay you to get up to speed for very long. Be honest with yourself and your actual skills and competency as your clients will perceive you.

The two main requirements – that you have marketable skills and that you can solve actual problems and add value immediately – imply that you should identify some niches to specialize in. “PHP programmer” is not a niche or specialty. Think in terms of what businesses need. Example niches (from my own experience):

  • System support for small law offices
  • PCI compliance consultant
  • WordPress web site scaling and security
  • Logistics and inventory control software
  • PR1ME/Information minicomputer 2x - 4x performance improvement guaranteed

My first consulting niche, back in the early 1980s, was performance improvement for PR1ME/Information minicomputers. Back then companies usually had one or a few large vendors supplying all of their hardware and software, and they would get tied to a vendor, like PR1ME (long since out of busines). I figured out some disk drive configuration tricks at my full-time job and thought I could sell what I had learned to other companies using PR1ME minicomputers. That niche and the follow-on work we learned about was big enough to support me and my business partner for several years.

Identifying a niche doesn’t mean you are constrained to one narrow field of work or clients. It’s a way to get in the door. Once a client trusts you and you’ve done good work for them they will talk to you about other things you can do for them. Don’t limit your options by focusing too narrowly, and don’t be afraid to work outside of your niche.

The rest is pretty simple. I’m a US citizen so I only know about the nuts and bolts of taxes and so on as an American. It’s up to you to figure out setting up an appropriate business entity (sole proprietor works for most people), your taxes, insurance, work environment, equipment, etc. You will find plenty of articles online, books, companies telling you to set up an LLC or corporation, spend time with complicated bookkeeping and accounting, to retain an attorney to write contracts. You will find seminars and companies selling startup and support services to new businesses. You don’t need any of that stuff to get started – those are problems of scale you don’t have yet. Concentrate on your marketable skills and getting clients at first, worry about looking like a “real business” and hiring accountants and lawyers when you actually have those problems. I’ve been a sole proprietor for over ten years and the only trappings of a business I bother with are my web site and some cards I designed and ordered online.

Greg Jorgensen business card

How do I get marketable skills?

The best way to learn a skill is by doing, preferably in a real-world situation. Programming in Ruby on a real e-commerce system is better than doing side projects with Ruby, or reading a book or taking an online course about Ruby. I read comments from programmers all the time saying they learned a new language in a week from an online course, or asking which books to read to learn more languages. It’s hard to translate that kind of learning into a freelance gig, because the potential client’s problem is not lack of Ruby code, it’s that their e-commerce system is not calculating shipping rates correctly, and it happens to be written in Ruby.

I’m not saying you shouldn’t study and learn new things – I read books and take online courses too. I’m saying that books and classes aren’t sufficient to develop a marketable skill you can confidently sell to clients. The traditional path for freelancers was years of full-time employment. Now there are open-source projects anyone can get involved with, working with more experienced programmers on something with actual users.

I think a lot of programmers – especially inexperienced programmers – have the idea that learning a language or framework is the hard part. Finishing a Udemy course in Ruby on Rails is not 90% of the way there, it’s more like 10%. Mastering any technical skill is hard and takes years of real practice – see Teach Yourself Programming in Ten Years. And even if you have mastered (for example) Ruby on Rails, you still don’t have a skill you can market as a freelancer.

If you can’t list your marketable skills in a way that doesn’t look like a résumé/CV – a list of languages and frameworks and tools – think about the actual work you’ve done and what business value you added, what accomplishments you can use to communicate your skills and expertise, and list those instead.

Skills Marketable skills
4 years using Snap-On tools Expert at diagnosing and fixing BMW and Audi mechanical problems
3 years PHP with Laravel Fixed/enhanced e-commerce systems including credit card sales, taxes, freight/shipping for six successful companies.
Ubuntu 14.04, 16.04 Reliable Linux/Unix system administration including security, upgrades, migrations, and automation.
Can ride BMW R90s, Kawasaki Z1000, others Three-time AMA Superbike champion, founder of CLASS motorcycle riding school.

There’s no shortcut to developing marketable skills. You don’t necessarily have to spend ten years in a cubicle farm, but you do need some actual skills and the ability to present and sell yourself to potential clients. And you have to deliver. If you can deliver no one will care where you went to school or how you learned Ruby. I think programmers and software developers are especially prone to pigeonholing themselves and focusing attention on languages and frameworks. I see résumés/CVs all the time that leave no impression of what business domains the person might know about, or what they’ve actually accomplished. You may be able to land an entry-level job with that but if you try to freelance you’re going to lose to experienced people, and you’re going to disappoint your customers and maybe damage your reputation.

I only want to do sexy fun work

I hear this a lot from programmers. The work is out there but they are holding out for a sexy startup gig, or they only want to do something they think is fun and personally fulfilling. I didn’t have this luxury when I was a young programmer (I started in big enterprises where you didn’t get much choice), and now I’ve outgrown the idea that my job and work have to be the main source of fun and satisfaction in my life. I like solving problems, having happy clients, learning about different businesses, delivering more than I promised, and getting referrals. I don’t really care all that much about working with the language or framework of the month. I mainly do maintenance work on legacy and abandoned code, some of it fairly old, some of it new (developers moved on to something more fun). Plenty of programmers turn up their noses at that kind of work. I’m not going to tell anyone to suck it up and do the work, but I will suggest that as a new freelancer trying to build up a client base, contacts, and skills you might want to take on things that aren’t so fun. Learning to read and work with and fix someone else’s code is a great marketable skill. It’s also easier to measure and show the value you add to your clients. I wrote more about this in The joys of maintenance programming.

I don’t want to push maintenance work on everyone. New development can be more fun, and some old code is terrible to work with. But consider that around 75% of new software development projects fail or never go live, and the process can be stressful and frustrating. I think the percentage of failures is even higher if the team and managers are inexperienced and/or don’t understand the business domain. You are much more likely to end up in conflict with your client with a green fields new development project, and more likely to end up holding the bag with a big unpaid bill. If you are working with a functioning system that has some problems you have a better framework to work with, the tasks will be better-defined, results more immediate. About half of the projects I’ve had in the last ten years were green fields fiascos abandoned by the original developers after conflict over money and schedule with the client. Read The Mythical Man-Month by Fred Brooks for everything you need to know about green fields development.

How do I find clients?

Finding clients is what beginning freelancers fear the most, especially software/technical freelancers. It requires the people skills and sales tactics that many programmers find difficult or distateful. If you can’t talk to people, listen, communicate, and just want to keep your head down in your IDE, freelancing is not for you. The technical stuff is almost never the hard part of a freelancing gig. The hard parts are getting good clients, understanding their problems and requirements, delivering what they want, and building a solid relationship and trust.

At this point almost every business relies on computers, web sites, technology. I will include non-profits since they have the same needs as for-profit businesses. As a sole freelancer or member of a small team you should set your sights on companies that operate at a scale similar to yours. If you have expert specialized skills and a name in your field you can get gigs at big companies and government agencies. Until that happens concentrate on small businesses. You will be dealing directly with the owner or someone who reports to the owner (less red tape and faster decisions). And you can take advantage of the severe shortage of talented programmers/developers.

Big companies and sexy startups can attract more applicants than they need (or at least a lot more than small un-sexy companies). They pay better and have better benefits. With so many people already working for them they can usually address their business problems with their own resources (though big companies and startups will hire freelancers with recognized expertise and specialized skills). For every Twitter and Snapchat there are thousands of small companies that don’t get any acceptable applicants for their job openings. Most smaller businesses can’t afford full-time IT or software development staff, and they couldn’t keep such expensive employees busy, so they already outsource everything. Until you have a reputation and skills that give you your choice of clients and projects, you need to find work that is acceptable, work you can do to hone your skills.

I have two long-term clients in a hot job market who have been trying for over five years to hire a local person full- or part-time. They aren’t sexy or particularly fun places, and they aren’t going to make a programmer rich with equity. They’ve kept me on all this time because they can’t attract qualified people. Like many small businesses and non-profits they have the work and the money to pay for it, but the talented people go to the sexy startups and big employers. I’ve seen the responses they get to their ads, and when you remove the recruiters (small companies can’t afford those fees) and the foreigners needing work permits (small companies can’t afford those either) they are left with people fresh out of school and people who have obvious problems reflected in their job history (personality disorders and even alcohol/drug problems have been apparent in interviews). So they keep me on. This gigantic hole in the job market just keeps getting bigger and bigger, at least in the USA.

Here’s how I get clients, best channels first:

  • Referrals from current clients
  • Referrals from other freelancers, not necessarily tech freelancers (graphic artists, designers, system admins have all been good sources for me)
  • People I know: family, friends, former employers and colleagues, classmates
  • People I meet: at meetups, user groups, social events, trade shows, etc.
  • Recruiters: they are plugged in to the local job market, but unless you have a relationship they won’t tell you much
  • Online presence: blog, articles, answering questions (and not just technical questions)
  • Contacting companies directly when I see a problem or read something about them
  • Online ads (mainly Craigslist)
  • Gig marketplaces and online job boards, i.e. UpWork, Fiverr, etc.

I actually don’t use UpWork, Fiverr, et al. to get clients and I never have, but I included them here because they are the first place new freelancers often look. I do use those marketplaces to hire people to do piecework and small gigs.

I am represented by an agency now, 10X Management, and they are my main source of new projects. Before I was represented by 10X Management I found clients on my own.

New freelancers seem to invert that list and start at the bottom, with online gig marketplaces and job boards, blindly sending in résumés and filling out applications online. They compete with thousands of people all over the world (who can live on $15/day) for crappy piecework jobs that don’t lead to more quality work. If you are auctioning youself online, applying for a job, or sending a résumé to a jobs@ email address you aren’t trying. The competition is always most fierce at the bottom so get out of the kiddie pool and learn how to get clients.

Notice that six out of nine of the sources I listed involve talking to people. You can’t succeed just passively sending out inquiries to ads you see and hoping a client drops in your lap, especially not when you are starting out freelancing. Eventually clients will come to you and you won’t have to do as much work finding them. If you don’t like dealing with people, introducing yourself at a party or meetup, asking people what they do and listening to them, and only hang around with people who are just like you, get out of your shell. Or find a business partner who has people skills. Freelancing is a people business, a big part of it is sales and client relations and communication. Don’t tell yourself you suck at that and give up – learn those skills. Good communications and people skills are the best marketable skills you can have. Even better than knowing AngularJS.

If you don’t have any current clients, start with people you have worked with before, anyone you know who owns a business. Make it your goal to meet one new person every day. Introduce yourself, say “Hi,” sit at someone’s table at a deli during lunch, sit next to someone at a bar. Almost everyone feels shy and hesitant to approach strangers, it’s not just you, and you can train yourself to get more comfortable with it. I was lucky to do sales/marketing support for a computer hardware company for a couple of years, going on sales calls and working trade shows, seeing how the professional sales people do it, and I stopped dismissing soft skills. You don’t have to act insincere or phony, just be yourself. I’m not talking about fake networking or accumulating LinkedIn contacts. Get to know people, expand your circle. You don’t have to hang out with them or invite them to dinner. No one likes to be the victim of an aggressive network builder so don’t try to sell yourself or ask if you can give them your résumé. If you meet someone and think you might want to get to know them better exchange cards or numbers or email addresses and tell them you’d like to get together again sometime.

I’ll add a caveat to the “be yourself” part. When meeting new people or talking to clients, avoid politics, religion, anything too personal or controversial. Learn what not to say. Dress appropriately and don’t look like a slob who lives in a basement. Appearances matter. Learn to make eye contact without being creepy – practice with a more social person if you have to. Learn to listen and not interrupt. Laugh if you want but the guy with great tech skills and poor social skills who shows up to meet a potential client wearing a Metallica t-shirt, interrupting and telling the client what they should be doing, is not going to get the job over someone who can listen, talk, and dress respectfully. When you are meeting a potential client or trying to make new contacts your goal is to make a good and memorable impression, not to bludgeon them with your Python skills.

Always get the name of the decision maker. You don’t want to send “Dear business owner” emails or try to get past the receptionist. When someone tells you about an opportunity, get the name of the person who will make the decision, write it down, don’t misspell or mispronounce it. If you see a job ad figure out the name of the company (sometimes not easy), then Google or call them to find out who is responsible. I’ve called companies and told them I’m with Dell or Microsoft and need to know whom to send an upgrade notice to, just to get a name. Then I call back and ask for that person by name, and if the receptionist asks what it’s about I say I’m returning their call. I learned these somewhat underhanded bypass techniques from professional salespeople. The goal is to find out who is actually doing the hiring and get through to them to set up a quick meeting or phone call. No points for being shy or going through channels.

Another technique I’ve used a couple of times is to see where employees go during lunch. A lot of places have delis or restaurants nearby where groups of employees go, especially on Fridays. You get to see what the dress code is too. Then I go in and ask if they work for the company I’m interested in, tell them I’ve been trying to get through about a job opening I heard about, and ask to join them. I’ve amazed myself at how well this works – people love to talk about themselves and will welcome the chance to tell a stranger about their job and workplace. This works for getting full-time jobs as well. Almost every company has job openings, many of which are never advertised.

What if they don’t want to hire a freelancer?

Every job opening is a freelancing opportunity, no matter what the ad says. When a small-ish company advertises a job opening they are not just trying to fill an empty chair. They are advertising that they don’t have enough people (or that they don’t have anyone in a lot of cases) to deal with some of their business problems. Keep that in mind when you talk to them: they are the buyer, and they want to buy. (Big companies and especially government agencies do advertise and hire to maintain headcount because their budgets are based on staff size.)

Potential clients may tell you that they really want an employee, someone to work in the office, and they aren’t interested in hiring a freelancer. In sales jargon getting over this hump is called overcoming objections. The actual objection is usually that they are worried about taking a risk on someone they can’t control. So you need to reduce the perceived risk and push the need for control (over an employee) to a partner/peer relationship based on mutual benefit and trust.

You can’t overcome the “we want a full-time employee” objection all the time, it’s not worth getting upset over it or trying too hard to change their mind. When I hear this common objection, I first say “I know a lot of [programmers, web developers, system admins, etc.]. If you can tell me more about your business requirements and your top pain points I can ask around and maybe send someone your way.” I defuse the freelancer question and get them to tell me about all of the problems they’re having. Then I say “I could help you with some of those things until you find a full-time person. If you want me to have a look at your [system, code, application] I’m happy to tell you if I can help and how much time I might need.” Nothing fake or underhanded, just get them to think about problems and costs rather than their perceived need to fill an empty cubicle. Very often having a talk about business problems and pains and offering to help will get you the job. Don’t try to offer specific solutions or get pressured into setting a price at this point, just say you need to learn more and see what you can do. I don’t charge for the time I spend doing this kind of requirements analysis for new clients. I just want to get my foot in the door, and that might require a couple of hours of my time for free.

If that approach doesn’t work, leave your card, tell them you’ll ask some friends who might be looking, and tell the client to give you a call if they need any help while they’re looking for a good fit. You don’t have to talk them out of hiring an employee or sell the wonders of freelancing. You just have to leave the impression that you listened to their problems and needs and that you are willing to help just a little, for free, by asking around and helping out in the meantime.

You should ask around. If a potential client hires someone you referred, and you didn’t try to charge the usual 33% recruiter fee, you now have two friends who owe you a favor: the business owner and the person you sent to the job. Think long-term: freelancing is a relationship business.

Because I have attorneys in my family I learned a long time ago that law firms are totally dependent on computer systems, and that small law firms don’t have full-time IT staff. They either outsource or they have that one guy in the office who can keep a file server and printer running. I once walked around an office plaza full of small law firms and just asked at each one if they needed help with any computer problems. I got three clients that way, one of which I had for a couple of years and made quite a bit of money from because they were unhappy with the company they depended on for support, who was ripping them off.

“We already have someone doing that”

Because small businesses often outsource their software/IT needs to local consultants and support firms, you’ll hear this quite a bit. Just because they have someone already doesn’t mean all of their needs are being met, or that they are happy with the relationship. When a company has a vendor already, the relationship gains inertia over time and it’s hard to get the client to change, even if they are telling you how their current developer or support firm isn’t delivering. There are two opportunities when you hear this. First, without badmouthing their current developer or support firm, ask about their requirements and problems and pains and ask if their current provider can help them with those things. Second, try to find out who they are using. Very often they are using other freelancers or small contract firms, and those companies are potential clients for you. Never badmouth or insult another freelancer to a client or peer. It will come back to bite you. Sure, there are plenty of incompetent and unscrupulous people out there taking advantage of small businesses. You can choose not to work with them. But they aren’t going to go away because you talk them down, and they may have more connections than you do. It also comes across as unprofessional and amateurish. No business owner wants to be told they’ve been taken advantage of (they may already know or suspect if that’s happening), so don’t criticize what they are doing now or how they got into a jam. You can say “If Acme Consulting hasn’t been able to deal with the shipping charge problem maybe I can talk to them about it,” or “Have your guy give me a call if he’s swamped, I can work with him to get you back on schedule.”

You can get a lot of work from other freelancers and contract development/support companies so establish relationships with them. In my former city (Portland) I cold-called some small companies that do contract development and asked if I could come in to talk to them. They all agreed to meet with me (since those companies seem always to be short of people) and I got referrals and overflow work from them. If another freelancer or contract firm sends work to you, don’t make them look bad, and reciprocate by referring work to them when you can.

I’ve described meeting with clients in a formal situation in their office, but actually it’s almost always better to have these conversations in a casual context. People are more likely to talk about the business problems and what they aren’t getting from their current developer or support person away from the office. I’ve had these conversations at bars, restaurants, trade shows, coffee shops, after meetups and user group meetings. In those contexts once you introduce yourself to a stranger and exchange pleasantries they will ask what you do, or you can ask what they do, and you can take the conversation from there. I have more confidence I could get a new client or at least a lead at an upscale cocktail bar on a Friday evening than I could trying to get a meeting at an office.


I hear people complain about recruiters and getting LinkedIn spam and unsolicited calls. Recruiters get a bad rep because (like programming) the field has a low bar to entry and there are plenty of incompetent and unscrupulous recruiters. But not all of them. A good recruiter is plugged in to the job market (they usually work in a city or region, but some specialize in specific skills and business domains). They know who is hiring, and more important why those companies are hiring. Recruiters frequently have exclusive arrangements, which means they are filling unadvertised jobs or keeping their client anonymous. Many companies outsource finding people to recruiters because they don’t want to spend the time, or they don’t know how, to find and attract employees. You might think recruiters only place full-time and part-time employees, but that’s not the case. Recruiters are paid by the employer (or client), usually a flat fee or a percentage of annual salary (30% to 40% is normal, so it’s a high-commission job). Any recruiter who asks a potential employee or contractor for a fee to get placed in a job is almost certainly a scam, so don’t deal with anyone asking for that.

Recruiters will place contractors and freelancers and they will place people who work remotely. They are matchmakers who get a commission from a successful match, the details of the arrangement aren’t a problem as long as they get paid. If a company is willing to pay a recruiter 1/3 starting salary for an employee they are willing to pay an equivalent finder’s fee for a freelancer. So talk to recruiters, ask your friends about recruiters they respect. Find out what jobs the recruiter is having a hard time filling, and why. Recruiters know the salary ranges too, so you can get that information right away. I’ve been placed in multiple contract/freelance jobs by recruiters. If you get the name of a good recruiter call and invite them to lunch and ask questions about the jobs they are working to fill. In my opinion recruiters are a great resource too many people dismiss out of hand. Make it worth their while and they can give you good information and work for you.

It should go without saying, but if a recruiter reveals the name of a potential employer to you, don’t go behind their back to cut them out of the deal. If a potential client (or employer) suggests this don’t do it. It’s unethical and can only work against you in the long run.

Working remotely

If you looked around my web site at all you may have noticed I live in Thailand. All of my clients are in the USA. I’ve met all of my longer-term clients face-to-face and make an effort to have lunch or visit their office when I’m in town. I have some clients I’ve never met, in cities I’ve never been to.

Because personal contact is important when you’re finding and landing clients it’s harder to do it remotely. On top of having to communicate by email or phone (or video, but pretty much everyone over 16 hates video calls) clients will worry about the time difference and what happens if you disappear. If I was looking for new clients today I would go back to the USA and get them in person. Once you have established a reputation and good contacts and clients and other freelancers who send referrals the remote problem more or less goes away, though I still get hesitation about it from potential clients now and then.

As a freelancer your clients don’t control when or where you work (that’s pretty much the IRS definition of an independent 1099 contractor). They may care, though. I only take on clients that I can plausibly work for remotely, which is one reason I don’t do green fields development or join teams of people at startups. I’ve tried both as a remote freelancer and it’s just too difficult (though I know several people who do it). I don’t want to be on a daily standup video call at 7 am every day (did that for a couple of months) or try to spec out complex requirements for a new system when I can’t talk to stakeholders and users in person. Plenty of routine work is possible and easy online – most companies don’t even have physical servers anymore, everything is in the cloud on a virtual server, and that works just as well from Thailand as from Portland.


Once you land a client the most important thing is prompt and clear (and professional) communication. Almost every new client I get tells me stories about “the last guy” or “our last software development company” that starts with “They wouldn’t answer emails or return phone calls.” Even more than delivering late or buggy code, clients hate feeling ignored or neglected. There’s no reason today with smartphones and cell service everywhere to be out of reach. You don’t have to be on 24 hours a day, but set the expectation with your client that you will respond to emergencies immediately, and routine issues the same day (accounting for the time difference). It’s not their problem you are half-way around the world, or that you are traveling around. Give your clients who need it a phone number they can call you on in an emergency, and answer when they call. Reply to their emails right away, even if you just acknowledge receipt. Communicating and reassuring them that you are still there and working for them is the number one thing you can do to keep clients. If you go off the grid for three days they will be someone else’s client soon.

If you can’t compose sentences and paragraphs and talk to your clients in language that makes sense to them, fix that. Freelancers who have good speaking and writing ability are going to do better in the long run. In a typical software project maybe 20% of what I type is in some programming language, and the rest is in English, communicating with my client. Sloppy spelling and grammar, amateurish and unprofessional writing, terse two-word responses don’t give a good impression. There’s no excuse for an adult to talk or write like a teenager, so don’t. Take yourself, your skills, and your clients seriously if you want to make a career as a freelancer.

I have been a hiring manager and done résumé screening and interviewing many times in my career (of 40 years). A résumé or cover letter with just one typo or grammatical error goes into the trash immediately almost every time. A dismissive, snide, condescending email to or phone conversation with a client is the beginning of the end of that relationship, and any referrals you may have hoped for.


There’s more software development work available than people who can do it, so competition is not usually a problem if you position yourself and your marketable skills and learn how to sell yourself. You will compete with employees, contract firms, and other freelancers. If another freelancer gets the job ask the client to send your contact info to the successful bidder telling them you’re available for overflow work – turn the loss into an opportunity and be gracious about it. Don’t whine or argue with the client – if you weren’t the first pick make sure you’re the second pick, because there’s a good chance that whomever they hired isn’t going to work out. When that happens the client will remember you for putting their needs above your ego.

I mentioned earlier that you don’t want to compete for low-end, low-price jobs on gig/piecework marketplaces, and you don’t want to churn out applications and wait for replies. You don’t want to bank on occasionally being the one person chosen out of a few hundred. You are succeeding when you are the only person considered for the job.

Rates and prices

How many times have you read or heard someone ask how much they should charge for their time or for a project? As a freelancer you need to know the market rates. They will fall into a range, probably a fairly wide range. Ignore the lowball prices on UpWork and other gig/piecework marketplaces. Find out what freelancers in your business and region are charging. How do you find that out? You ask them. And you ask potential clients what they are paying (they may not tell you an accurate number but you’ll learn something). If you don’t know any other freelancers join groups online and in person and ask. Just ask for a range. Not “How much do you charge,” but “What’s the range for freelance PHP developers in this area?” I’ve never found other freelancers particularly coy about this as long as you aren’t trying to pin them down. You can also just call contract and freelance firms in your area (because prices can vary widely in different cities and regions) and tell them you are inquiring for a potential client and need some numbers. I have never had a problem figuring out what the normal rates are, I don’t get why people go online saying they want to freelance and then have no idea how much to charge. It’s basic market research to identify your potential customers and determine a price for your product or service.

It’s easier to find out how much full-time jobs pay because salaries are advertised online and by recruiters. Figure 2,000 work hours a year, and the employer has some overhead for employee taxes and insurance. Take a salary range, multiply the low and high by 1.3 (to account for those taxes and insurance), then divide by 2000 to get an hourly rate. Freelancers are generally (not always) paid more than equivalent full-time employees, so it’s helpful to know what those employees are making.

Rates can vary across a broad range, and lots of projects are bid at a fixed fee and account for multiple developers on the project. It shouldn’t be that hard to get a range, even if it’s a big range. For example, ten years ago in Portland, where I used to live, freelance programmers were getting between $25/hr and $150/hr, and the median seemed to be $60 - $90. It’s higher in Silicon Valley, lower in cities that aren’t tech hubs or desirable places to live. You need to know the range so you aren’t quoting crazy low or high numbers to clients.

It may be tempting to lowball to get the job but that works against you a couple of ways. You get locked into a low rate and it’s hard to move it up with that client. And you send the message that you aren’t worth more money. I don’t even try to compete on gig/piecework sites where the rates go as low as $5/hr. I have fairly high (not crazy) rates, and when I get pushback from a potential client (“I’ve seen people who do the same thing for half that rate”) I tell them, politely, that I have seen that too, and if they want to go with someone else that’s fine, but I can’t work for that rate since I have other clients who will pay my usual rate. I tell them I’m available if they need me and leave it at that. Several times when this has happened I’ve received a call or email a month or two later from the client, regretting going with the lowball price. If you set a high but reasonable price for your services and you deliver your client may brag about the awesome high-end freelancer she found to people she knows. Don’t underestimate the power of prestige implied by a premium price.

I never agree to low starting rates that will increase if I deliver or anything like that. I don’t work for equity. I would if I fell into something I really believed in, but 75% of startups go broke and the equity is worthless. I communicate confidence with my abilities and experience, I tell clients I don’t charge at all if I can’t solve the problem, and stand firm on the rate.

In another article on my site, How to work with freelance software developers, I’ve written more about rates and why you should estimate and charge for deliverables rather than hours. I’ve also described retainer arrangments, where the client pays a fixed amount every month for a block of time – turning an unpredictable variable cost into a predictable fixed cost.

Do what you are good at, outsource the rest

None of us can be great at everything, and you should focus your freelance practice on your best marketable skills. Upgrade those skills or learn new skills to increase your client base and income. I wouldn’t take on a project I planned to completely outsource, but I do outsource bits and pieces and small tasks. This is where the gig/piecework sites like UpWork and Fiverr can come in handy. For example I don’t do graphics or illustration – anything beyond simple cropping and resizing I hire out. I am not a WordPress expert (mostly for lack of patience with it), though I can make WordPress do almost anything. I hire out some WordPress work because there are people charging 1/4th what I charge who are faster at setting up sliders or moving WP sites to new hosting providers than I am. You can pocket the difference, but don’t lie to your clients about outsourcing. Sometimes I pass the UpWork/Fiverr fees through to the client (for language translation, converting Word to text/HTML, graphics work), sometimes I mark it up as if I did it. Don’t give out passwords or secure access to your client’s systems or servers to people you outsource to – I’ve seen that happen, and I’ve seen client web sites held hostage by scammers trolling the gig sites. Keep your client’s best interests in mind.

Clients will sometimes drop something on you that you can’t or don’t want to do. Remember that you are solving their business problems, and you can charge them for whatever they need done, whether it’s your specialty or not. You learn new skills and more about the business by doing. If you tell your clients what you will or will not do, or what languages or tools you will and will not use, you are putting handcuffs on yourself and telling your client to find someone else who will address their needs. Last year a client needed an online course rewritten from scratch and translated to Spanish. Not my thing, but I found a freelance writer friend who could write the material, and hired someone on Fiverr to do the translations. I’ve had clients apologize: “I’m sorry, we have this old Perl code no one understands but it’s running part of our call center queuing system. Can you look at it?” It’s not going to kill me to look and figure it out. Don’t be afraid to get your hands dirty with stuff you might not choose to do. If a client wants to pay my rate for me to debug Excel macros, fine. The more things you are doing for your clients the more valuable (and indispensable) you make yourself. That pays off in work and referrals.

Freelancers sometimes start to fall behind and even burn out from taking on too much work. New freelancers may wish they had this problem, but if you are any good it will happen faster than you think. You will worry about not finding the next client and start committing more time than you have. I deal with this a couple of ways. I’m picky now about which clients and projects I take, so I say no more than I used to. Or I try to refer them to someone else. If I like the client and the project and see a long-term possibility I will try to reduce the scope: “I can’t fix all of those problems this month, but if you list them in order by how much they are costing you I can knock out one or two fairly fast.” Clients understand if you’re busy, but they don’t like when you make a promise and can’t keep it. Under promise and over deliver.

Your workplace, equipment, organizing, etc.

Everyone has their own preferences for working. Some people have a separate office area in their home, set regular hours, and have systems for tracking time and managing their day. Others (like me) are more lax about it. I don’t have a schedule or regular hours. Some days I don’t work at all, some days I may work 10 hours. I schedule phone calls if I can but if a client has to call me I take their call. I don’t need any special inspiration or motivators to get my work done. I can solve quite a few issues on my phone and by email – not everything is a coding problem. I automate what I can, like system monitoring, upgrades, and routine tasks my clients have been doing manually and dropped on me.

Final thoughts

I love freelancing. I can’t imagine going back to work in a cubicle farm nine-to-five. I like the freedom of going where I want when I feel like it. I won’t say anyone can do it, because not everyone can. But if you focus on marketable skills, adding business value, and communicating with your clients (and people in general) you can succeed. You don’t have to be a wizard at every (or any) programming language or framework. Most companies don’t need (or want) wizards and ninjas and rockstars. They just need someone who will care about their business and work with them to make it better.