This short guide will explain some of the best strategies for hiring a quality freelance programmer, and show you some common pitfalls to avoid.
So you've got an idea for a new software project, and you need to find somebody to build it for you. But what's the best way to find the right person for your job?
Here are six tried and true methods for finding the best freelancer for your project.
Your first instinct is probably to think about the people who know who have the skills you're looking for. In some cases, this makes sense, but most of the time, this is a trap!
Just because your friend's brother has his own website doesn't mean that he's the right person to build your E-Commerce platform. If you're serious about your project, you really need to be looking at professionals.
Even if you know somebody who is a professional, it's still not wise to mix business and pleasure. Managing a software project can be quite stressful when there's a lot riding on the line, and that stress can be quite damaging to your personal relationships. I've seen many friendships strained and even broken over contract software deals gone wrong.
If, despite that, you're still looking to hire somebody you already know socially, it's still best to post a freelance job anyway and look at the other offers you get, just to make sure that you're getting a competitive price and competitive quality from your friend. There's no obligation to hire anybody from your freelance job post, but it could potentially save you thousands of dollars and weeks of your time.
To get a quality product, you need to have a crystal clear vision of what you're trying to build, and just as importantly, you need to be able to clearly communicate that vision.
Many freelance job posts look something like this:
That's pretty awful. No developer worth his salt would respond to that.
Now, I realize that you probably think your idea is a revolutionary, world-changing idea that only you could come up with, and that you don't want to give it away. You're going to have to get over that - if you've had the idea, you should assume that a dozen other people have had that same idea. There isn't anybody just sitting around waiting to poach ideas from freelance job posts. The world is awash with good ideas - execution is all that matters.
That doesn't mean your product can't be great, though! Google wasn't the first search engine, Facebook wasn't the first social network, Flickr wasn't the first place to share photos, and so on. Every new idea is just the refinement of an older idea.
So, instead of what we saw before, your job posting should look something like this:
This way, when an iOS developer who has previously done an app which used Facebook login, the camera and file uploading sees your posting, they'll jump right on it, and because they've already got the knowledge about how to do those things, it will save you time and money! You don't have to give away your 'secret sauce,' but just enough that you can find somebody with the specific skills you need.
You don't have to be a computer expert - that's why you're hiring a programmer, but you do need to have some basic technical knowledge about what you want built. This helps you find the best match for your project, and it also means that you'll have some kind of quality assurance once the project is completed.
The programming language you want your web project to be in is an important choice, and something you should definitely figure out before you post your job.
For instance, don't just hire a Node.js developer because you hear that's a trendy thing. Node is great for real time applications, but I wouldn't hire a Node developer to build my shopping cart application.
As a basic rule of thumb, you might want to hire a Ruby on Rails or Python/Django developer for a site with social features, a PHP programmer for an e-Commerce platform or blog, a Node.js developer for an interactive web application and a C/C++/Python developer for high performance server-side software.
Setting a time frame can be critical to finding the right freelancer for your project.
If your business depends on having your application launched in the next week, you're going to need a very different kind of developer than one that will be launched only when everything is absolutely perfect.
Different developers have different development styles. Some are quick and dirty, who will be able to get your product out the door as soon as soon as possible, though some things might not be pixel-perfect all of the time. Other developers are nit-picky and meticulous about writing gorgeous, efficient software, but it can take many weeks or even months to get it to that state.
By including a time-frame in your job description, you'll get offers from developers who are most suited to your particular needs.
Setting a time-frame also stops what's known as 'feature creep.' All software projects tend to expand in scope over the course of time, so this extends the time it takes to develop them. Freelancers don't like to spend too much time on a single project, that's why they're freelancers and not full time employees. If a project starts to get bloated by feature creep, developers may become unhappy and start to subconsciously punish you by over billing you or becoming unresponsive.
Set a time frame in your project description. You don't need to be strict about keeping it, but stating a schedule at the beginning of a project makes gives everybody a clear picture of what the expectations are.
Once you've posted your freelance job, you'll begin to receive offers from interested freelancers.
This is an exciting and fun process! You'll get to see a lot of different styles and skill sets.
It can also be a little overwhelming and stressful. You may get lots of offers, you may only get a few, but the important thing is to be patient. The right person is out there.
If you choose the first person who comes along, you may end up missing a better opportunity. Start conversations with everybody who you think might be a good candidate to see if you have good chemistry together.
Remember, you're probably going to be sending hundreds of emails back and forth, so it's important that you find somebody who's the right match for you. Programmers are busy people, so they don't always have the time to jump on every offer as soon as they are posted. Those that do immediately pounce on your offer may just be 'fishing with dynamite,' sending replies to every offer that comes along, even if they aren't the best fit for every job.
Be patient, and choose the person who you feel is right for your project. Once you've found the one, you should take down your job posting and you'll stop receiving offers.
Once you've chosen the best person for your job, make sure that they completely understand your vision for the project, your expectations and your time frame. You should ask for regular status updates and ask to see demonstrations when new features are added.
With that being said, don't micromanage. Software development is a subtle art, and they're the expert, not you. Eventually, you'll be happy, but along the way, things don't work right, they take too long, they crash and they look butt ugly. That's okay. That's how every single piece of software ever written came about. Give your developer some space to do his job.
A great way to keep on top of your developer is by having them share their version control system with you. This will probably be GitHub, which is a website where many of the best programmers host their software projects. You should purchase a premium GitHub account and add your developer to your group so that you can see their code during development, without sharing it with the rest of the world.
A pitfall here is to equate line count with the amount of work done. Sometimes, a chunk of code that's only 20 lines long can take 5 hours, while others that are hundreds of lines long can be done in 20 minutes. That's just the way things go. Instead of watching the line count, just make sure that your developer is making regular commits to the code repository and that the code has momentum.
Some developers are shy about sharing their in-progress code (it's a bit like being caught with your pants down), but just let them know that you need to see that they're making progress and that you won't be judging them on their code until they're ready to show you a demonstration.
And there you have it! That should be enough information to get you started on your hunt for the best freelance programmer for your next project. Oh, and if you're wondering where to hire a freelance programmer, look no further, because this is Gun.io, where there are thousands of top developers from the open source community waiting to work on your projects!
Still have question, comments, or experiences to share? Leave them in the comments section below!