Course Update: The Learning Experience

One of the best and most challenging things about building a course is you get to decide what kind of experience you want to deliver. This has really forced me to reflect on the learning process.

Developers are craftsmen. And just like anyone who takes their trade seriously, constant reflection and analysis are key to maintaining a high level of performance. 

One of the things I like to analyse is how we learn new things.

If ever there was a trade that relied on your ability to learn, it is programming and web development. No matter how experienced you are, the learning does not stop.

Currently, I personally have two areas of focus.

Firstly, I am learning Java for backend, and AWS. Those are big topics, just like Javascript. 

Secondly, my job requires me to pick up smaller things at a much faster pace:

  • A third party API and how we can integrate it
  • React Router 6 update the changes it will require to our code base
  • A colleague’s use of Less for styling. I don’t really use Less, but I need to learn it quickly so we can work together

My question is this: should I be learning Less styling the same way I study AWS?

In other words, would you learn how to operate your new digital camera the same way you would French or Spanish?

The first is more procedural and practical. The second requires a broader approach, combining theory, immersion and practical application.

And yet, I find developers turn to the same dusty processes for every new subject. Usually it involves reading the documentation and doing the tutorial. OR, taking an online course and completing the exercises or course project. Are these approaches any different?

Of course the online course is meant to be much deeper and richer in content. But the pattern is the same: read or watch stuff, then try to apply it yourself. Sounds to me like exchanging a small manual for a giant oversized one, with a lot more information to digest!

But not all learning is exclusively about information. If it was, learning javascript would be as simple as studying the MDN docs. 

A Learning Experience

The phrase ‘learning experience’ sums it up. For subjects that require broader understanding, the experience of learning is the key to retention and application. Watching, reading and applying is simply not enough - just like learning vocabulary and the rules of sentence structure and applying it in a test is not enough to grasp a language.

Learning Javascript using creative abstraction and imagination is one way to add an extra dimension to the experience. It has personally taken my understanding of the language to a level I could not have achieved without it. But it was only one part of the puzzle. 

Really, it was the combination of everything that accelerated and deepened my knowledge. Things like:

  • Attending conferences and talking to other developers
  • Listening to podcasts
  • Reading physical books
  • Coding in different environments, like an online game or creating an Amazon Alexa skill
  • Self-testing my understanding verbally
  • Teaching others

The more perspective, and the more senses involved - especially touch - the more powerful the immersion. I have lost count of the emails I have received asking for advice on ‘becoming a javascript expert’. One might believe it’s the amount of code you write and the practice you put in. Obviously this is true. But only partly.

Sustained and effective immersion is how one masters one’s craft.

The Great Sync Learning Experience  

To bring it back to The Great Sync course I am building - I am thoroughly enjoying designing an experience that I truly believe enables one to build a mental model of Javascript. It will include the following:

1. Sketching and diagramming

Honestly, I am atrocious at any kind of drawing. Just ask the poor artists who work with me creating the TGS illustrations. But I strongly believe in its power to reveal the relationships between things. Have you ever been confused trying to work out a FOR loop inside another FOR loop? Drawing it can make it much easier to understand!

2. Documentation and blog posts

Reading is a fundamental skill of being a developer, and it’s not always about the code itself. The language we use to describe things can be just as important as the concepts themselves.

3. Podcasts

Listening is another important yet undeveloped skill. We can practise listening to others discuss subjects, without a visual representation.

4. Source code

Some argue that beginners need not and should not be introduced to source code. My belief is the sooner the better - reading other people’s code is half the job as a developer.

5. Investigation work

This is a personal favourite. Investigating and reflecting on concepts on your own should always be a starting point. This means running countless snippets in your console, and crashing your browser over and over.

6. Self quiz

I am a big believer of regular, routined testing to consolidate and deepen comprehension. This is something we will build upon throughout the course. 

And of course, interwoven between all of it is the fictional, mnemonic universe I call The Great Sync, which provides a memorable reference point for every concept. 

This is what I am building. Do you like the track I am on? Let me know what you think a good learning experience is, and if the approach I have outlined above excites you. 

© 2021 The Great Sync - All Rights