TL;DR you need to have experience and knowledge in order to weave-out the bad candidates… but odds are, it’s due to your non-experience that you’re looking on these websites.
Having a technical co-founder from the beginning is definitely the way to go. Unfortunately, sometimes you just haven’t found the right person (yet) and need to make do with what you have. You could learn coding yourself, but that’ll take time, and trying to juggle the technical side together with marketing/sales is something you should leave to PROs like me 🙂 . Your time may be better spent focusing on customer development, marketing, distribution and raising money (if needed). Now you need to learn how to hire a freelancer.
Very soon after starting my mobile apps business (building them on my own and putting the on the App Store) I realised I could jump start profits by being hired as a freelance developer. I’ve had experience with many different scenarios and every single project has taught me something… but this is mostly due to the open approach and always looking to improve myself. I’ve worked with wealthy individuals who wanted to fulfil their desire of having an app made, media agencies who wanted to diversify their revenues, startups who were betting almost everything they had on a project and bigger brands who needed guidance in this new business. They all need the same product (a mobile application) but require different experiences (due to different values). A good freelancer should also be able to provide insight to the client and educate regarding different possibilities, opportunities and threats. A good freelancer is like a swiss army knife.
I believe you can hire a freelancer to build your product or MVP and make it work, but there are a couple of caveats especially when using platforms such as elance, odesk, freelancer etc. I looked into it when I was starting and immediately noticed the poor quality of most of the supply and how hard it was to find good freelancers (there are good ones) but I didn’t want to place myself in such an environment.
The bottom line is that to hire a freelancer you need to have experience and knowledge in order to weave-out the bad candidates… but odds are, it’s due to your non-experience that you’re looking on these websites.
Now that I can leverage my higher status as a developer and consultant, I have been contacted countless times by people who do not know what to do with the project they outsourced. I’d look at it and it would be so bad I can’t even fix it: it’s faster to start from scratch.
5 Steps to find a freelancer
1. Do code reviews
The biggest drawback of not having a technical background is not that you cannot do the work, it’s that you can’t tell how well other people are doing their work. I’ve seen several projects where the code was a mess and the founder had no idea. Code quality matters, because very similar to how complexity incurs extra costs, messy code does as well.
Unorganized code means that every new feature of fix will take incrementally longer to implement. Messy code prevents you from moving fast, which is pretty essential for most startups. Something that I could usually implement in five minutes may take several hours if code isn’t well structured. And it only gets worse over time. Similarly, it will take a lot longer for new developers to become productive if your code isn’t organized well. Working with ugly code isn’t fun either.
Hire an expert to regularly review your code. Contrary to what you may think this doesn’t cost much. A good developer can tell “good” from “obviously bad” code in a matter of minutes. Hire a consultant for one hour and he can tell you exactly what state your code is in. That money is well spent. If you find that your developer has created a mess then you’ll have to weigh the cost of a rewrite. A rewrite isn’t always worth it and you probably should talk to someone you trust about your specific situation.
2. Hire a freelancer through sample projects
Don’t trust reviews or portfolios. Developers have gotten really clever about creating fake portfolios, or signing up with multiple accounts and reviewing themselves. The best way to figure out if someone can write good code is to have him do a small sample project. That has the added benefit of making sure that communication is working well between the two of you.
Come up with a small project that can be completed in less than two hours by someone you know is a good developer. Use that as a screener for hiring a freelancer. Ideally you will have someone review the quality of the final code as described above and make your hiring decision based on that.
3. Understand that your goals are not aligned
You want to build a great business. Freelancers want to make money. They have nothing to lose if your business fails. There are exceptions and some people will genuinely care about you being successful, but generally don’t assume that to be the case.
In fact, the motivation of most freelancers directly competes with writing concise code as described in #1. To make more money, some freelancers will intentionally create code that is bloated and complex. This leads to more work (= more money), and a barrier of entry for other developers, so that you end up becoming “dependent” on that person. I’m trying to not be prejudiced, but in my experience this is most likely to happen with developers from poorer countries like India. Hire a freelancer that shows enthusiasm and knowledge, it will go a long way.
Again, this is something that can be solved by code reviews, but you should be aware of the possible conflict in interests at all times.
4. Have a good system for project management and communication in place
Communication is key for a small team, and most freelancing sites are not doing a good enough job at it. Personally I like to use a combination of email and Skype. Ask freelancers to communicate daily and describe their progress. In addition, they should be able to regularly deploy a development build for you to test. There are many little issues that come up when you actually play with the app and it’s better to smooth these out while still coding rather than when it’s done.
5. Hourly vs. fixed-price jobs
Most freelancing sites allow either fixed-price or hourly jobs. Which one is better?
The problem with hourly jobs is that some developers will intentionally waste time to make more money. Freelancing sites like Elance and Odesk provide time-tracking tools, but these are not really useful for monitoring how hard a developer is working. I’ve seen developers spend hours on something that shoudn’t have taken more than 30 minutes (based on the task and github commit data), and it wasn’t due to a lack of skill. There are two ways to go about this: 1. Have someone else review a freelancer’s hours and check if they are reasonable 2. Restrict hourly jobs to people you trust.
Fixed-price jobs on the other encourage developers to finish as quickly as possible. This often results in unorganized and messy code, which in turn results in a lot of maintenance costs down the road. Many developers are not willing to accept fixed-price jobs due to bad experiences. For example, I once had a client who kept requesting additional features but wasn’t willing to pay more. Worried about getting a bad review I had no choice but do either the work, or go through a lengthy dispute. I only do fixed-price jobs if I know the client well or if the project is well defined and I know exactly how long it will take me to complete.
There isn’t a clear winner between fixed-price and hourly jobs, and you should be aware of the tradeoffs (when it comes to low-budget projects), but I will only do fixed-price… 🙂
partially via Denny BritzHow to hire a freelancer by BigBalli