Although Upwork has become one of the most popular freelance marketplaces on the internet, it has its pros and cons.
On the one hand you’re free in terms of location, so there’s no need to spend time getting to the office, but on the other you are not free in terms of time, especially since freelancing usually involves working with multiple clients and having more responsibility.
And although there are many promising career opportunities on Upwork, getting started can be difficult.
But no worries! Even if you’re at the beginning of your career as a freelance software developer, you can still make it on Upwork. In today’s post I’ll share with you some tips to help you get started.
How To Get Your Very First Contract on Upwork
The most challenging thing you’ll encounter as a newbie is getting your first contract.
Among all the freelance sites, Upwork is the most competitive marketplace. What does that mean for you, personally? That it won’t forgive you for being a generalist. To stand out, be 100% specific about which particular service you can offer to your customers.
Therefore, the first and most important thing you should do is take time to create an attractive and detailed profile. Let’s take my profile as an example of how important that is.
When my profile contained something like “I’m not tied to any particular programming languages or frameworks—I’m focused on providing the best solution for your problems,” nobody responded to it, and potential clients probably laughed at it.
You wonder why? Because I wasn’t specific. One day I changed my profile to “Passionate Python developer: web and data scraping” followed by my skill set: soft skills, scraping skills, back-end/front-end skills.
I got three job interview invitations that day. The importance of being as specific as possible can’t be overemphasized. By the way, the skill order matters, as Upwork customers already expect to get the best possible service from a technical perspective.
That means what they care about the most is your soft skills. Their biggest desire is to be heard and understood by the freelancer they are about to hire. So it’s like “No contact, no contract.”
Having a decent profile is necessary, but it’s not enough to get you a job. Most potential clients don’t mind that you haven’t yet worked for a single hour on Upwork—that’s fine. What they really want to know is whether you have any professional programming experience.
That’s when your portfolio comes into the picture. A couple of completed projects are worth much more than numerous skill-test results—clients don’t need students capable of passing tests, but a grown professional to solve their particular issues.
That’s an absolutely different mindset. As a freelancer you’re the one who delivers a result, not the one who puts in a lot of effort while burning clients’ money for nothing.
Hourly Pay Versus Fixed Price
Let’s assume you’ve already started getting job interview invitations on Upwork, or you’re starting to apply to posts. There are two types of offers that you’ll encounter: hourly-paid contracts and fixed-price job offers.
Which one should you prefer?
Well, it probably depends on what kind of freelancer you are, but there are some general principles you have to know about. Fixed-price offers are easier to get, but you’ll be a lot more responsible for the end result. If something goes wrong, you’ll end up with a bad review as a freelancer, and it would be a huge setback to your Upwork career, even though you’ll be able to recover by taking small, potentially low-paying jobs to success score up again.
Hourly-paid contracts are a bit of a different story. In most cases you won’t be working with the client directly, and your code will be reviewed by the tech lead or someone similar, as you’ll probably be working on a team. This type of contract is more forgiving in terms of the end product and your reputation because it’s often more of a longer-term collaboration.
Being flexible with your clients is a great way to build a reputation. Say technically you’ve provided exactly what the client actually wanted but later on they realize that the result they were expecting differs from the one you’ve delivered? Who is guilty here? It’s hard to say, but if you give in a little, then you can gain a lot more, for instance rewriting part of code for free in return for gaining a satisfied long term customer.
It’s much better to end up losing some income rather than your reputation.
Tips for Time Tracking on Upwork
Beginners usually think they can simply click that magical “track time” button and get rich in one week. Probably the most important thing to realize when dealing with hourly-paid contracts is that the term “hourly paid” is somewhat misleading.
You get paid for solving the client’s problem, not for your time and effort. That’s basically why they’ve hired you. The less time you spend on the particular problem, the more valuable a freelancer you are in your client’s eyes.
I’ll give you an example. Let’s imagine you have to write a program that outputs “Hello, world!” 10 times on the screen. What’s the average time needed to write that program? From 30 seconds to one minute, depending on your typing speed.
Now imagine that you have forgotten how to write loops. I know that sounds ridiculous, but let’s pretend. You start Googling for the solution, reading the documentation, and so on. All this time, the timer is ticking, and you finally write that program spending three or four minutes on the task.
Now answer this question please: How much are you going to get paid for this? I hope you get the idea. The client might not know how long it takes to create a website, but they definitely understand the average time needed to solve some basic issues like, say, setting up the HTTP server.
That means the client implicitly evaluates the task to their own understanding—and bear in mind that their evaluation involves less time then the actual time needed. So you’ll be “a bit slow” even if you only use 30 seconds to write the “Hello, world!” piece of code.
I recommend mentioning your time-tracking policies while negotiating your contract details with the customer. This is a good practice that will help you gain a solid credit of trust before writing a single line of code.
Growing Your Career on Upwork
It’s really cool when you’ve mastered some popular programming language and the associated framework to provide your customers the solutions they are ready to pay for.
Still, you may end up becoming bored doing routine tasks based on the bare knowledge of the given technology. The other issue you can face is becoming unsatisfied with your salary. In such cases, the best thing to do is to keep learning all the time.
Indeed, this is not only related to freelancing itself but also to your self-improvement in general. If you’re not getting better, you’ll eventually start getting worse.
However, it’s important to mention that the learning curve of a freelancer might significantly differ from that of someone working at a company in a senior position. A freelancing career is different from other career opportunities. You have to be focused on the goals of the entire project.
Often, client demands can steer you in a certain direction that can both grow your career and help you learn new things.
As an example, I generally work on web-scraping contracts, but quite often the available scraping skills turn out to not be enough to satisfy the customer.
That is, in cases of professional web-scraping, clients usually end up wanting the full-stack web app that could manage the data that has been scraped and stored to the database.
They have two options at this point: either to hire web-developers to build the site for them or to offer this job to the guy who is already doing web-scraping. The second approach is much more preferable for the client.
First of all, they already have a professional they trust and are used to working with. Secondly, it’s far cheaper to pay one programmer compared to a team. And for you as a developer, that means long-term cooperation, so the only thing you need to be able to do in that case is to create full-stack web apps.
And that’s the exact entry point for you as a freelancer to solve two issues at the same time: knowing what to learn and how to grow your career.
Beginnings Are Complex, but It Gets Better
Starting your freelancing career on Upwork can feel overwhelming, but it gets better. That is especially the case if you follow the tips I shared with you.
Start with general programming to be able to learn quickly in the future. Then get more and more specific until you realize that your code is worth paying for.
Create a reasonable profile, and wait for incoming job interview proposals. You can also start sending your own proposals, but the case when the client chooses you is much more preferable compared to the one where you’re asking for a job.
Once you’ve been invited for an interview, try to dive into the client’s need as deep as possible, for that will greatly help you eventually get the desired offer. Focus on soft skills while in the negotiation phase with your potential clients. It’s important to also keep time-tracking ethics in mind.
Finally, focus on the project’s goal, and start gaining new skills. You’ll end up being a successful freelancer!