Do you want to start earning money and selling your skills as a freelance coder? Good choice! Being a freelance coder is an excellent opportunity in today’s marketplace. You are getting paid to learn the programming language you love. Where else can you get such a good deal?
Is Upwork for you?
To share my personal experience as a freelance Python programmer, I have created a free webinar “How to build your high-income skill Python”. In this webinar, I have analyzed the state-of-the-art in the Python freelancing market.
Most of my freelancing clients came from my large email list of Python learners and practitioners with thousands of coders. If you are serious in becoming a sought-after Python freelancer, start building your own community around your main freelancing skill. For example, I focus on giving a lot of value first — without expecting anything in return — just because I like to give and I like to help. As it turns out, a nice side-effect is that ultimately, this will increase your perceived (and true) value to others — the marketplace — and will increase your hourly rate when selling your skills.
However, I understand that you may not have access to a huge community that is eager to pay you money to solve their problems. If this is you, you should first focus on building your personal brand. Start selling your skills on a freelancing platform such as Upwork. In contrast to other low-barrier-of-entry platforms such as Freelancer.com, Upwork positions itself as a high-quality platform where each freelancer fulfills minimal requirements.
Not everybody can join Upwork. Many ready-to-go freelancers who want to start out at the Upwork platform report that Upwork rejects their applications. It’s not that easy to overcome the barrier of entry.
While this can be a pain in the ass, it also gives you a huge benefit: if you manage to overcome the high barrier of entry, you won’t have such a hard time finding freelancing jobs on Upwork — the competition is much smaller. And competition is for losers.
So how can you overcome the high barrier of entry at Upwork.com?
In this article, I will make a self-experiment applying for an Upwork profile and sharing my experiences as I go over the process. I will be completely transparent so that you can benefit the most from this experiment.
So let’s start with step 1 of becoming a freelance programmer.
After creating my freelancer profile, Upwork wants to know my skills. If you are like me, you want to show off a bit and add all skills you can possibly think of: writing, editing, proofreading, blogging, NumPy, Java, C++, and on, and on, and on. Give me a break! This is NOT the best strategy to earn good money on Upwork.
Instead, FOCUS is the name of the game. The 21st century comes with a strong winner takes it all economy. Why? Because the web has increased the efficiency of global competition. This is the case for Upwork, too. And the few winners in every field tend to earn the bulk of the profits.
In plain English: There is no way that you can be among the top writers, editors, AND coders. And even if you theoretically would belong to the top experts in multiple fields (which you don’t), nobody would believe you anyways.
So don’t even try. Focus on one skill and prove this skill as good as you can. You know what? I’ll focus even more for the purpose of this experiment…
But why should they believe me? Fortunately, I can take a test to prove my skill level to Upwork. Remember, every barrier of entry is a good thing because if you overcome it, you will reduce competition. With this philosophy, I am going to attack this experiment.
Let’s take a Python test! The test takes around 50 minutes with 45 questions (this may change over time). If you are a frequent Finxter.com user where you train your skills by solving Python puzzles, this test won’t challenge you too hard. So let’s try the coding test (it’s my first time)…
(I took this screenshot in panic mode as there were only 34 seconds left to answer the question.)
… coming back from the test. Well, I have to admit that some questions were really hard! Still, solving puzzles on Finxter.com has greatly prepared me for the questions (“What’s the output of this code snippet?”-style). After answering only 36 from 50 questions, Upwork has seen enough: a popup informs me that there is no need to proceed with the test because my “Excellent” rating has already been determined with confidence:
But don’t fear this test — when I understand it correctly, you can simply redo the test after learning and improving if you are not satisfied with your test results. Take this time, solve puzzles with the Finxter.com app, and go for it until you reach a satisfying rating. The return on your invested time will be huge!
To complete your profile, you will need to add your education, your working experiences, and projects you completed in the Python programming language. Answer everything with great care. I know you want to learn about quick tricks and tips — but this is not what this is about. Be professional, truthful, and motivated by giving value and serving.
Now, let’s enter the important part: your profile description. It is the first thing your new clients will see from you. And therefore it’s critical that you take care, craft it carefully (remember: writing is RE-writing), and take every opportunity to shine.
This does not mean that you should just brag about your achievements. Instead, stay human, relatable, and — first and foremost — highlight your value to the client. Start and end your profile description with the benefit for your client. What is it that you can offer him? How will your service make his life easier? Here is an example of my description (I’ve highlighted the benefit-oriented language):
“Do you need help with your Python project?
I am an experienced Python developer, book author, computer science researcher, and top-5 Python blog owner who can implement your project — even if it is complex — in a fast and reliable way.
And I LOVE to teach and give value.
Here are some of my practical achievements:
- Owner of the top 5 Python blog in the world writing about various topics in Python, computer science, and coding.
- Creator, administrator, and owner of the Django-based Finxter.com Python learning app (I have created 90% of the 300+ Python puzzles — check it out, it’s fun).
- Ph.D. candidate 2019: I already submitted my Ph.D. thesis in Computer Science (Research focus: distributed data analytics and graph processing).
- Researcher: publications at top-tier international research conferences (ICDCS, IEEE BigData, Sigmod, DEBS).
- Python book author: “Coffee Break Python”, “Coffee Break Python Slicing”, “Coffee Break NumPy”.
Why do I work on Upwork? Because I love Python. And I want to stay ahead in the Python space by successfully completing your practical Python project — and continuously improving on the way. My goal is not only to deliver results to you but to overdeliver.
You can be confident that I will be fast, responsive, and submit high-quality work.”
Make sure that you cram as many client benefits into your project description as you can. Remember: it’s about delivering results for your clients. They don’t care about you — they only care about themselves and their results. So give it to them.
Another important topic is your pricing strategy. Don’t sell yourself too cheap. If you are cheap, clients will believe that the products you deliver are cheap, too. And they are right — you cannot deliver high-quality products if your rate doesn’t support your living expenses. Set the price strategically: I am already a very experienced Python developer, so I start with a medium price level of $90. Even if my services are much more expensive when bought via my official Python blog, I first have to prove myself on the Upwork platform and finish a few projects with 5-star ratings. Then, I will raise my hourly rate gradually. If you are just starting out as a coding freelancer (but you already have some experience with coding), start with $20-$50 per hour.
How to create a great profile video?
Now there is one thing left: the profile video. You may want to skip this step because you don’t like standing in front of a camera. So do many other coders. But remember: It’s all about creating a high barrier of entry. And you create high entry barriers by doing what others won’t — this video is a huge opportunity and even if it is optional, you should take this opportunity and make the video. Let your true self shine through the video (but stay benefit-driven as in your profile description). “The most valuable gift you have to offer is yourself” (The law of authenticity in the book The Go-Giver). If you can show the client your positive character, you have already created a high barrier of entry for your competition.
It is of paramount importance that you write a script. It’s work but you know why you have to do the work, don’t you? Most people don’t spend the work of writing and revising the script. But this is a one-time effort that will take you an hour or so — while making your upcoming months or even years as a Python freelancer much easier. Let me repeat this point: Use every opportunity you have to create a barrier of entry! Here is what Upwork recommends on their company blog.
What to put into the profile video script?
5-10 seconds (10-20 words): Quickly introduce yourself and make a first expression. Smile a lot, but stay professional. It’s important that you stay short, focused, and concise. This part serves as a small abstract to your overall video script.
- What’s your name?
- What’s your profession?
- What’s your offered service? Be specific!
- How long are you in the business?
- What are your previous relevant experiences (stay short and relevant)?
10-20 seconds (20-40 words): What is your dream client and dream project? But don’t be too restrictive here — after all, you want to use your video for many different clients and freelancer jobs.
10-20 seconds (20-40 words): Share experiences of your professional life that show the “breadth and depth of your expertise”!
5-10 seconds (10-20 words): Make your call-to-action explicit. You want the client to choose you for the project. Tell them! And don’t forget to use benefit-rich language.
The average speaker speaks at 120 words per minute (2 words per second) [source]. Thus, your total script should have around 60-120 words only. This is not too much — perfect every word!
Here is an example of a short and concise video script based on this framework. I have revised and edited it multiple times so it does not strictly follow the framework anymore. So I would highly recommend that you start with the framework and then edit and re-edit until you like the result.
Example profile video script:
Hi! My name is Christian Mayer, I’m a doctoral computer science researcher in Germany, Python book author, and owner of one of the top five Python blogs worldwide.
Do you need help with your Python project? Maybe your code base is hard to understand? Or complex scientific research is the basis of your project?
For example, a recent client with a consulting business for law enforcement needed a Python expert who was capable of implementing the algorithms of a recent research paper for hacking cars. Through my experience as a researcher in the area of distributed systems and data analytics, I could help him successfully solve the project and earn thousands of Dollars in revenue.
So if you search a reliable and experienced Python coder who is able to work at the intersection of science, distributed systems, and data analytics to push your Python project to the next level, I would love to help you out.
Here is my video:
Do you want to dive even deeper into how to create a great Upwork application? A great resource is written by Upwork itself (after all, they know best why they reject some profiles).
Ok, after reviewing all the little pieces of my profile, it’s time for action: let’s submit the application and see whether Upwork rejects it!
Not even 12 hours later, I already received a reply from Upwork:
The profile is accepted and Upwork’s golden gates are open (although they may be golden because of Upwork’s hefty 20% service fee for each payment — but that’s another story).
I hope you got some insights about how to create a well-structured Upwork application that goes through the review process as a freelance programmer.
What’s your experience with your Upwork application? Sharing is caring: please submit a comment below and let others benefit from your experience, too!
Creating an Upwork profile is not a 10-min task that can be done in an evening. It requires care and focus.
You should use all the features Upwork allows for your proposal. Every feature increases your likelihood of acceptance. Plus, it creates a barrier of entry for your competitors.
Don’t feel confident starting out as a Python freelancer, yet? If you would like to push your skill level from beginner level to Python freelance level, check out my course “Reach Python Freelance Level in Your Coffee Breaks”.
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.