As of about 3-6 months ago, I began looking for some side gigs. In this time period, I have worked on three separate projects, and have made some great connections. These have all been for React Native apps. Although I love the web and personally prefer building web apps using ReactJS, it seems most people in the React community are looking for app builders. With that being said, let's start from the bottom.
I've heard good and bad things about Upwork, Toptal, etc, but this is not how I find work. For one, I don't have time to waste going through a vetting process. Between my full time job, permanent side project, and having a girlfriend (yes, I sort of have a life :P), I don't want to waste any more time. Lucky for me, this also comes across as being confident in my skills, and not someone desperate looking for anything they can get their hands on.
My last three projects have all been found on the Reactiflux Discord. If you are just getting into contract work, this may sound surprising to you. I have found that the smartest companies who are in a rush to find good developers will look there first. It has a jobs section that is reserved for, you guessed it: job postings.
Benefits of Discord
Each job acquired through here has been perfect for me. No vetting. These people need something done and they wish it was done yesterday! This means I get instant repo access and a project scope and just jump to it! I don't need to sit around waiting to be approved on things. Sure, you'll get some people who may ask you some coding questions, but it's never that much of a hassle. The good news is, the more work you take on, the more new clients will trust you and this will become even less of a problem.
The best advice I can give is to ditch big sites where you must fight everyone and lower your rate to get a job. A much better approach is being deeply integrated in your development community. I feel privileged to be where I am at now. Due to networking at the first two React conferences, I keep in touch with people who are much smarter than me, and who I now consider friends.
How did I go from knowing people in the community to actually getting these jobs? Every morning that I remembered to do so, I would check the jobs section for any new listings in Discord. If something interested me, I would message a conversation similar to this
Hey! I have done
relevant thing hereand finished a React Native app last month for
X company, you can check that out, or my github:
link. My hourly rate is
X/hr. Let me know if you'd like my help!
If the listing is about adding a firebase integration to an app, I would mention how I had done that before, etc. It's very straight forward.
This section is a bit misleading, because you should never negotiate your rate! It seemed the most fitting title for what I am about to tell you. On the last project I was hired for, we had setup a phone call to meet, before they decided if they wanted me or not. The client missed the call at the time we had scheduled (due to time zone differences, honest mistake on their part). However, when they asked me to reschedule the call, they gave away something. They mentioned "trying to schedule a number of calls" that day with other potential hires. Instead of replying with "Sure no problem, I'm available after ... for another call." Which would have been fine, instead I sent back:
You can schedule a call with me if none of the other people pan out. I'd love to do this for you but I don't want to waste time bidding.
That was the gist of my message back. As you can guess, a few days later they chose me to move forward and I recently finished an app for this client. To sum it up, show that you don't like wasting time and would rather only move forward if you can get started right away on your terms!
After getting a project successfully, there's a couple guidelines I follow that are self explantory.
Always finish ahead of schedule
I always give myself breathing room on deadlines. If I know the client needs something done in a week, I will estimate 5 days for myself if at all possible, and then bust my ass to get it to them at least a day before the estimate. This is crucial in my opinion when you first start a project that you want to become long term / keep a strong relationship with the client.
Return emails ASAP
This should be a given, but the client is paying you to work for them. If they want to take five days to get back to you on building a new feature, that's fine (as long as they pay on time and you are not blocked by them). However, you should strive to reply to them as soon as you can. This will put another positive thing in their head about you. At this point they know you are confident, not desperate, and you take answering them very seriously.
Underbill your clients.... sometimes!
I am a strong proponent for never selling yourself short. This is a personal thing for me. If the client is expecting a project to take 20 hours and it takes you 30, yes you should bill them 30. However, if I think this may become a long term job, and 10 of those hours were spent debugging something that was completely my fault, I hate billing those hours out.
I've had a client know that I must have taken a longer time to complete a project, because they were a developer themselves. They told me the "gesture is much appreciated," after I claimed that I felt the debugging time was my own fault, and I have an ongoing relationship with this particular client to this day!
I hope my thoughts on freelance work has helped somebody out there. I have had a lot of success following these practices. I have never had a client not be happy with my work, and they tend to assure me if they need more work done, they will reach out to me before parting ways. The key is to never be pushy; always be thankful!
TLDR; It comes down to three things:
- Being an active community member
- Over delivering on deadlines
PS: I just started this blog. If you want to see more posts like this, please subscribe. Thanks :)