Different learning methods make sense for different things and different people. I think for many things collaboration works best in programming. Its certainly more fun to work on solving a problem with someone and helping someone reach an understanding of something as you reach an understanding of it makes you understand it more completely. Just stating things in a way someone else can understand increases comprehension.