Context Driven Learning
Date: 2008-10-13 20:44:03

One pattern I've noticed over the last couple of years with regards to my own learning is that I find it very difficult to learn new things unless I can directly apply what I have learnt to a real life situation.

I feel this was part of the reason I found the way material is taught at universities so difficult to understand - nearly every course I studied was taught on its own without any reference to the others, and rarely did I get to use the ideas I learnt in a *practical context*.

To give an example from the professional world, last year I was working on a project for an investment bank and I became very interested in the domain and started reading a lot of finance books including http://www.amazon.co.uk/Den-Thieves-James-B-Stewart/dp/067179227X/ref=sr_1_1?ie=UTF8&s=books&qid=1223883546&sr=8-1[Den of Thieves], http://www.amazon.co.uk/Traders-Guns-Money-Unknowns-Derivatives/dp/0273704745/ref=sr_1_1?ie=UTF8&s=books&qid=1223883568&sr=1-1[Traders Guns & Money], http://www.amazon.co.uk/When-Genius-Failed-Capital-Management/dp/1841155047/ref=sr_1_1?ie=UTF8&s=books&qid=1223883662&sr=1-1[When Genius Failed], and several others.

I finished on the project and started working on a project in a completely different domain. I tried to continue reading the books but my interest had waned considerably now that I had no context to apply my reading to.

I noticed a similar trend with software books - I read http://www.amazon.co.uk/Refactoring-Patterns-Addison-Wesley-Signature-Kerievsky/dp/0321213351/ref=sr_1_1?ie=UTF8&s=books&qid=1223883721&sr=1-1[Refactoring to Patterns] when I reached the stage of knowing unclean code when I saw it, but being unable to fix it; some of http://www.amazon.co.uk/Working-Effectively-Legacy-Robert-Martin/dp/0131177052/ref=sr_1_1?ie=UTF8&s=books&qid=1223883754&sr=1-1[Working Effectively with Legacy Code] only when I worked on a project which had a lot of untested code; and http://www.amazon.co.uk/Domain-driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=sr_1_1?ie=UTF8&s=books&qid=1223883781&sr=1-1[Domain Driven Design] when I became interested in how to interact with 3rd party systems cleanly on my next project,

A similar idea is described in http://apprenticeship.oreilly.com[Apprenticeship Patterns], in the chapter titled 'http://apprenticeship.oreilly.com/wiki/show/right_book_right_time[The Right Book At The Right Time]'. The authors talk about working out which book is right for you at the time and not just reading the most prestigious book.

The barometer I am using at the moment for knowing whether it is the right book to read right now is *how strong my motivation is to read it* - for example I have been struggling to read http://www.amazon.co.uk/Interface-Oriented-Design-Pragmatic-Programmers/dp/0976694050/ref=sr_1_1?ie=UTF8&s=books&qid=1223894274&sr=8-1[Interface Oriented Design] for the past 3 weeks but as soon as I saw we had a copy of http://www.amazon.co.uk/Test-Driven-Development-Addison-Wesley-signature/dp/0321146530/ref=sr_1_1?ie=UTF8&s=books&qid=1223883908&sr=1-1[Test Driven Development By Example] in the office I picked it up and finished it within a day.

== What do I gain from this approach?

The main advantage of learning in this way is that it helps concentrate your focus on what will be most useful for your current situation.

The benefits of this approach are also pointed out in http://www.amazon.co.uk/Job-Went-India-Pragmatic-Programmers/dp/0976694018/ref=sr_1_1?ie=UTF8&s=books&qid=1223892616&sr=8-1[My Job Went to India] in the chapter titled 'Be Where You're At' which talks about the benefits of focusing on the here and now rather than  always thinking of the future:

____
Focusing on the present allows you to enjoy the small victories of daily work life: the feeling of a job well done, the feeling of being pulled in as an expert on a critical business problem, the feeling of being an integral member of a team that gels.
____

If we can focus our learning around what we're actually working on then it certainly becomes even more enjoyable from my experience.

For me personally it also plays directly to my learning strengths - I understand material I read much more easily when I can apply it in context soon after if not immediately.

== Drawbacks of this approach

The main problem I can see with this approach to learning is that you become somewhat reliant with regards to your learning on the projects that you are working on.

I started to realise while writing this that what I'm describing might more accurately be called  *project driven learning* and it is certainly the case that projects can provide a great deal of context for learning.

I don't think that learning needs to be totally guided by projects though - there are areas of software development that I am very interested in and I look for opportunities to learn more about these areas on my projects as well as from conversing with my colleagues.

Admittedly my motivation to learn coding wise comes from projects I do at work - I haven't yet generated the enthusiasm to work on open source projects although as an avid open source user, I am very grateful to those who do take this approach.

I understand that this approach may not work for other people and certainly those who ran with Ruby & Rails early on in their own time were learning ideas that they didn't necessarily have a context for and were perhaps *creating their own context*.

I also appreciate that there are many people who are able to just read books or papers on a vast array of different subjects at the same time and understand the concepts perfectly, but me - I need a context!