1. Intro
Learning isn't a skill often explicitly taught in school. So, people tend to think, "I'm just not smart enough," or "I can't remember things as well as that person - they must be gifted." And hey, I'm not going to lie, there's some truth to that. Factors such as your educational background, upbringing, level of confidence, and even a natural inclination towards certain topics can play significant roles in your ability to learn. But I truly believe there's a way for everyone to boost their productivity when learning something new. It's all about understanding your personal learning cycles, especially when you're immersing yourself in expansive fields of knowledge, such as language acquisition or programming.
Most people can relate to the feeling of being hyper-fixated on a topic, diving into it, learning a bunch, but then getting burnt out. That's when those Twitter gurus tell you it's about consistency and discipline. But wouldn't it be nice if we could stay motivated almost every day? π§
2. Discovery
The theory of having a learning cycle definitely exists (if you're
interested in that you can simply google "learning cycle"), but I only
figured out mine after I began learning Mandarin and coding. I
routinely get people telling me "you must be a fast learner!" or
asking questions like "how do you plan your studies?". It got me
thinking - what am I doing differently? So I decided to share my
process.
*disclaimer: I can't guarentee this will work for everyone, but it's
what works best for me π
With no previous experience learning Mandarin, and after studying for only about a year, I achieved a relatively high level of fluency compared to my peers. But why? what am I doing differently that other people are not? same with coding, although I'm not sure how my speed compares to others, I still would like to share my process. Even if it helps just one other person I would be happy. π
3. Process
So here's the gist: I go through three main cycles when studying. Being aware of which cycle I'm in at any given moment has helped me stay productive without burning out. But keep in mind, for this process to work best, you have to actually enjoy what you're learning about. If it works for subjects you don't like as much, that's great, but no guarantees!


