Building a business is all about teamwork. Sometimes we are working with a permanent team, and sometimes we are working with temporary teammates: freelancers. Both have their advantages and disadvantages, but freelancers pose special challenges in terms of communication and management. That is especially true for software developers, and even more so when the manager has limited technical savvy. Communication can break down quickly and catastrophically.
But it doesn’t have to.
There are a few ways to cross the business/technology gap, getting the job done and making everyone involved happy.
Know Thy Freelancer
Many difficulties with freelance talent – including software developers – can be avoided by just choosing the right person for the job in the first place. If you’re going old-school, look over the resume and get in touch with references. Take a good long look at the portfolio. And if you’re finding a freelancer online, look at their skills, their reviews by previous employers. And take a good long look at their portfolio.
The portfolio will likely be one of the most important parts of the application process. Make sure the developer can do what you’ll be requiring of him or her. If in doubt, ask. Let him or her know what you’re looking for, and open a dialogue.
Don’t Believe the Hype
Again, choosing the right developer can make the rest of the project go smoothly. Vice versa, the wrong person is catastrophic. Be cautious of anyone making “unrealistic promises” or offering a “discount” over his or her regular rate. Be careful of the “I’m giving this to you cheap because I’m just starting out” line. In some cases it’s true, but in many cases that developer is inexperienced, incompetent, or both.
And never EVER choose the cheapest bidder just because he or she is the cheapest.
Give Clear Instructions
Be very clear on exactly what software you want developed, where it will used, and how. You don’t need to be too technical, though if you’re discussing back-end database management or some such you should know the basics. But everything needs to be made clear up front before a freelancer agrees to the job. If a non-disclosure agreement (NDA) is necessary, make that known in the job description.
Set Milestones
Instead of simply giving a developer a list of things you want and then setting him or her loose, set milestones to be accomplished. Each one should have a portion of the pay given out upon completion and communication between the employer and the developer.
It would also be a good idea to set the first milestone as a “trial period.” Definitely pay the freelancer for his or her time, or your reputation could take a hit, but if you’re not happy with the developer up to this point, it’s still early enough in the project to cut your losses and find another.
Be Willing to Compromise
There’s a very good chance you have no idea what goes on behind the scenes. The Google landing page is just a graphic and a box to enter text. But the search algorithm is one of the most advanced pieces of mathematics and computer engineering the world has ever seen. You’re not likely to ask for “a Google,” but keep in mind that your specific instructions may not be possible. Each programming language has built-in limitations, as does the hardware that runs your software. You may not get all the bells and whistles you want.
Stay in Touch
Make a point of touching base with the developer frequently, at least once a week. It’s fine to make if very clear that you don’t need a detailed progress report (and you DON’T need a detailed progress report), and just let you know if everything is on schedule or if there any problems that need to be addressed. It’s possible that the deadline will need to be adjust because the code just isn’t coming together properly. Maybe his or her computer was struck by lightning and all the work is missing (along with the freelancer’s hamster). Or maybe everything is doing just fine. Stay in touch, or you may never know. Until it’s too late.
Pay Based on Results NOT Hours Worked
Whatever the project is, make sure the pay is based on the results you’re looking for and not the number of hours the freelancer works. This works well for the both of you. If you’re looking for difficult (but fast) results, it’s in the a skilled developer’s best interests to get it done quickly, cash out, and move on. As the employer, it’s in your best interest, because you’re not going to be paying your freelancer to watch cat videos on YouTube. It doesn’t matter to you if the freelancers finishes the project in his or her lunch break or loses sleep for a week. You’re paying for the result, not the time.
Establish Ownership
Be very clear up front what the ownership stakes are going to be. Have developers sign non-disclosure agreements and non-competition agreements if necessary. It may seem harsh, but look at Facebook. Mark Zuckerberg (allegedly) took someone else’s idea, did it, and became fabulously successful. Don’t let that happen to you. If you want to partner with a developer, that’s fine, but make sure everything is clear at the outset. Otherwise, there may be a nasty legal battle in your future.
Also, if you’re doing something that requires contractually enforced secrecy, it’s best to only deal with developers from your own country. Laws are different abroad, and enforcement is often lax, so any breach of contract is extremely difficult to pursue.
Play Nice
Whatever happens, be respectful to your developer. You have hired him or her to play an integral role in your company, and that deserves some respect. Listen to his or her feedback, make your instructions clear but not condescending, and demand the same level of respect from your developer. There’s no reason to be spoken down to because you’re better at sales than code. But if you do call a developer on crossing the line, however, do it respectfully.