Don’t want to read the whole article? Here’s a summary of the steps:
- Motivation: Watch the free video about the state-of-the-art of Python freelancing (opens in a new tab).
- Training: Reach Python freelancer level (~40-80 hours).
- Confidence: Complete 3 archived Python projects for learning and read business books such as Leaving the Rat Race with Python (Amazon).
- Platform: Create accounts at Upwork and Fiverr.
- Credibility: Get your 5-star ratings for small $15 Python projects.
- Scale: Ladder up your hourly wage.
- Pro tip: Create a personal website and drive paid traffic to it.
Do you want to earn money as a Python freelancer? But you are just starting in Python? This article leads you step-by-step through the adventure of becoming a Python freelancer. You’ll learn about the exact steps you need to do to become a Python freelancer—starting as a Python newbie.
And if you’re serious about your next-level career step, join my FREE webinar (on the Finxter blog) “How to Build Your High-Income Skill Python” where I’ll show you exactly how I went from earning $0 to full-time income and beyond—as a Python freelance developer.
Before we start, let’s answer an important question: is Python freelancing worth it? I compiled the pros and cons from different places online (e.g. here) and added my own experience in the freelancing space—both as a client and as a Python freelancer.
Do you want to develop the skills of a well-rounded Python professional—while getting paid in the process? Become a Python freelancer and order your book Leaving the Rat Race with Python on Amazon (Kindle/Print)!
Without losing any time, let’s dive into the 7 steps of becoming a Python freelancer.
Table of contents:
- How much money ($$$) you can earn as a Python freelancer
- How to gain confidence that you can give value to the marketplace?
- How to start learning the basics of Python?
- How to make yourself independent from freelancing platforms?
- How to become an attractive freelancer?
- How to find practical Python projects for learning?
- When to stop learning and start doing real Python projects?
- What is a good place to start Python freelancing?
1. How Much Money ($$$) Can You Earn as a Python Freelancer?
As a Python developer, you can expect to earn between $10 and $80 per hour with an average salary of $51 (source). I know the variation of the earning potential is high but so is the quality of the Python freelancers in the wild. Take the average salary as a starting point and add +/- 50% to account for your level of expertise. In this blog article, I summarized all credible sources online about how much you can earn as a Python coder. The key takeaway is that intermediate-level Python freelancers today earn six figures easily ($100,000 yearly gross income or more):
This data is based on various sources:
- Codementor argues that the average freelancer earns between $61 and $80 in 2019: source
- This Subreddit gives a few insights about what some random freelancers earn per hour (it’s usually more than $30 per hour): source
- Ziprecruiter finds that the average Python freelancer earns $52 per hour in the US. This is equivalent to $8,980 per month or $107,000 per year: source
- Payscale is more pessimistic and estimates the average hourly rate around $29 per hour: source
- As a Python developer, you can expect to earn between $10 and $80 per hour with an average salary of $51 (source).
If you work on the side, let’s make it 8 hours each Saturday, you will earn $400 extra per week – or $1600 per month (before taxes). Your hourly rate will be a bit lower because you have to invest time finding freelancing clients – up to 20% of your total time.
- Write down how many hours you can invest per week.
- Write down your goal hourly rate.
2. How to Gain Confidence That You Can Give Value to the Marketplace?
Before becoming a Python freelancer, you have to learn the very basics of Python. What’s the point of offering your freelancer services when you can not even write Python code?
Having said this, it’s more likely that you live on the other extreme. You do not want to offer your services before you don’t feel 100% confident about your skills. Unfortunately, this moment never arrives. I have met hundreds of advanced coders, who are still not confident in selling their services. They cannot overcome their self-woven system of limiting believes and mental barriers.
Can I tell you a harsh truth? You won’t join the top 1% of the Python coders with high probability (a hard statistical fact). But never mind. Your services will still be valuable to clients who either have less programming skills (there are plenty of them) or little time (a big part of the rest). Most clients are happy to outsource the complex coding work to focus on their key result areas.
Regardless of your skill level, the variety of Python projects is huge. There are simple projects for $10 which an experienced coder can solve in 5 minutes. And there are complex projects that take months and promise you large payments of $100 to $1000 after completing each milestone.
You can be sure that you will find projects in your skill level.
- Take your time to browse all the archived Python freelance projects.
- Select 3 projects that you think you can solve in the price range ($10-$50).
- Write down in which direction you want to go first (keep the projects in mind that you just selected): data science, web scraping, application development, scripting, …
3. How to Start Learning the Basics of Python?
Before you start with practical projects though, you should invest 10-20 hours in refreshing your basic Python skills. This is not much of a time commitment – after all, you are learning a high-income skill. You can learn a lot in 20 hours if you do it right. The key is to learn probabilistically by mastering important subskills first. Watch this great TED talk about what you can achieve in 20 hours.
So what’s the best way to learn probabilistically? Simple. Use the 80/20 principle. This famous principle states that 80% of the causes lead to 20% of the effects. Get rid of the 80% low-value tasks and focus instead of the 20% of causes with 80% of the effects.
The best way to learn 80% of the skills in 20% of the time, is via Python cheat sheets. I have summarized the 5 best Python cheat sheet in this article. Download the cheat sheets and spend your first 20 hours in learning them thoroughly. Or even better: print them and post them to your office wall.
- Download the cheat sheet: Python 3 Cheat Sheet.
- Subscribe to the FREE cheat sheet course: The Ultimate Python Cheat Sheet Course (5x Email Series).
4. How to Gain Independence from Freelancing Platforms?
Freelancing platforms offer you convenience and speed in starting your own freelancing business. Examples are Upwork, Freelancer, or even Fiverr. Some of those platforms (e.g. Upwork) will manually check your profile, so it will take some time to sign up. The reason is that these platforms receive thousands of applications every day. They have to be selective to guarantee a certain quality of service. I have read about many cases where Upwork rejected freelancers with attractive profiles.
On the first impression, these platforms seem to be very attractive for your emerging freelance business. But be careful! Many existing freelancers heavily rely on these freelancing platforms. By using a platform such as Upwork, you make yourself vulnerable. Your income depends on the decisions of the platform owners. And don’t think they have your best interest at heart. For example, Upwork already takes a 20% cut (!) from your hourly rate, just for brokering your services to potential clients. And their cut is pre-tax. In other words, you are working the first 12 minutes of each hour for Upwork (and the next 28 minutes for the government).
What are some risks of depending on a freelancing platform? The platform owners can suddenly increase their cut. They can throw you from the platform for no reason whatsoever. They will stop sending clients your way as soon as their algorithm decides that you are not the optimal fit for a client project. The main problem is that you don’t control your customer base. On the back of ONLY these platforms, you can not build a robust and sustainable business.
So what’s the alternative? If you are serious about becoming a Python freelancer, setting up your own website is the way to go. This allows you to offer your services to clients all over the world. You establish trust and clients perceive you as a professional freelancer. Use freelancing platforms to attract clients, but retain them for yourself.
To increase your conversions, add testimonials to your website. Keep collecting them during each of your freelancing activities. Of course, this is a bit harder than just setting up a freelancing account on Upwork. But it’s a much more sustainable foundation of your freelancing business. A nice plus is that your professional website sets you apart from your competition. It increases your chances of getting clients.
Only after creating your own web presence, you should use these platforms to get new clients. Make sure to always refer to your professional website within any project application.
How do you retain clients beyond the first project? Focus on always over-delivering to new clients! Make them happy. Ask them to contact you directly the next time they need a similar service. And give them a special offer for the next freelancing service. Finally, ask them for referrals and testimonials after the job is done.
As you establish a growing client base you control, you will find yourself using Upwork, Freelancer, and Fiverr less and less. Because of that, your profit margin will grow over time. Not only will your income increase, but it will also stand on a solid foundation. You own the foundation of your business (your client base).
- Get a meaningful domain such as (e.g. “python-freelancing-services.com”).
- Create a WordPress page introducing your services.
- Create profiles on Freelancer.com, Upwork.com, and Fiverr.com.
5. How to Become an Attractive Freelancer?
In the last months, I got a lot of experience using freelancer services as a client. My goal was to improve the Finxter.com website to test your Python skills and my book “Coffee Break Python”. A similar pattern emerged every time I posted a new project description. A few hours after posting the description, several freelancers applied. The competition was fierce. But within minutes, I had subconsciously chosen an inner circle of high-potential candidates. There was not one case, where I chose a freelancer who could not immediately pass the entry barriers of my subconscious mind.
You want to be in that inner circle. To get there, you must be appealing to the subconscious mind. The following factors will give you a psychological advantage when competing for a freelance job.
Use the power of reciprocity.
“Reciprocity is a social norm of responding to a positive action with another positive action, rewarding kind actions.”Wikipedia
This principle is the most important insight which I gained from my own experience of hiring freelancers.
For example, I published a project to check the Python code of my recent Python programming book. The project description stated that I intended to edit the code to make it more Pythonic. This project was important to me because I want to provide high quality and readability for advanced coders. Immediately, several freelancers applied for the job. They went into “competition-mode” bragging about their credentials. They tried to convince me that they are the perfect fit for this project. I selected a few candidates but was not 100% sure about any of them.
Towards the end of the application phase, a new freelancer registered interest with an unusual application. Instead of talking about his credentials, he focused on the project itself. He dived right into the project and submitted annotated and corrected Python code snippets – improving upon those I provided as sample files. He gave them to me for free. Of course, I knew that he purposely used the reciprocity rule to get the job. Yet, I was immediately hooked and felt a strong obligation to reward him for his work – and gave him the job.
This is the power of the reciprocity rule.
Don’t hide your titles and credentials.
They still work. When you apply for a job and you have the title “Prof.”, “Ph.D.”, or “MSc” in a relevant area, you have gained immediate credibility. In most cases, it will set you apart from the other freelancers without strong credentials or titles.
Note that credentials are not limited to the academic world. You should also highlight your practical achievements such as your websites, shiny projects, or certificates. Be creative.
Invest time in your profile picture.
You wouldn’t believe the powerful impact of your profile picture on your chances of getting the job. Many coders don’t focus too much on appearance. Don’t do this. Smile, dress professionally, use a natural image background. Need insider tips? Check out this article from freelancer.com.
Don’t compete on price.
Forget about it. Competing on price is a race towards zero. You can not win. There is always a cheaper freelancer and some of them WILL apply for the same projects.
It’s true, some clients look for the cheapest freelancer who barely finishes the task. But most clients will choose high quality and predictability over price. What would you do if you were a business owner who works 60 hour weeks to push his website? You love your baby and don’t want a cheap freelancer to mess around with it. A freelancer that offers a service at a very cheap rate is also perceived as shipping cheap quality. After all, you ain’t cheap if you are good.
So what is the value of an hour of your work? Multiply this number with 1.5. Do this for two reasons: You tend to underestimate your value to the marketplace, and you should constantly push yourself to improve (that’s what you want, isn’t it?). Now you have your number. NEVER work for an hourly rate below that number! And keep pushing it – the sky is the limit!
- Collect Python certificates. For example, use our web app Finxter to certify your Python skill level.
- Get an awesome profile picture.
- Give something to each potential client. For example, invest some time creating a prototype solution. This will greatly improve your acceptance rate and ultimately save a lot of time!
6. How to Find Practical Python Projects for Learning?
This is the most important question for you as a beginner. Most developers know that they should never do premature code optimizations. But they do premature skill optimizations all the time. Don’t do that. Laser focus your time to learn the most important skills with the highest priority.
One of my articles on this blog shows you 10 highly practical freelancer projects on which real freelancers worked to earn money. Again, find highly practical code projects for any skill level at freelancer.com/archives.
These archived freelancing projects are goldmines. Invest time to study them carefully. If you do so, you will learn about the practical Python problems that clients seek to solve. You will learn about the patterns of Python problems “in the wild”. This knowledge will guide you in your efforts of becoming more valuable to the marketplace. In contrast to millions of other aspiring coders, you will develop a practical Python skillset tailored to your interest level.
- Browse the archive of freelancing Python projects.
- Find projects you like in your difficulty level (read my article about 10 highly practical freelancer projects with which real freelancers earned money).
- Complete these projects.
7. When to Stop Learning and Start Doing Real Python Projects?
Start with real projects immediately. Use the freelance.com archive to find practical projects if you do not feel confident, yet. But don’t wait too long – even if you are a beginner programmer. Set aside 10 minutes per day or so to watch out for interesting projects. When you have solved archived projects, chances are that clients have similar projects that they want to outsource. To drive traffic to your own freelancer website, you could write a blog post about the topic. You could even drive traffic via Facebook ads if you need to. Try to establish your own brand as soon as possible. Learn with real clients. Learn practical skills first. What are the practical skills? You can only learn them by working on real projects. Don’t lose any more time. Start today!
My answer is very simple: start right away — no matter your current skill level.
But I know that for many Python coders just starting out, it’s very difficult to start right away. Why? Because they don’t have the confidence, yet, to start taking on projects.
And the reason is that they never have quite finished a Python project — and, of course, they are full of doubts and low self-esteem. They fear not being able to finish through with the freelancer project and earn the criticism of their clients.
If you have to overcome this fear first, then I would recommend that you start doing some archived freelancer projects. I always recommend a great resource where you can find these archived freelancer projects. On this resource, you’ll find not only a few but all the freelancer projects in different areas — such as Python, data science, and machine learning — that have ever been published at the Freelancer.com platform. There are thousands of such projects.
Unfortunately, many projects published there are crappy and it’ll take a lot of time finding suitable projects. To relieve you from this burden, I have compiled a list of 10 suitable Python projects (and published a blog article about that) which you can start doing today to improve your skill level and gain some confidence. Real freelancers have earned real money solving these projects — so they are as practical as they can be.
I recommend that you invest 70% of your learning time finishing these projects. First, you select the project. Second, you finish this project. No matter your current skill level. Even if you are a complete beginner then it will just take you weeks to finish the project which earned the freelancer 20 dollars. So what? Then you have worked weeks to earn $20 (which you would have invested for learning anyways) and you have improved your skill level a lot. But now you know you can solve the freelancer project.
The next projects will be much easier then. This time, it’ll take you not weeks but a week to finish a similar project. And the next project will take you only three days. And this is how your hourly rate increases exponentially in the beginning until you reach some convergence and your hourly rate flattens out. At this point, it’s important that you specialize even further. Select the skills that interest you and focus on those skills first. Always play your strengths.
If you need some more confidence then go read my article about the 10 practical Python freelancer projects, select one, and finish your first project yourself. This way, your learning will always be as practical as it can be.
If you want to know how much you can earn and get the overall picture of the state of Python freelancing in 2019, then check out my free webinar: How to earn $3000/M as a Python freelancer. It’ll take you only 30-40 minutes and I’ll explain you in detail the state of the art in freelancing, future outlooks and hot skills, and how much you can earn compared to employees and other professions.
As a Quora user puts it: “rank communication before development skills”. It’s critical for your success that you develop these communication skills in a practical environment.
- Take the first project you think you could solve. Then invest all your time and effort into cracking this project. Learn on the way. A sure way to improve and build a relationship with your clients – and make money in the process.
8. What is a Good Place to Start Python Freelancing?
There are many different ways of starting your Python freelancing adventures. Many freelancing platforms compete for your time, attention, and a share of your value creation. These platforms are a great way to start your freelancing career as a Python coder and gain some experience in business and coding, as well as get some testimonial to kick off your freelancing business. But keep in mind that they are only the first step and in the mid-term, you should strive to become independent of those platforms if you want to avoid global competition for each project in the future.
So without further delay, these are the best places to start your Python freelancing career and get some clients fast (ordered by my recommendation):
Upwork places a great focus on quality. This is great for clients because it ensures that their work will get delivered—without compromising quality.
For freelancers just starting out, Upwork poses a significant barrier of entry—oftentimes, new profiles will get rejected by the Upwork team. They want to ensure that only clients who take their freelancing jobs seriously will start out on their platform.
However, the relatively high barrier of entry also protects established freelancers on the Upwork platform from too much competition. There is no price dumping because of low-quality offers which ultimately benefits all market participants.
Fiverr initially started out as a platform where you could buy and sell small gigs worth five bucks. However, in the meantime, it grew to a full-fledged freelancing platform where people earn six-figure incomes.
Many jobs earn hundreds of dollars per hour and many freelancers make a killing—especially in attractive industries such as programming, machine learning, and data science.
If you want to start earning money as a freelance developer with the hot Python programming language, check out my free webinar:
Toptal has a strong market proposition: it’s the platform with the top 3% of freelancers. Hence, it connects high-quality freelancers with high-quality clients.
It’s extremely hard to become a freelancer at Toptal: 97% of the applicants will not enter the platform. However, if you manage to join Toptal, you can greatly benefit from the best-in-class hourly rates. You can easily earn $100 per hour and beyond.
Also, the high barrier of entry ensures that the freelancer stays the valuable resource—he or she doesn’t become a commodity like on other freelancer platforms.
If you are an upcoming freelancer, you should aim for joining Toptal one day. Here’s a great freelancer course that shows you a crystal-clear path towards becoming a highly-paid freelancer.
Freelancer.com is the go-to resource for beginners with a very low barrier of entry and opportunities for everyone. This is the recommended starting point to gain experience and finish your first projects. Also, it can help you gain your first testimonials—while getting paid for learning and polishing your skills.
It’s a great site with countless freelancing projects. A great resource is the archived freelancing projects which help you get some real-world projects for training purposes.
For freelance programmers, I have compiled a list of ten practical freelancing projects to help you get started. These projects are real projects which were completed by real freelancers for real money. So they are as practical as they can get.
Of course, there are a lot more general freelancing websites. I will list a few of them in the following:
Also, if you are looking for specialized freelancing platforms, you should look a bit further. For example, an excellent way of offering your writing services is:
The best site for offering your programming services is:
However, the general freelancing sites such as Upwork, Toptal, and Fiverr are good enough for most cases. To learn more about the best Python freelancer sites, check out my original blog article.
- Before you move on, decide for one platform (my personal recommendation: Upwork — and, no, I’m not affiliated with any institution) and stick for it for at least one year. Commitment is king!
Where to Go From Here?
Congratulations. By reading this article, you are one step closer
Towards six figures in Python! 📈🐍
While working as a researcher in distributed systems, Dr. Christian Mayer found his love for teaching computer science students.
To help students reach higher levels of Python success, he founded the programming education website Finxter.com. He’s author of the popular programming book Python One-Liners (NoStarch 2020), coauthor of the Coffee Break Python series of self-published books, computer science enthusiast, freelancer, and owner of one of the top 10 largest Python blogs worldwide.
His passions are writing, reading, and coding. But his greatest passion is to serve aspiring coders through Finxter and help them to boost their skills. You can join his free email academy here.