Learning alone or Learning together
Date: 2009-01-25 23:00:39

One of the things that I have been curious about since we started running http://www.markhneedham.com/blog/category/coding-dojo/[coding dojos] is whether people learn more effectively alone or when learning as part of a group.

Not that I think they are mutually exclusive, I think a combination of both is probably the way to go depending on what it is we are trying to learn and the way that we're trying to learn it.

== A new language

I think learning a new programming language is one of the times when learning on your own makes the most sense.

That way we have the freedom to try things out and understand how everything fits together without frustrating other people who may understand more than we do.

There comes a certain stage though where we have questions that we can't answer and then I think it is quite useful to be able to work through the problem with someone else and get their input.

I'm currently learning F# and although I've been learning it alone it has still proved to be useful to talk through some of the ideas I've come across with colleagues and get their input on useful approaches to take for my future learning.

== Technical Book Club

We recently started running a weekly http://www.lostechies.com/blogs/jimmy_bogard/archive/2007/12/12/decomposing-a-book-club.aspx[Technical book club] in the ThoughtWorks Sydney office. The first book we're reading is Eric Evans' http://www.amazon.co.uk/Domain-driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=sr_1_1?ie=UTF8&s=books&qid=1232876782&sr=8-1[Domain Driven Design].

The idea is that people read part of a chapter alone and then we come together once a week to discuss that area of reading. The idea of discussing what you read is one which is encouraged by Andy Hunt in http://www.markhneedham.com/blog/2008/10/06/pragmatic-learning-and-thinking-book-review/[Pragmatic Learning and Thinking], and I have certainly got more from reading the book and discussing it with my colleagues than I did from just reading it alone about 6 months ago.

We've been going through a few chapters over the last couple of weeks which we've found quite difficult to discuss but actually showing some code of how to implement certain ideas has made the sessions much more interesting.

For example last week two of the members of the group were able to show some examples of using the specification pattern which brought the ideas to life a lot more for me than just reading about them in the book.

I've found taking part in a book club brings a renewed focus when reading and others in the book club are able to explain areas of the text that I didn't understand when I read it.

== Coding Dojos

Coding Dojos are the ultimate when it comes to learning together. The format that we have used the most is to have one pair driving the code, rotating a new person in every seven minutes.

We started out solving problems in an area where everyone had a high level of proficiency but the last two weeks have tried playing around with libraries that not everyone had a great deal of experience with.

While there is learning to be gained from the latter, people seemed less keen to get involved at the keyboard on these sessions so I don't know if as much was gained from these sessions as could have been.

In previous sessions though I think the dojo approach has been really good for helping us to 'practice what we preach' in terms of following good practices while at the keyboard. Having 4 or 5 other people watching you tends to encourage that!

I'm sure we haven't found all the learning areas where coding dojos can be useful, but I'm veering towards thinking the maximum is gained when the majority of people have some experience with the technology being used.

Alan Dean looks to be taking the idea even further with his http://alandean.blogspot.com/2008/11/space-coding-day.html[Open Space Coding Days] which http://openspacecode.com/uk/london/2009-01-31.xhtml[start next weekend]. It will be interesting to see the feedback on the learning people were able to achieve in this environment.