I'll be writing my own web-site soon, and some parts of it I plan to outsource to developers (either people I know, or if I won't find any - developers from "freelancers sites").
Has anyone who tried it (or have an idea how it should be done) can give me any tips?
Here's what I thought of so far-
1. Partition the work to small tasks (so that it will be managable and so that I can change the freelancer if I'm not happy).
2. Ask the nominee a few questions about his speciallity before hiring, to see if he knows what he's doing.
From an experienced Drupal consultant's perspective:
First and foremost: Build on an open source CMS or framework. You'll save yourself from re-inventing the wheel, and it will be easier to move from one developer to another if the need arises than if you built a site completely from scratch.
Regarding breaking down work into small tasks: This strategy is a mixed bag. It does limit your risk, but it also raises your cost. If the dev has to prep a demonstration, invoice, etc. for you every couple of days instead of every week or more, you have to pay for the time it takes your developer to do that. Try to find a balance between the two, and also talk to your developer about which tasks are most efficiently coupled together from a time/cost standpoint.
Regarding quizzing your potential consultant: It may be hard to hear, but anything you can quickly look up to quiz him/her with, an incompetent wanna-be dev can quickly look up to answer. The good news is that there are better metrics you can use:
Frankly, most quality consultants avoid freelancing sites and are more easily found via the community surrounding their primary platform (such as Drupal.org for a Drupal developer). Freelancing sites eat too much of a consultant's pay (typically 15-30 percent), and delay receipt of payment, in addition to consuming our time with an awful ratio of bad clients to good, and using their clunky communication channels. We can either raise our rates to cover all that extra overhead, and consequently price out good small business clients, or vacate the freelancing sites altogether and deal directly with potential clients.
From someone who has been on both sides of this, your best bet is to get references.
Don't waste your time with programming tests. Coders are familiar with tests and do them well, but may not do your job well. Furthermore, for those complaining about people looking up the answers, who cares! The end result is most important, and how they get their answers doesn't matter. Of course, they should know what polymorphism is (as suggested by another answer) and other basics, I'm not suggesting they shouldn't. I'm just saying that as someone who works with 15 given languages at any time, sometimes the substr() parameter order is different in one language than the other, and I look it up. That makes no difference on the end result.
Ask your developers how they would split up the project. If you are not familiar with this, then let those doing the work decide how to do it. It may save all of you a lot of time.
Hiring a designer is fine. Not a lot of web programmers are brilliant at design, but they should at least know how to make a good looking site. If you check references, you'll be fine with this.
Regarding the comment about any good programmer is already employed... that is not a hard and fast rule in this economy, but something to consider. When I do freelance work, I don't take on many clients. I haven't been looking for clients in 6 months... taking a bit of a break... but I assure you I could do good work.
For comment about using an open source framework: This is a fine idea if a framework makes sense in your situation. Most of the time, you will waste more time trying to hack WordPress into something that you want, and it won't be all that usable at that point. Reinventing the wheel is bad. Making a wheel into a microwave oven is a waste of time. Use what makes sense for your situation and let your developer help you decide that.
Check the work they've done in the past. Have a conversation with them. Get specific. Ask them specifically what they would do for you. If they can answer you, then you have a good candidate. If they can't, look elsewhere. Check their references. If you do these things, you will get solid developers. It really is that simple.
I would start with a small part to test your developers, but eventually, you're going to save money by "buying in bulk" from fewer vendors. You should be able to pick one or even two if you feel safer.
Get references. Has this person done quality work on time and do they honor their price quotes. If you think you can understand the code, take a look at that part of their work as well.
Focusing only on one area when hiring a freelance programmer can miss you a great opportunity of hiring the right person for the job. Another thing is sometimes conducting only an interview to screen applicants is just not enough to see the full potential of a person.
This article ( https://www.staff.com/blog/hiring-on-workopolis-a-mistake/ ) regarding the common mistakes employers make when hiring should serve as a good list of tips of what you need to avoid.
You need to conduct your search through various channels, which will help you find the right person for the job. Giving a basic programming test is a good way to screen applicants that will help you determine who among the applicants has the skills and expertise that fits for the job.
Having used freelance sites on many large projects, with several providers I will sum it up in two lines:
If you want to get blood from stone here are my tips:
Good luck with this.
On a positive note, what I do suggest you do is try a great site like 99designs to get your design work done.
You can then send your design to PSD2HTML to get sliced and half your work is done.
Both of these sites are great.
Alternatively find a site template at somewhere like themeforest.
Then place an add for a good quality developer on Stack Overflow's career site.
Going down this path you are paying for quality and for most of these sites you will stay be paying a reasonable price.
In addition to the great points in other answers, you're probably going to increase cost and decrease quality if you need to use a lot of developers. Good developers can work on someone else's project but the longer one person works on something the more they know about how it all fits together. Test people with difficult tasks before you commit to them, maybe have a few people build the same thing at first to see which one is better, and consider building a team with different specialties if necessary, but try to avoid switching developers frequently.
You're in a tough position here. There are two common failings when you find developers - either they can't do what they say, or they can do anything but they just don't care about your needs, communicate well, etc. Learning enough about technology to recognize who's good and who's not can take years. Past work and references are a good initial filter, but you'll always learn more about them as you go along (a few initial tasks will at least help to weed out the worst). Combining those three is really the best shot you have but there's always some risk unless you're willing to pay a lot for someone with a long proven history.
With references look for clients in a very similar situation; a developer might do great work for a client who could do it all but doesn't have the time, but if you're in a position of seeking expertise they might not work as well with you. Or a developer might do great work for clients with high budgets, but if you have a very limited budget they might not be careful enough.
Get a very specifically designed test (designed by another top programmer) that evaluates the skill that you need. Then get them to do that test. You can also just use services like Odesk or Remote staff that do their own testing.
And use Time Doctor to manage the staff so that you know they are really working