Freelance programming: how to start, grow, and succeed

Posted 6 years ago in Small Business Tips
by Tim Chaves

So, you’re considering starting a freelance programming career.

Maybe you’ve been programming for a while, or maybe you’ve just graduated with a degree in computer science.  Either way, you’re in a good place. In a recent survey, Glassdoor named Computer Science as the major with the highest starting salary and Bloomberg said the software industry had the lowest unemployment rate in the US this year.  

There a lot of reasons to consider taking your skills to the freelance market.  Not only is it one of the most in-demand fields, but there are a lot of perks that come with freelancing and independent contractor jobs.  Many freelance programmers cite the ability to pick their own projects, work in remote locations and improve their work-life balance as key factors for becoming gig workers.  

Additionally, freelancers in general tend to make more money than their desk jockey counterparts—freelance programmers specifically make an average of $70 per hour, with an annual salary around $115,000 for a 32-hour work week.  

Let’s talk about how you get there.  

Is Freelancing for You?

Before you launch your freelance career, evaluate whether freelancing is really for you.  Some people benefit from the structure of a 9-5 office job. If structure and routine are an integral part of your make up, then maybe freelancing isn’t the right path.

As a freelancer, you take on the organizational and financial responsibilities of your employment.  You need to be able to balance a fluctuating income, prioritize saving (including saving for taxes) and manage your own benefits.  These can definitely be perks if you prefer to be in charge of where all of your income goes, but it does require some thoughtful deliberation.

What If I Don’t Have Any Experience?  

If you are just finishing school and considering launching as a freelancer (rather than applying to full-time jobs), let me assure you, you can pull it off.  

First, know that you do have experience—your schooling.  Every class I took in college resulted in a final project that I could hand off to an employer as proof of what I could do.  Maybe I’d only successfully completed the project once (maybe I even got a C on it), but I had something tangible that could be evaluated.  Don’t be embarrassed of what you’ve done. Potential clients will be impressed that you can learn as you go, even learning from your mistakes.  

Second, try building up your experience before you go full freelance.  In your spare time, practice creating the kinds of project you’d ultimately want to be paid for.  Use job boards to throw your line in and see if any clients will actually bite.

Try to get side gigs and build experience before turning to freelance as your only source of income.  Start while you are still in school or working another job. It’s better to know early on whether or not freelance programming will be a viable career option for you.

Build Your Brand

Before you can expect to land any clients, you need a name that means something.  In other words, you should be able to prove that you can do what you say you can.  If you are seeking out freelance work through job sites, there are skills tests available to prove your expertise.  A better way to show off what you can do is to create an impressive, extensive portfolio.

Create Your Own Website

I would recommend basing your portfolio around a personal website.  If you are an experienced web designer, then build your website from scratch! This can be your first impression to clients of what you can do.  Make it clean, modern and easy-to-navigate.

If building your own website is too intimidating a task, there are many website building platforms that are easy to use and look beautiful: Wix, SquareSpace and WordPress (to name a few).   You don’t have to say that you used these platforms to build your website unless your client asks.  Same rules apply: make a good first impression by offering an easy-to-use, designer-approved webpage.  

On your Website include:

  • About: A professional and informative section with a friendly-looking picture.  Include your education and experience background, but be short and to the point.
  • Blog:  A blog is crucial in today’s world if you hope to build your own brand.  Post regular, in-depth, practical articles that you user will enjoy and your client will be impressed by.
  • Portfolio:  Let your viewer easily access your polished, finished projects, so they know what you are capable of. You could even feature your latest projects on your landing page.  Use your portfolio to spark interest and convince clients of your skills.
  • Links:  Include links to your social media and any other relevant content, so your content is all connected.
  • Contact: How will a client hire you if they can’t reach you?  Include a basic contact page and then, respond quickly to any contact you receive.

More on the Blog

Not only is a blog imperative for SEO improvement, but it is the best way to build your brand and establish yourself as an expert in your industry.  Post frequently (2-3 times a month at the very least) and make sure your posts are in-depth and practical. Don’t just fill your website with empty words—offer real knowledge to the world. Start with what you know best (you are an expert, remember!) and put it in your own language, make it conversational.  

If you are comfortable creating YouTube videos, you should link to that content as well.  Lots of freelance programmers  use media content to build their brand.  As an idea: if you are camera shy, start with screen capture videos where you demonstrate your skill or demo a unique programming technique.  Write out a voice-over script so you sound professional and well-expressed. Then, just read off of it (you can even record the audio afterwards if multi-tasking is not your forte).

