For the last 6 months, things have been pretty quiet here on Developer Angst. I haven't had an awful lot of time to blog or deal with social media, however, I haven't been doing nothing. I decided at the end of July last year that I would seek out ways of gaining more income outside of work and actually try building a substantial project from scratch.
Thankfully, these days finding part-time work, whilst daunting, is actually a lot easier than you might think and only takes a few hours of work.
When the two biggest online freelance markets oDesk and Elance merged they became Upwork. Upwork is a really great website because it provides a lot of depth and variety of work. It also has some neat tools such as a work tracker that provide both you and your client with a mechanism for providing payment security via Escrow.
Essentially you agree with your client when you will deliver each milestone and prior to starting the milestone the client pays into an Escrow account. This holds the money until you're ready to deliver each milestone.
How to choose a contract
Your first challenge will be how to choose a contract with a client that pays. I would suggest having a scan through the available jobs and seeing which ones fit your skills, interests and the time that you have available.
When I was looking for a project, I wanted something that was a bit more long-term; roughly 6 months or more. This would provide a sustainable part-time income and would allow for getting into a project that's a bit meatier. By that I mean it allows you to gather substantial requirements, design an architecture then implement your design using frameworks and libraries of your choice.
When you finally find a job that looks suitable make sure you meet the requirements for the role.
- Do you have all the skills they require?
- Are you able to dedicate the amount of time they require you to be available each week to the project?
- On the job it will state how long they expect you to be working on the project. Obviously if you have a full-time role, you won't be able to dedicate 30+ hours a week to it (working 70+ hours per week is dangerous - you'll burn out quickly... Don't do it!).
- Are you happy with the type of rate? What if it's fixed rate?
Fixed Rate job or Hourly Job?
A lot of developers are concerned when they take on Fixed Rate jobs because they fear that if they underestimate how long a job takes, their hourly rate will suffer.
I understand this frustration and it was also my own initial fear.
I would say ideally you should only take on fixed rate jobs for pieces of work where the requirements are absolutely clear and there are a lot of knowns, otherwise you run the risk of severely underestimating the work. However, having said that, my first contract on upwork was a fixed rate job that lasted a while.
I've found that even when you apply for a fixed rate job it might be that, when you go over the estimate, and their is sometimes good reason for doing so, then you can negotiate to an hourly rate that might suit both parties better. This is far more likely if you can consistently deliver.
Discuss it with them and see if it's possible. I suspect clients may list fixed price jobs because they are worried a freelancer might take advantage of them on hourly rates by over-blowing the complexity of the work and taking longer to deliver.
When I first applied for a job on upwork I smelt a rat (someone who was going to be either a trouble client or a waste of time) and decided to avoid my first proposal. Why and how did I smell that 'rat' and what kind of behaviours was I looking for?
Whenever I apply for a contract I look for pointers as to the quality of the business that the client currently has. Prior to deciding on a job we need to gauge the following first:
- If the client is likely to have the money to pay you. You can work this out by visiting the client's website (if they have one it's a good sign) and viewing former history with other freelancers.
- If the client asks you to come off Upwork - I don't like the idea of not having guaranteed payment and I don't trust someone who is so willing to break Upwork's terms like that right from the start without paying anything to the Upwork platform
- Whether they have unclear requirements for what they want to achieve and under close examination still don't appear to have an idea about what they want
- Whether they are expecting to pay next to nothing to get something that could take months and months of work.
How do I win a contract?
When you apply for a job on Upwork or another site, spend a lot of time looking through the requirements for the job. When you submit a proposal you should tailor what skills and experience you have to offer to the client, how you will approach the job and how your previous history, freelancing or full-time roles will benefit them.
I would pay particular attention to the requirements in the proposal and address any concerns you might have with the client. By questioning the requirements you show that you care about the project and are actively thinking about how you might work on it. You're also giving the client more of an insight into how you will eventually operate. This gives the client more trust in you and your abilities.
Managing Great Expectations
When I delivered my first job I was handed some existing code clearly developed by a Russian developer who frankly didn't know what he was doing.
Part of the requirements was to write a web scraping tool that took some stats from a website and wrote them directly into a database schema. So, the first thing I did was spin up the application and get it running. I wondered, web scraping is pretty slow, fragile and very unreliable.
When I finally got the application running my worst fears were realised. The application just plainly didn't work. It would NEVER meet the requirements of the client of updating the website every 5 minutes with scores. In fact it would take 25-30 minutes to run!
That left me in the unenviable position of having to inform the new client that the code that they'd paid someone good money to produce actually didn't work as expected and was impossible to make meet the strict requirements they had laid down. Sometimes you need to deliver this bitter pill as difficult as it can be to do.
I basically had to re-write that component from scratch which was going to cost my client a lot of money but alas it was unfortunately a price that had to be paid.
If you're planning to work on upwork or another freelance website you MUST be prepared to honestly deliver bad news if it's just unworkable.
Go Forth and Multiply
I hope this has provided you with a few insights into what it's like to work on a platform like Upwork on part-time or full-time roles. All I can say is that from my perspective it has been a very positive experience. I've learned an awful lot about managing expectations and dealing with clients.
My big takeaway though, and this can't be expressed enough is that you should be transparent throughout the entire process. If you're going to miss a deadline let them know as soon as you do. If you procrastinate until the last minute then you'll only end up antagonising your client and spoiling what could otherwise have been a healthy burgeoning relationship.
Let me know how you've gotten on with your own contracts on Upwork or if you have further questions about freelancing either part-time or full-time, leave a message in the comments below and I'll do my best to respond.