For the past few months, I’ve been working on a very exciting side project related to knowledge management I had in the back of my mind for years. I’ve reached a point where I need to find talent to help me build new features and get the app closer to being ready for production. My constraints are as follows:
- I’m already employed and can’t work on the app full-time.
- There’s no way building the app over my free time is going to bring it anywhere (if anywhere) before years.
- I don’t want to hire a web agency without being able to pick up the right talent myself
- I have to face it I won’t find a single expert for every area of the project (mobile, scalability, front-end…)
- I need to make decisions based not only on feelings, reputation or word of mouth, but raw data as well (e.g. language test)
- I’m on a budget because this app might never end up being monetized
When you think about it, it’s probably you I’ve just described here! As soon as you have an idea for a side project and you’re already employed, this is exactly the scenario you’ll be in. When I realized that, I thought I had to share the methodology I decided to go with in case it can help others. Oh, and the reason is also I failed at least twice at executing on a good idea for lack of embracing the data-based approach I’m going with this time.
Where to find talent?
If you don’t intend to hire a web agency to do the work, then the only potential solutions I can think of are to:
- Try and hire a thought leader, e.g. someone you follow on Twitter. - Good luck with that! Most of the time they’re employed already or at rates so high you wouldn’t be able to afford them.
- Go to a meetup (if you’re looking for a Python expert…then go to a Python meetup) and discuss with folks to try and see if you can find a match. This can work well for full-time hires, but it’s not what we’re after here.
- Try and find talent on a freelancing platform. I decided to go with this.
Evaluating the most popular freelancing platforms for your needs can be a chore. I spent hours reviewing profiles on different platforms, using advanced search filters to narrow down results always, and came up with the sentiment the 3 more relevant platforms for my needs are:
Then I stumbled upon Best Freelance Platforms in 2019 which confirmed my thoughts. I don’t typically like this type of clickbaits whose purpose is often to drive traffic with a high-value title, but low-value content. In the case of G2, I found this interesting enough to be shared as they’re trying to mimic the Gartner Magic Quadrant methodology and put efforts into ranking freelancing platforms differently from others.
This image property of G2
Out of those 3 platforms, I had to find the one that would meet my expectations the most. Upwork quickly became obvious to me:
- It’s widely used.
- It has great talents available.
- It’s talent-oriented, rather than job-oriented.
- Even though this blog post isn’t about that, it has an API (Freelancer has one too, but Fiverr doesn’t). It shows care.
- Its search is way more powerful than any other platform I tried.
- It allows to search by region (e.g. Eastern Europe, rather than only Russia)
When hiring a freelancer masquerades into hiring a web agency
One caveat I want to outline upfront with Upwork (and maybe other platforms) is when you think you’re hiring a freelancer and you’re actually hiring a web agency. Pay attention to the bottom right “Associated with” block, which is not necessarily obvious to notice.
It seems web agencies are asking their employees to post profiles at Upwork to drive more clicks, which in return have them sign more contracts and grow their business. From the web agency point of view, it’s probably a way to highlight their talents and have them get hired based on technical skills rather than betting on marketing only, but I’m not sure I’m sold on that idea no matter how good “freelancers” might be.
The reason why you get to a freelancer platform is either because you want to limit costs, have a single point of contact, and/or avoid web agencies altogether. When you hire a web agency you’re gonna have to pay for extra invisible costs, get more people involved, indirectly hire a Project Manager and your budget is going to skyrocket. Even if you don’t see it in practice, the “freelancer” you might be hiring at $60 per hour would maybe charge $50 per hour without the web agency behind. Not exactly the intent.
Why Eastern Europe?
Don’t expect to read any scientific-based approach here. Like I said in the introduction, I’m on a budget and need to have the best ROI. I’ve had great experience working with people from all around the world but I am consistently amazed at talents from Ukraine, Hungary, and other Eastern Europe countries in general. My idea is thus if I want experts at reasonable rates, I need to find them in this region, which also happens to be in a friendly timezone. Win-win. Your mileage may vary.
Searching for experts methodically
I started with creating an advanced Upwork search to match my needs.
Because of the number of search results you’ll get, it can be a bit daunting - if not overwhelming - to find out who’s your best match. Chances are you’ll end up refining your search criteria to dramatically reduce the number of profiles returned…at the risk of missing out on great freelancers. It’s a trade-off you need to carefully evaluate.
Like I said above, Upwork has an API you can leverage to automate the work I’m going to share with you below. The reason why I don’t think relying on the API makes sense here is you still need to consider the human factor in your research. A good profile sure is primarily about raw data, but also - and perhaps more importantly - about how freelancers are approaching their partnership with you, who they are and what they’ve been working on in the past. The most complicated part to evaluate remains: are they good problem solvers and creative developers?
For this project I have, the main skills are Node.js / Express.js for the backend, React.js for the frontend, and MongoDB for storage. I’ve thus built a table to obtain a score based on arbitrary data I want to measure.
I’ve applied an arbitrary 0-5 ranking sytem based on skills freelancers claim to have on their profiles, but also on metadata. I’ve used
IFS extensively to automatically modify the ranking system based on data entered. E.g. with the score you get at an Upwork test.
=IFS(J5 = 0; 0; J5 >= 4,8; 5; J5 >= 4,5; 4; J5 >= 4; 3; J5 >= 3,7; 2; J5 >= 3; 1)
The above will not give you any point if you haven’t taken the test, but the more you’re a high performer, the more it’ll be generous with you.
When you have strong React.js skills but forgot to say so in your profile, well, too bad, but you’re going to have a penalty in my ranking system. The human factor is again important to understand whether or not a skill is real. For example, you can trust someone who’s passed an Upwork test (otherwise you get a 0) and has a number of completed jobs involving this language better than someone who claims to be an expert without any test to show evidence, nor testimonies from happy customers about it.
Besides skills, understanding whether or not metadata can correlate a first impression is critical. For instance, if you seem really good but have worked less than 500 hours on Upwork, it means you’re either new to the site or you maybe lack experience with the whole freelancing thing. If I can correlate expertise + thousands of hours worked + a number of gigs completed successfully (more is not necessarily better, e.g. if you work on long-term projects) + a good hourly rate, then chances are you’re a freelancer I might want to get in touch with.
Above you can also see an expertise column which is about trying to classify freelancers by how they can help at various stages of the project. A freelancer who would struggle with building an API can be an excellent React Native developer or Chrome extension expert.
All in all - and how debatable the scoring system might be - it gives a rather solid and less biased ranking system that will exacerbate professionalism, skills and help develop trust. Now the hard part begins: finding who’s actually available and excited to help you execute on your vision.
Watch out for scammers
I discovered the hard way freelancing platforms (like everything else out there) have their fair share of scammers. And sorry but it’s not going to be easy to spot them. You might think with great ratings, many hours worked, a great score at technology tests and overall attractive profile summaries you’re talking to great developers. Think again. There are perhaps regions in the world where this happens more - or I’ve been unlucky - but the first profile I wanted to hire was a scammer.
So, what do you need to watch out for?
- Ask for Open Source contributions: If the developer doesn’t have any public contributions to Open Source project nor asked any questions in public issues queues ever, then you have a problem.
- Request a video meeting: If the freelancer pretends to be e.g. Russian but the person you have in video looks Chinese, then perhaps it’s 100% legit, but perhaps not so much. If you know a few Russian words, then throw them out and you’ll quickly find out. If you only communicate through chat, then chances are you wouldn’t spot problems from the get go (like meeting a different person from the person you had on the profile pic). Worst case scenario, request a call and ask the person to introduce herself. If no questions are being asked, then it’s probably a sign something’s not quite right.
- Evaluate english level: Upwork has a profile field for english level and even ‘verifies’ the level through a test (as it would with the phone number). When the profile you’re talking to has a ‘Fluent+’ verification and cannot speak a work of english, then you know what do to next.
- Request a trial period: Before you share your code, give access to private tools or pay the freelancer any money, request a trial period. You can be creative about this: think about discussing an existing issue or feature request and having the freelancer’s input on where the issue could be / how to approach building the feature, or ask the person to contribute a random fix on any Open Source project using the same technology you requested, etc. (this will also validate basic Git knowledge).
When you’ve had enough of…reverse engineering all the things
If you’ve had bad experiences with the above freelancing platforms or simply have more budget, there are better options. One of them I really like is Toptal. Their commitment is to only work with the top 3%. What this means is you’ll get capable people who have been screened rigorously not only for their technical skills (freelancers go through live screening and work on a project for 1-3 weeks to walk the walk) but also communication skills, english level, etc.
When you submit your job, you’ll then talk to one of several Directors of Engineering whose responsibility will be to be the matchmaker between required skills / experience described in your job and the right profile. Rates are obviously higher than with other freelancing platforms, but you know what to expect and are likely to find the perfect match this way.
Hiring is hard. Hiring freelancers is even harder. When you find a good one, stick to him/her like glue :-)