More on Social Media

As stated, you should include links to all of your socials on your webpage.  So, that means you need to be using social media regularly. If you have a twitter account, but your last tweet was six months ago, your client will dismiss you as unengaged in the current conversation.  Programming is an ever-changing field, so use your website, blog and social medias to show that you are aware of trends and changes in your industry.

Know What’s in Demand

Because there are so many programming languages, the most successful freelance programmer is the one who knows the languages that are in-demand.  I’d recommend specializing in one or two languages, though there is some controversy about whether you should specialize or generalize.

Specialize vs Generalize

The benefit of being a full stack programmer—especially when you’re starting out—is that you are hirable for multiple jobs.  You are familiar with a couple different languages and you are comfortable working with all technological layers required to get an idea to a finished product.  You don’t have to have a mastery in each layer, just a familiarity. Going full stack means that you can work for businesses and software companies.

However, many freelance programmers recommend specializing instead.  Rather than being a jack-of-all-trades, you are an expert. And people want to hire experts, not novices.  Additionally, the more specialized you are, the more earning potential you have.  

Which Language Should I Specialize In?

So, if you do choose to specialize, you might want to look at the data to see which languages are currently in demand.  Here are two separate findings:

In a 2018 survey, StackOverflow asked the developer community which languages they were working with most frequently.  It seems that Javascript is the most commonly used, though Python has risen in the ranks.

The top 5 languages used were:

  1. Javascript
  2. HTML
  3. CSS
  4. SQL
  5. Java

In a survey from December 2017, tracked the number of job postings containing specific programming languages.  Again, Javascript is near the top, but the data shows that more employers are looking for Java and Python coders.

So, even though many freelance programmers are already working in Javascript, there are more employers looking for Java and Python coders.  My recommendation is choosing one of the top three from this chart—you’ll always have clients.

Financial Logistics

As a freelancer, you are responsible for all the financial elements of your company: saving for retirement, filing for taxes, legalizing your business, and so forth.  Make sure you understand all that’s entailed before you start full-time freelancing.

Business Structure

When you get started freelancing, you are also starting a business.  It’s a good idea to protect your business, as well as add greater potential for growth by choosing the best legal entity.  Many freelancers choose to incorporate as an LLC, but there are benefits to sole proprietorship as well (click the previous links to get the nitty gritty details of each).  

Either way, it’s a good idea to register your business and apply for a federal EIN, if applicable.  And know that you don’t have to keep your business incorporated as the same formation forever, just pick one to start off.  


Freelancers, also called independent contractors, are subject to the Self-Employment Tax.  It’s a good idea to put away 20-40% in savings to be safe when the taxman comes.  You will also receive 1099 Forms from any client that paid you more than $600 during the fiscal year.  Even if you don’t receive a 1099 from an employer, you should report all earned income to avoid penalties.  

If the financial aspects of starting a business are starting to intimidate you, let ZipBooks lend a hand.  We offer free accounting services and virtual bookkeeping to let you focus on what you want to—growing your business.

Setting Prices

On to the important stuff: making that paper.  The financial processes of payment include setting prices, creating invoice templates, and establishing an account plan.

As you start setting prices for your services, be honest about the value you’re creating for your clients.  Remember that you’re doing something that the client can’t do for themselves. Dwight Schrute says, “Why [pay] someone for a job I’m capable of doing myself?  I can deliver food, I can drive a taxi, I can and do cut my own hair.”

You are offering an important service, so charge for it.  And don’t go too cheap, as this could create a negative impression of yourself on the client.

Payment Options

For most programming projects a flat-fee makes the most sense.  Consider charging by the project rather than charging by the hour, but include milestone payments throughout so you don’t only get paid at the end.  Milestones payments are also an easy way to prove to your client that you’re not wasting their money; they only pay you when the see the finished product they were looking for.  Define clear deadlines with your client and stick to them.

You can go the hourly route as well, it’s just that flat-rate payments often make more sense for programming.  Either way, you will make good money if you are honestly assessing your value.

Test the Waters

In other words, don’t quit your day job.  Try getting your feet wet in the freelance programming market before turning to it as your sole source of income.  Sign up for a few freelance job sites (listed below) or see if you get anyone reaching out to you through your website “Contact” page.  