CYCLE 1
structure
This cycle is all about learning through a clear-cut, structured path.
If you're a developer, think of the times you've spent learning on platforms like freeCodeCamp, Scrimba, or Codecademy. In regard to learning a language, this could be attending a language course, or following some kind of predeterimined learning path, like in a textbook. At this point, you will start grasping the fundamental concepts crucial to the subject you're learning.
Learning HTML/CSS example
π©π»βπ» When I was doing the FCC responsive web design certification I
really fell in love with coding (at least I thought that's what I
was doing with HTML and CSS π) During this time, I was doing the
specific tasks and assigments they gave me.
This structure acted as a sort of roadmap. I never felt lost or
overwhelmed because I knew exactly where I was and what I was
supposed to do next. The concrete tasks provided me with clear
goals, and achieving them gave me a sense of accomplishment and
motivation.
This is essentially what the 'Structure' phase in the learning cycle
is about. It's a guided, step-by-step journey where you're
progressively introduced to core principles. It's a controlled
environment where you learn, practice, make mistakes, and improve.
But just like anything, after a while, things can start to feel a
bit repetitive and you may find youself getting bored or burnt out.
This phase is pretty straightforward, and when you're new to the
subject, you'll probably hang out here for a good while. Depending on
how many hours you spend a day learning you could be here for a few
days up to a few weeks.
How do you know when to move on to the next cycle? Well, when you are
feeling bored and totally demotivated. Feeling like your productivity
has really decreased.
Then you move onto CYCLE 2
CYCLE 2
explore
The main purpose of this cycle is to inspire a new sense of motivation within yourself.
Imagine you have been in cycle 1 studying JavaScript for a week and
feel totally tired. Trying to reignite your motivation and energy from
the very thing that has burned you out can seem like an uphill battle.
This is where understanding the concept of the "puppy mind" can help.
The "puppy mind" describes the tendency for the mind to get easily
distracted and jump from one thing to another, much like a playful
puppy. This can lead to difficulty in focusing on one task for an
extended period of time.
Most people agree that we need to train or discipline the "puppy
mind". While I agree, there are situations (like in cycle 2) where it
might be beneficial to let your "puppy mind" run rampant.
The point of this cycle is to get a fresh perspective on learning, maximize your input sources to stimulate creativity.
Learning JavaScript example
π©π»βπ» When I first started learning JavaScript I was using
FreeCodeCamp. At first, it was exciting. I was grasping new concepts
and I was on a roll for a while. But soon after, things got pretty
confusing for me and my motivation was clearly disappearing. This
signaled the end of CYCLE 1.
π©π»βπ» Embracing my 'puppy mind', I decided it was time to unleash my
curiosity. I started researcing a bunch of free resources which led
me to jsdares, W3Schools, and Scrimba, I allowed myself to explore,
not fixating on one source or one thing but checking out everything
that caught my interest (related to coding). I had fun with jsdares,
completed some exercises on W3schools, and eventually discovered
Scrimba, which was a great find! And that marked the end of CYCLE 2.
π©π»βπ» And then, I found myself back in CYCLE 1. (In the beginning you
might not get to CYCLE 3 right away.) With Scrimba, I found a
structured learning path that was a perfect fit. I managed to
complete most of the Introduction to JS course. But, motivation
started to dip again when the course switched teachers at the end of
the course. This signaled the end of CYCLE 1.
π©π»βπ» CYCLE 2 started again, but it really only lasted a few hours, and
was the moment in which I really started feeling myself going
through these 3 cycles. During this phase I felt really inspired. I
realized how scattered and fragmented the resources for learning
coding were. Wouldn't it be great if all of the best resources were
all in one place, accessible to everyone? So I decided to make a
project! That signaled the end of CYCLE 2 and the start of CYCLE 3.
The explore cycle would generally only last for a few hours or maximum
1 to 2 days depending on your learning schedule, and how burnt out you
let yourself get from CYCLE 1.
All of these new sources of input can get you inspired and ready for
CYCLE 3. Ideally CYCLE 3 should start after CYCLE 2 has resulted in a
good idea, otherwise feel free to move back to CYCLE 1. But trust me,
if you've done CYCLE 2 right, you'll be ready for CYCLE 3 every single
time.
CYCLE 3
create
This is where your ideas come to life through projects.
After the exploration phase, hopefully, you have come up with an idea
for your CYCLE 3 project.
The idea for a project could surface from realizing a problem that
needs solving or drawing inspiration from something that piqued your
interest. I have been inspired to make a project from all sorts of
places, like a challenge on front-end mentor, realizing my mom needed
a new website, or one of the assigned projects on freeCodeCamp. It
doesn't matter if you think you're a creative person or not, there are
plenty of resources to get inspired and make a project.
But if you still haven't figured out an idea for a project, below is a
great chatGPT prompt!
chatGPT project generator prompt
βHey, I am learning Javascript, I am just a beginner, recently I
have learned about objects, for loops, while loops, I can mostly
just solve 8kyu problems on codewars.
//say your level
I am interested in cats, League of Legends, dragons, and Harry
Potter
// say your interests
can you give me (insert number) project ideas to practice my
skills in JS?β
// ask the question with number of ideas
Response:
That's great that you're learning JavaScript and making progress in
problem solving. As for project ideas, here are a few that are
related to your interests and can help you practice your JS skills:
- Cat Clicker: Create a webpage with pictures of different cats. When a user clicks on a cat's picture, increment a counter for that cat. Display the number of clicks for each cat. This will help you practice handling events and manipulating the DOM.
- League of Legends Character Database: Create an object for each character in the game with properties like 'name', 'role', 'abilities', etc. Then, create functions to sort and filter characters based on these properties. This can help you practice using objects and arrays.
- Dragon Game: This could be a simple text-based game where the player has a dragon that they can train and care for. Actions the player takes could affect the dragon's stats (like 'strength' or 'happiness'), and those stats could affect the outcomes of events. This project would be a good exercise in using objects and control flow.
- Harry Potter Quiz: This could be a quiz with multiple choice questions about the Harry Potter series. For each question, the player must choose the correct answer from four options. At the end of the quiz, show the player their score. This will give you practice with arrays, DOM manipulation, and event handling.
- Sorting Hat: Based on a series of preferences or personality test, sort a user into a Hogwarts House. You could ask the user a series of questions and then use their answers to determine their House. This will help you practice with forms, objects, and control flow.
- A simple League of Legends API client: Using Riot Games API (official League of Legends API), you can fetch data about champions, items, matches and more. Create a simple user interface to display the data. This can help you learn about how to work with APIs, asynchronous programming, and data manipulation.
Remember, the goal of these projects is to learn and practice, so don't worry about making them perfect. Start small, and as you get more comfortable with JavaScript, you can add more features to your projects. Good luck!
Very lovely response from chatGPT as you can see. This way, even if
you haven't figured out a project on your own and you want to get into
CYCLE 3 you can!
Once you are finished with your project you can move back to CYCLE 1
and learn more fundamentals and new concepts.
Don't be afraid to switch learning resources if something is not
clicking with you, and make things that you are passionate about. If I
am doing something boring I can barely concentrate for 30 minutes, but
if I'm passionate, I can go for hours on end!
Happy learning!