Julie Bogart's insightful book The Brave Learner introduces compelling strategies for successful homeschooling, infused with love and the concept of "enchantment" to inspire young learners. Intriguingly, many principles from this book align seamlessly with the process of learning to code.
One such principle is the concept of the four capacities for learning - Curiosity, Collaboration, Contemplation, and Celebration. Each of these has its place in the journey of learning how to code. Let's delve deeper into what each capacity entails and how they can be applied specifically to your coding journey.
Curiosity
This is the initial, necessary step towards learning any subject. If you’re already learning to code, your curiosity has (hopefully) already been sparked, but how do you keep that going?
Perhaps you’re having a tough time with APIs, or maybe Object-Oriented Programming concepts are just not sticking (polyWHATism?!). It’s easy at this stage to feel like you’re at capacity, and then it becomes even easier to forget to be curious.
One way I work to get past this feeling is to apply the concept I am learning to something that has an immediate impact on my life. Understanding it practically can help frame a concept in reality, and make it simpler to use.
Another way is to approach it as a child would approach any new object. They might drop it, misuse it, or test its limits. Interestingly, when children do this, they are not trying to destroy the object, they are merely curious about it. And through that curiosity, they find ways to use the object, as well as ways not to use it. You can do the same with coding concepts!
Collaboration
We’re not meant to learn alone. Even if you’re self-taught, you need to be able to bounce ideas off of others. Learning does not happen in a vacuum.
So, if you’re feeling like your well of curiosity is running dry, it may be time to find ways to collaborate with others. One way to do this is through pair programming.
Pair programming is an excellent collaborative tool. In this setup, one person writes the code while the other reviews each line as it's written. The two programmers switch roles frequently. This process encourages collaboration and fosters a deeper understanding of coding principles.
Another way to fuel collaboration, especially for the people who like to go at it alone, is to join a supportive community like 100Devs. Doing so allows you access to a community of learners just like you. You can engage on your terms, through chatting on Discord, finding partners for projects, or even just hanging out in voice chat and learning from whoever is speaking. Just being exposed to the ideas and thought processes of others will significantly help expand the way you think about coding concepts.
Contemplation
Next is likely the most overlooked and, in my opinion, most important step. Contemplation, as explained in The Brave Learner, is not about “being in the lotus position at sunset, gazing at the ocean.” It is learning through movement and repetition.
An example from the book was of a child playing basketball. If they’re in a contemplative state, they may set a challenge to hit x number of shots in a row before they can stop. I have been that kid, and my nephew is that kid today, so this really resonated with me.
What does that mean for people learning to code? It means that, as the great Leon Noel says, we have to take the example code that we have, break it apart, play with it, and make it our own. One way of doing this, if you’re just starting out, is to start with a small program that works, delete all of the code, and then retype it (I’d keep a copy to reference, so you don’t get stuck). Then do it again, and again, and again, until it starts to make sense. As you’re doing this, and making little modifications as you go, you’ll find yourself in this contemplative state. This is where the learning really begins to cement. It's through these contemplative practices that you build muscle memory and a deep, intuitive understanding of the subject.
Celebration
This last step is my most neglected. No matter how difficult the concept or how much I’ve achieved, my personality seems to push me to immediately move forward to the next thing. And then, after a month full of checked boxes and unlocked achievements, I’m shocked to find that I am feeling burned out.
I’m not suggesting you throw yourself a party or eat a cupcake for every new concept that you learn (although, that does sound fun!). But setting up a small reward system and sticking to it will do wonders for preventing burnout and resentment.
For instance, if you've successfully debugged a piece of code or built your first functional app, take a moment to celebrate your accomplishment. It could be as simple as a short break, your favorite snack, or sharing your achievement with a community of fellow coders.
Conclusion
These are strategies you can begin implementing today and continue with at any stage of your learning journey. I’d love to hear your feedback if they were helpful for you, or if there are any additional strategies you would add to this list. As a further extension to this, I recommend picking up a copy of The Brave Learner. Even if you're not planning to homeschool, the book's wisdom transcends its original purpose and provides valuable insights for learners in any field.