The nice thing about starting out with a side gig is that you get to be selective about your clients.  You don’t just have to accept any job that comes your way, because you’re not desperate for income.

See how many people are actually interested in hiring you.  If no one responds to your portfolio, bulk it up with some new material.  

Job Sites vs Your Network

You’ve got a polished website, an impressive portfolio and your financial ducks in a row.  It’s time to land your first client.

As I see it, there are two ways to start full-time freelancing:

  1. Win business through freelance sites
  2. Leverage your own network

1. Jobs Sites

Here are some freelance sites which are designed for people seeking short-term projects:


A favorite among freelancers, Upwork allows you to choose your own projects and filter based on industry category and skill level.  As you continue to get jobs through Upwork, you can build up good reviews and client relationships and will be able to earn more money per job. Create a profile and submit proposals, but know that Upwork will take 5-20% of your earnings from each project as a “Freelancer Service Fee.”  A mobile version of Upwork is also available for download.


Similarly, create a profile on and write bids.  When writing your bid or brief, be thorough, professional and competitive with your pricing. Freelancer also hosts Programming Contests to showcase your work though there is an entry fee if you are not a registered user.  Freelancer also has a mobile app.


Create a profile and submit quotes to open jobs through Guru.  They offer skills tests and a variety of payment agreements: pay by milestone, task, hour or recurring payments. Creating an account is free, however many of the perks of Guru (10+ monthly bids, premium proposals, etc.) are reserved to paid memberships.  


Toptal advertises as listing only the top 3% of freelancers.  They have an in-depth screening process including language, personality, skills and project tests.  However, once you make it past the application process, you get to work with big names like HP, Airbnb and Pfizer.


A gig is bought every 5 seconds on fiverr.  It’s free to join, though they do take 20% of each transaction as a freelancing fee.  You set your own pricing and determine how much work you want to do.


In a recent Forbes article, one freelance programmer cited Gigster as the key to his work life fulfillment.  Gigster is an invite only platform, though you can request to join their network. They claim that if you’re producing a huge amount of high-quality code, you could easily make upwards of $500,000/year using their platform.

Job Boards

You can always go to the more general job boards like Indeed, LinkedIn and ZipRecruiter.  These job boards are regularly updated and have some freelance jobs available, though they tend to be more long-term (a position that lasts a few months rather than a project that last a few hours).  To search for a freelance programming job, just select “Contract” under the “Job Type” filter.

2. Your Own Network

If you are not interested in using third-party sites to secure clients, there is another way: leverage your own network.  This is definitely a more long-term strategic play, but the clients you secure are more likely to be loyal.

If you are going to start with your own network, make sure you have spent time cultivating your brand and polishing your portfolio.  Write your own business plan, including your vision, goals, and growth plan. Then, get to work. Start with people you know, but make sure you have built a solid relationship of trust before asking for a referral.  

Either way

Whichever route you choose will require a lot of time and research.  It will take time to earn the trust of potential clients, even if you are starting with friends rather than the cold approach.  

You should do a background check of every company or client that approaches youmake sure they are the kind of person you’d want to work for.  Remember, you haven’t quit your day job, so you’re not desperate yet.  

Once you know the customer is viable, use your research to determine their needs and offer insightful recommendations on how you could improve their processes.  Use this information to write strong proposals, bids and cover letters, that they won’t be able to refuse.

Okay, Now You’re Ready!

You’ve landed a few clients, completed a few projects and even gotten paid! Now, keep going.  Make sure you’ve got a good number of loyal clients on your roster before you start freelancing full-time.  Keep the clients you’ve got by always sticking to deadlines, delivering the best service and staying in touch throughout the project lifecycle.

When you complete a task, add the finished product to your portfolio and share what you’ve learned on your social media accounts.  Regularly update your blog and respond to questions and comments that your readers bring up. When you make a mistake, admit it openly and find a way to improve.  

Be active in online programming communities and attend meetups and tech conferences.  Remember that programming is ever-changing and stay current with your education and knowledge of languages.  When you have time, seek out additional certifications that you can add to your resume.

Eventually, people will be coming to you.  Focus on building a loyal audience and proving your industry authority and soon, your brand will speak for itself.  


About Tim

Tim is Founder and CEO of ZipBooks. He keeps his desk really nice and neat.

Privacy Preference Center