For learning a new language or framework , is it better to learn by working with someone else on an existing project or creating a new one myself?
I had experience on working on a open-source rails project for four months. The project was nicely written, and it has lot of good examples for me to learn, but I didn't get too much of rails in the end. At the end, I was still confused by many rails/MVC concepts.
On the other hand, after that rails project, I myself started creating a ASP.net MVC from scratch. I ended up successfully building a fully functioning MVC web site and used a lot of ASP.net MVC features. I had a way better idea of MVC and ASP.net MVC's mechanisms after this project, but meanwhile, I might have employed many bad solutions without even realizing it.
So which way do you think is better for learning? What are the pros and cons for each approach?