Pros
1. You may need to handle a whole project, that will help you to understand the full workflow of a small project. 2. You need to learn multiple languages since you have to complete the whole project. 3. Flexible timing 4. You will get the opportunities to apply the new learn things in the project.
Cons
1. Coding quality is not up to the mark since no one is there to review your code. 2. Time of the project is always 4months regardless of how big or small the project is. 3. You always have too many works in the queue to complete within a specific time, that will cause bad coding quality. 4. No specific work domain or language. You will not get any consistent domain or language. You may need to work on Java for 6 months then you need to work on php for the next 6 months. That will stop you to learn any specific language in details. 5. No fixed appraisal cycle.