Tips for getting the best results when using freelancers to develop your software projects
by Doug Farrick
In certain instances, the quickest and most affordable way to a get a software product developed is to use a freelancer to develop the product for you. This is especially true with simple, java-script or C++ based programs, designed to accomplish just one task.
Often you can find skilled programmers who can create the exact program you want in a matter of hours - for far less than it would cost you to develop these programs in-house. From personal experience, I can you tell you that using freelancers I've had commercial quality software programs created for as little as $20.
Of course, there can be problems in dealing with freelancers. The freelancer may not turn out quality work, they may not understand your project specifications, they may not speak your native language - and they may just disappear in the middle of a project.
There are steps you can take to reduce potential problems and increase the chance of having success with freelancers. Here are the ones I recommend.
Tips for getting the best results when using freelancers
1. Stick to simple, easy to develop projects - Most software projects fail because they are too complex, have too many elements, too many tasks, and too many things that can go wrong.
By sticking to simple, single purpose programs with a clear focus on what the tool is supposed to do, you will have far greater success in actually getting the tool developed.
Instead of trying to develop a program that does everything for everybody, create programs that do just one specific thing.
These kinds of programs are easier to develop, easier to market, easier to support, and easier for the customer to use.
2. Write a concise program description - Before you place your project up for bids, you need a concise description of the program you want developed. Detailed enough so the programmer can understand what you want, but not enough detail for a potential competitor to steal your idea.
To do this, learn to write descriptions like:
Project Name: Web page word counter
Project Description:
I need a program that can count all the words on a web page, and then sort those words by frequency of use and then display the list, sorted by most frequent words used, with a word count shown by each word.
The program should have an entry box where a web url can be entered, and when 'submit' is clicked, the program should produce a sorted list of the words on the page. Html code should be excluded from the word count.
I want this program to run from my web site.
This description provides a competent programmer all the information needed to bid on the project, but doesn't reveal to others how you plan to use or market this program.
One way to learn how to write good project descriptions is to read the descriptions of other projects posted at scriptlance.
3. Set a reasonable budget - A frequent mistake when placing projects out for bid is to set the budget for the project too high. Often, the amount of work involved in creating a program will be far less than you expect, and what you would be willing to pay would be far greater than what a competent programmer would charge to create the project for you.
For the above project, I set a budget of $20. And I had bids for as low as $7. The winning bidder bid $15 and had the project completed for me - before he bid!
In most cases, if you set your budget too low, programmers will still bid on the project. But if you set the budget too high, you'll never know what the real world price of the project should be.
4. Prepare detailed project specifications before you submit the project - In step two above, we wrote a concise description of the project to help potential bidders understand the project. But to be certain that you actually get the exact program you want, you will want to develop a more detailed description including screen shot prototypes for the program.
You'll use this more detailed description to provide further explanation of the project to potential bidders who might ask questions, and to the chosen programmer.
To create a mockup of the program screen, I use PaintShop Pro and just cut and paste a mock up. Then I add programmer notes. If there are multiple screens in the program, I create a mockup of each one. These mockups help the programmer know exactly what I want.
5. Submit the project - There are a number of sites where you can submit project bid requests to freelancers, but I generally submit my projects to http://www.scriptlance.com. For non-complex, javascript, C++, and PHP programs, scriptlance is a good place to find quality programmers. Other places to submit projects include www.elance.com and www.rentacoder.com.
When submitting your project, be sure to include a concise description (see step two above), a reasonable budget (see step three), and be prepared to submit more detail (see step 4).
Within minutes of submitting the project, you will usually begin receiving bids from freelance programmers.
6. Evaluate bidders carefully - When I post projects, I usually get 10 or more bidders within the first 24 hours of placing the project online. Here's how I evaluate bidders:
- Review Bidder Feedback Rating - At scriptlance, every bidder has a feedback rating. The higher the rating, the more projects the bidder has completed. I look for bidders with feedback of at least 10, and prefer bidders with feedback of at least 40.
- Review Bidder Feedback Comments - Along with the feedback rating, you can also review comments posted by those who have had projects created by the bidder. I read the feedback comments for any bidder I am considering. If there have been problems, I avoid the bid.
- Review Private Message Posts - At scriptlance, bidders will use the 'private message board' to post messages to you about the project. Usually these messages will ask more questions about the project, or provide additional information about why you should choose the bidder. In some cases, bidders may let you know they have already created the project for you, and they will provide a link where it can be viewed (I like bidders who do this). Whatever you do, read and when appropriate, respond to the private message posts.
- Review the bid amount - When a freelancer places a bid, the bid will include the bid amount. Review this amount carefully. Be sure the bid is for the completed project and is not a open ended 'per hour' amount. Most freelancers will bid for the completed project, but check to be sure.
- Review 'Delivery within' days - When a freelancer places a bid, they will include a projected number of days needed to complete the project. Be sure to review the number of days entered. Generally, the longer a freelancer expects it to take to deliver the project, the less likely the project really will get completed at all. Look for bids with shorter delivery dates.
- Be wary of lowest prices - I rarely choose the bid with the lowest price. Instead, I look for bids from freelancers with high feedback ratings and reasonable prices. I would prefer to pay $20 more for a reliable, proven programmer than try to save $10 on an unknown.
- Choose a programmer - After you have evaluated the bids and checked the feedback of the bidders, choose the programmer that you feel can best create the project within your budget and time frame. Avoid bids with no feedback, and rely more on the feedback comments left by others rather than the comments the bidder makes to you.
7. Stay in contact - After you choose a programmer, the programmer should contact you for more information. At this time, provide the programmer with the detailed description created in step 4. (I usually do this by creating a web page with all the program screen shots and specifications on it.)
Also provide the programmer a way to reach you by email.
Answer programmer questions promptly, and follow up on the project status at least every 48 hours.
If you have written solid project details, and if the project is relatively simple, the programmer will probably get the job completed in a day or two (or even a few hours.)
8. Test the results - Rarely will the first version of the program be exactly what you want. In most cases, there will be areas needing improvement or minor revisions. The only way to know for sure is to test the program yourself.
Testing means trying out all the functions, proof reading all the text on all screens (look for misspellings, etc.), and checking the results for accuracy.
Make notes of any problems or changes needed, and send these to the programmer. When I do this, I usually get a screen capture of the program, and annotate areas that need to be changed.
9. Pay promptly, but only after the job is completed - When the programmer sends you the final version and you agree that the program meets your needs, pay for the job immediately - using the scriptlance payment system.
After you pay, use the feedback system to provide valid feedback for the performance of the programmer. Doing this helps others evaluate the programmer.
Further Notes
When I first started using scriptlance, it took me a few tries before I discovered that using freelancers worked best for small projects. All the complex projects I submitted were never completed.
But with small projects, I've been very pleased with the results. And I have found a few programmers that I now use for all my small projects (these programmers are located in Russia and India).
By following the above tips, you shouldn't have any trouble getting excellent programs developed quickly and affordably.
One final point - stick with simple programs. I've already mentioned this, but it is worth repeating.
Simple programs are easier to define, easier to develop, easier to test, easier to market, and easier to support.
Keep this in mind, and you'll have a much better chance of successful projects with freelancers.