The advantage of the contract with a specific project is two fold:
1) It makes it very easy for either party to end the relationship in a natural and simple way. Minimal hurt feelings/embarrassment/harm to morale, etc.
2) The project is at least semi-isolated so it's very clear how skilled the person is. They don't get lost in some "training" mode as a new hire spending 6 months "ramping up" on the primary codebase. They (hopefully) get an early win and earn respect and confidence from the beginning.
The obvious disadvantage is that if you do hire a really good developer for a short project, they will have to start looking for their next contract almost straight away, and so you are likely to miss out on converting them to full time. By the time you've figured out they're good at what they do, they have another offer (at contracting rates).
1) It makes it very easy for either party to end the relationship in a natural and simple way. Minimal hurt feelings/embarrassment/harm to morale, etc.
2) The project is at least semi-isolated so it's very clear how skilled the person is. They don't get lost in some "training" mode as a new hire spending 6 months "ramping up" on the primary codebase. They (hopefully) get an early win and earn respect and confidence from the beginning.