10 Things I Learned From My First Year on Upwork — Part 1
Software engineering has traditionally been seen as a solo worker job. The business has a problem, they write a ticket for a feature or fix, and an engineer completes it. This may be the case at some companies, but in my experience the best software engineers are both technical and have high interpersonal skills that allow for much more than just working on tickets.
Business teams dream up new features, but it is up to software engineers to determine what the feature will actually do, what languages and tools it will rely on and how to build and integrate it within complex systems. This requires an understanding of current system code, as well as known and unknown technologies and finally the ability to both understand and explain the work required to affected business groups.
Again, today’s software engineers need to not only understand their code in order to build it, but must be able to communicate what they’re doing to non technical shareholders as well. This can be difficult with a familiar technology, but can be even harder when you aren’t familiar with the tech you are using.
I am always looking to be a better engineer and decided that I wanted to use my free time to work on both my technical and interpersonal skills. The best way to do this would be more freelance work. With this work I would focus on technology that I knew well enough to complete the jobs, but offered enough unexplored areas that I could learn while I did them.
Over the past few years I have done side contracts on my own, but never used Upwork. I decided to make 2022 my first year of contracts through Upwork. There was a lot I learned, and many things that I would do differently. Some of the lessons were harder learned than others. If you are a software engineer looking to begin freelance work please read these lessons so that you have a smooth and enjoyable freelance experience.
Lesson # 1 — Don’t Begin Work without a Contract
Say that you’ve found your dream contract and after checking your messages, see that the client has selected you to discuss the work. You have a positive first call with the client and agree to a scope of work and project timeline. The timeline is strict and the turnaround is quick. Your potential client says they need to check a few more things before extending the contract, but this check is just a formality. They want you to start the work immediately so you can meet the deadline. Everything seems alright, but should you start the work?
The answer is most likely no. Even if you are completely confident that you will be receiving the contract, wait until you see the contract, review the terms and accept the offer before you spend any of your time on the project.
In a perfect world, people are true to their word on extending contracts, and they structure contracts in a way that is consistent with previous conversations. In reality it’s not that simple. Some clients may change the scope of work in the contract. Sure you hammered out in messages that you would not be responsible for API documentation or project deployment, but these items still might show up in the contract.
Maybe the scope stays the same, but the payment terms change. I’ve had clients try to reduce hourly rates or short escrow from agreed upon terms. Maybe these incidents were just oversight, but if you want to get paid properly for your work then you need to carefully review your contracts to correct these issues.
If the payment and scope terms stay the same, you may still run into issues with people being people. People can be flaky. You may want to do the work, but they may lose their funding or have their project fall through. Maybe they’re interviewing other contractors and they find someone who fits their needs better, or is cheaper. Whatever the cause, your guaranteed work may not be so guaranteed.
Upwork does not protect your rights to compensation until the contract starts. If you’re okay risking different payment terms, project scope or never getting a contract offer, continue working early. But if you want to protect your time and money, be patient on working until after you get your contract.
Lesson # 2 — If you Hit Blockers, Communicate
Communication is the bedrock for any successful relationship, business or other. If it is so important, then why do we have so much trouble with it? In short, every person and every contract is different in communication styles whether it be what they find important to communicate, the frequency of communication or even their tone. All the differences force us to work harder to understand the best ways to interact with our clients. In order to have a good contract experience, good communication is a must.
While your company gives you the benefit of the doubt for miscommunications, and opportunities to smooth things over with coworkers, clients usually aren’t as forgiving. What seems like an honest mistake can mean the end of trust and a contract to a client. Communication failings during contracts are usually caused by missing deadlines and running over hours.
Both of these things happen, but it’s how you react to them that determines if you will have good communication with your clients. Once you know that you’ve hit a blocker, something that does not allow you to continue working, let your client know. Don’t wait a day or two until you can schedule a meeting, let them know right away so they can respond with direction, assets or whatever resources will keep your work moving forward.
The same thing is true if you are working on a contract and find that a section of code or a feature will take more hours than earlier estimated. Let your client know immediately, even before you start working on it. They may decide to cut the feature, or just tell you to make an MVP version (minimum viable product) that strips away extra features. Let them be in control of how their work is done so they don’t end up with a finished feature, but also an extra 5 hours of work to pay for.
Avoid letting issues linger without communicating with your clients. It’s their work you’re doing and their funds that are allowing the work to be done. Communicate early and often to ensure that they are always informed of how the work is progressing and control of how the project is steered.
Lesson # 3 — Establish a Concrete Project Timeline with Deliverables
Defining expectations for both scope of work and project timeline are dealbreakers when trying to be successful with Upwork. At the end of the day, Upwork interactions follow a very simple pattern. Clients post jobs with specific skills needed and contractors with those skills offer their time and expertise to solve issues. How successful these contracts are comes down to how many deliverables met their mark and how closely the project followed the expected timeline.
It’s not too complicated when it’s explained like this. If you want to be successful you need to know exactly what you’re being asked to build, or problem to solve, and when the solution or product is expected. This comes down to communication with the client, as early expectations and timeline setting can determine whether you’ll be successful on your contract.
These two items, timelines and deliverables go hand in hand. Some clients don’t care about seeing the product or solution until it’s done. Other clients want to have progress demos regularly to ensure the work is being done and the outcome is what they expected and wanted. Regardless of which direction the client wants to go, you need to know what they expect is successful.
Before you accept a client’s contract, you should discuss a timeline of both potential progress update meetings and overall project due dates. This can help you manage their work, along with other work and feeds into Lesson #8 discussed below.
Once you have a timeline determined, it’s important to get a full scope of work outlined along with concrete deliverables. You can look at Lesson #5 for more details on how to do this successfully. For an early overview, voicing what you view as the scope of work and your expected deliverables will help ensure that your client doesn’t feel slighted at any point by not having work included. This is a two way street as reviewing deliverables also ensures that the client doesn’t add extra items to your work as you go. It’s a bit more work to get started, but a win win for the project and any potential relationship with the client in the future.
You can read Part 2 of this article below:
https://dpericich.medium.com/10-things-i-learned-from-my-first-year-on-upwork-part-2-adc4c1e44f54