Chunking for learning software development

In a previous article, I wrote of the value in developing your own experience in order to retain information. I wanted to see if this process could be streamlined even further. Flashcards are automated tests, and I think of them as atactic. Chunking on the other hand, I think of a strategy for learning software development. Chunking in software development is one of those ‘secret sauces’ we should all know about.

I’ll start with an overview.

What is chunking?

Simply put, it’s the rapid retrieval of complex info into one ‘block’. I had the privilege of going to a seminar entitled ‘A Comment On How We Learn’ by the entertaining and engaging Aino Vonge Corry in 2015, during which I first learned about the concepts of chunking.

In her seminar, an example is given of an experiment with a novice being pitted against a chess-master. They both need to quickly memorise a board’s layout, and then reconstruct the board. As you might expect, the chess-master is much more adept at setting up the positions from memory than the novice.

How will chunking help me learn software development?

Let’s go back to the chess master example. In his lifetime of learning board configurations, he had:

  • Learned (encoded) vast numbers of logical board layouts.
  • Taken them from working memory to long term memory and back again (retrieval).
  • Conceptualise complex layouts in a single recall and recognise patterns.

In software development, chunking could be used for learning all sorts of software development concepts. For example:

  • A design pattern like a decorator.
  • A technique like using curl and SSH to troubleshoot where a connectivity problem lies.
  • A framework/technology like Amazon ECS.

Once you’ve nailed it, you don’t need to think about the individual steps. It’s quite straightforward for you to troubleshoot, because without thinking, you instinctively know where to look for the problem.

Working memory vs long term memory

The ‘Learning how to Learn’ MOOC explains the difference between working and long memory well with the diagram below.

The ‘Octopus of Attention(3)’ shows how as you are working hard to process new information, you have 4 areas of working memory to you to process all this new information.

As you switch off and stop focussing you move to a different mode. In ‘diffused mode’, you consolidate your understanding and learn. The memories (and importantly, the relationships between them) are built in your longer term memory, as shown on the right.

Illustration 1: Working memory vs long term memory

As you can see from the right hand side of the diagram, in the longer term memory, relationships have formed between some of the neurons. When the information and their relationships can be ‘recalled’ in a single ‘unit of learning’, you have a chunk. These chunks will be the building blocks of your software development training.

You can’t ‘upload’ experience

Where the chess experiment really got interesting, was when a computer generated random board layouts, ones that made no sense. At this point the novice actually started to outperform the chess-master. Why? Because the chess-master couldn’t recall any encoded layout for something so ‘nonsensical’. The novice on the other hand had no patterns to struggle to recall so now they were on a level playing field in terms of experience.

Later in the seminar, we also get an explanation as to the frustration experienced when you are the teacher and the student doesn’t seem able to grasp the concept. It’s more than likely due to the fact that all the encoded chunks in the teachers brain, making things so easy to recall for the teacher, are the unique experience of that teacher.

In the diagram below, the person training you has developed the complex relationships between the concepts, what they are are capable of pulling into working memory.

Chunking for software development - a simple diagram showing the
Teacher’s knowledge of a subject vs student’s knowledge

But what if you are the student?

The seminar was both vindicating and enlightening. After attending, I didn’t feel bad for not getting stuff straight away. But, it was aimed at educating people who are training others. That did get me thinking – what happens, when you are the student? When you are the person who is being trained, who can’t seem to piece it all together? You feel bad for not getting concepts, and it’s quite hard to say ‘you’re training me wrong!’.

Since we can’t ‘download’ our trainers experience, we will have to learn it for themselves. There’s no easy way if you want to get good at something. What we can do though, is give ourselves a head-start and start building ‘just enough’ knowledge to get ahead of the game.

I’m covering that in a separate article, with some actionable tips for developers.