Recently, I joined a new team where League of Legends is the default group game. As someone who has always wanted to play the game, this was the perfect opportunity to play with a group of friends. League has so many rules and things to know and learning them can be quite daunting. But in doing so, I've been struck by how many parallels there are between my journey learning to play League of Legends and my experiences learning to code.
I've been reminded of late nights, early mornings and lunch breaks spent completing exercises on Freecodecamp while polishing my first portfolio site.
It's also brought to mind a few mistakes I made along the way and areas where I could have optimized my learning path. I'll talk about a couple of these in this post.
Find one really great resource and stick with it from beginning to end.
It's too easy to flit between resources. A book here, a video there, another video and then some blogpost. For me, this was both an issue of my attention needing to be stimulated by the latest and greatest course as well as a fear of missing out on the other courses. Truth is, in the early days, you're better of sticking to one resource at a time and going deep. There'll come a time when flitting from topic to topic will make more sense, but in the beginning, finishing a really good guide and getting an end to end overview of the subject you're studying can be invaluable. So stick with it!
Write down all your learnings. this is another one I wasn't so great at. I continually overestimate my brain and the capacity for me to remember the things I'm currently learning. Learning is so much easier when you take the load off your brain during your first pass. There's a great series of videos about this on YouTube by Ali Abdaal where he talks about the concept of a 'Second Brain'. The idea is that you want to decouple understanding the subject matter, from memorizing the subject matter and the best way is to keep notes which you can refer to later at intervals. He does a much better job of explaining it but depending on how serious the topic is, you might want to have a more structured journaling method such as the ones he prescribes or if you're playing LoL like me, just have a place to put your thoughts and insights down. Learn to underestimate your ability to remember.
Pay attention to the Basics.
It's so tempting to dive right into your new passion. Just jump in start coding or playing etc. But taking some time to understand the basics will save you a lot of time later on. You'll also find it much easier to communicate with teammates and colleagues later on when you've learned the shared language of the domain. A lot of skills can be refined into a set of basic principles. Internalizing these principles is 80 percent of the work required to learn said skill. Whenever you come across a word or concept you don't understand, write it down (see "journaling" above). Be sure to find time to research those concepts and words. If you take your time to really understand the basics and internalize them, you'll do much better when it's time to layer on the more complex principles. With LoL, I replayed the opening tutorial multiple times with different champions until I had a good understanding of what was happening. I suppressed the urge to just wing it, grab the first champion that seemed 'right' to me and dive in. Instead, I recognized that I didn't have the time to play randomly. If I wanted to be better, I especially had to be deliberate with the little spurts of free time I had to play the game. This is especially important for those of you who are learning to code while being constrained by time and energy, for instance holding down a current job.
Practice consistently and value quality over quantity
Oftentimes, we concentrate only on making time to study without making consistent time to study. We also tend to not pay as much attention to the quality of the time we're spending learning this new skill. It's better to have 30 minutes everyday where you practice good study technique rather than a haphazard approach of one hour today three tomorrow and then nothing for the next two weeks. Our brains love repetition and the more we repeat things, the more our brain recognizes the concept as important and stores them in easily accessible memory. Find a consistent half hour or hour you can code every day and use this time intentionally. Steven Pressfield talks about 'The Professional' in his book, "The War Of Art". Treat this time as a concert pianist would treat their practice sessions before the big performance. Commit to putting in the time no matter how you feel. The whole idea is that you approach this time with a level of deliberation and attention that reflects a "professional" attitude.
Immerse yourself in the culture
There are so many ways to do this but the easiest is to find friends who are into the same thing. For me with LoL it was the my team of colleagues who roped me in. I'd always wanted to play but never had any friends to play with and so I always kept putting it off. Now I had no excuse. Talking shop with them, setting up game nights and not wanting to let the team down all contributed in keeping me motivated to learn and level up quickly. The great thing with learning to code is that you've got a ton of communities out there to connect with others who are on the same journey you are. In addition to finding peers who share your passion, it's also a good idea to find mentors too. These days, mentorship need not be a 1-1 thing. You can gain mentorship simply by consuming the resources others who are where you want to be put out on their blogs, feeds, channels and other platforms. You can also usually reach out directly to them in DMs or comments but do so without any sense of entitlement to a response from them as you may not get the response you're looking for - or even not get one at all. Following people on Twitter who were into tech made a huge difference for me. I could immerse myself in the community, see what opportunities were out there, watch people's experiences in real time and use this to plot a trajectory for my own growth and expectations. With regards to LoL, I found a couple players I resonated with and watched their videos on YouTube. Learnt how they thought and approached the game and implemented that into my own gameplay.
We've talked a lot about immersion, deliberation, routine and consistency. But breaks are also very important. Knowing when to pause, and when to take a break away from learning efforts is also a crucial part of the journey. Burnout is no joke and you don't want to overwhelm yourself especially in the early days when you're struggling to grasp new concepts and execute on them.
One huuuge mistake we make is thinking we need to be experts at a topic before we share our thoughts or experiences about it. You don't have to wait till you get a PhD before sharing what you know or are learning. If like me you struggle with this concept, I advise you to read 'Show Your Work' by Austin Kleon. In it he talks about how sharing the journey and insights of a beginner actually provides a lot of value to others like you just coming into that arena. Share as you learn. Others refer to this as 'learning in public'. Writing this blogpost is an example of this. As I'm learning to play LoL, I'm reflecting on my previous experiences learning to code and drawing parallels between that journey and this one and sharing things I know I would do better today while trying to learn any new skill. You also get the added benefit of increasing your credibility as well as opening yourself up to a lot of opportunities.
Will I win any eSports titles anytime soon? Probably not, but I am getting better, day by day by putting in the work and enjoying the process. I hope this helps give you some idea of my process and that it helps you find yours whether it's learning to code, cook, play the guitar or any of the million and one things we can set our minds to learn and master!