Designing my Learning Experience

Photo by Patrick Tomasso

In 2017 I posted about my learning journey, I talk a lot about passion, willingness, and obsession. I always feel I have so much to do. So much to learn. In the same time this feeling makes me anxious, it makes me feel ready for the next challenge. It's mixed feelings.

Since 2017, I'm learning a lot and sharing knowledge (on Medium and my Blog). I want to keep this mindset of trying new things, experiment new technologies, learn different paradigms. But I want to improve the whole process, making this a better experience and more conscious.

As I'm learning about myself and how my body and mind work, I'm designing my learning process based on those things. So some questions started to pop in my mind:

Ok, we have a lot of work to do here. Let's answer these questions and see the final product.

What's the best way to learn?

The short answer is: I don't know.

I think we don't have the right answer for every person in earth. But if I design the learning experience exclusively for myself, I think I have a chance.

To understand what works and what is not so effective, I need to try different methods as experiments: podcast, articles, videos, courses, university, doing projects, books, etc. We have a bunch of resources and ways to learn.

What works for me?

So here we have a ton of resources and ways of learning. Basically my mindset is like a laboratory. Make experiments, try new things. But understanding what works for me. Asking myself how do I learn best? Which resources I really engage and get the most of it? Keep in mind it doesn't have any rules. Actually, you make the rules. You understand yourself, you understand the resources, and make the decision to keep it up with the best way of (your) learning.

Now I divide my time in my three main resources: articles, projects, and books.

I have my own time to keep reading books, as I told you my experiment to read three books at the same time with different topics. It's not daily yet, but my goal is to have a daily time to read it and make it more consistent.

Articles I read once in a while, when I want to go deep in a topic, understand the theory and the concepts. I like to do a linked list of articles (or maybe a priority queue) and organize by topics to study later.

The projects are the resource I spend most of my time. This is the way I practice. The way I get the concepts I learn and make it live. The way I do experiments. The way I think deeply about the concepts. Today I'm in a good vibe to try different projects. But I want to explore it more, organize my time to get more done.

How do I measure it?

This is an interesting topic, but I don't know if we can really measure the learning process. I have two things in mind when I want to "evaluate" if I'm actually learning or not: project-based learning and real life projects.

Project-based learning

As I mentioned in the resources topic, projects are a simple way to make the learning practical. Sometimes I call it "mini projects", because I just want to do a Proof of Concept (PoC) or just a small experiment, making the learned theory real and practical. So I don't spend a lot of time doing a specific project or improving it. I create the project, do the experiment, and when I feel satisfied with the results I move on to the next thing I want to learn. As a software engineer, the coding part is always fun, but to go to the project and start the experiments early as possible, I created a framework to myself:

I like this framework because I start the project fast and then I can focus on the experiment and the feedback cycle.

Real life projects

This is similar to project-based learning (PBL), but the PBL is a quick and small project just to experiment. A real life project will be a longer and probably bigger project (bigger codebase in software development). Some questions to "measure" the learning:

An example was a project I needed to implement an authentication and authorization in a serveless environment using node. As I learned promises, I wanted to implement using async/await syntax. I was confident about what I studied and wanted to see the results. After shipping the code to production, I realized my accomplishment. It's a good feeling when you study hard and can apply this in real life. Not just a good feeling, but a way to "measure" that I'm learning it, that I understand it.

How do I improve my learning experience?

Learning can be hard. Sometimes "boring". But we can make it more engaging and "fun". I'll tell you the three ways I use to improve my learning experience. I like these three ways because it gives me visibility and depth on the topics I'm learning: The Flow, Sharing Knowledge & Smart People Around.

The Flow chart

A couple years ago, I wrote a piece of content describing the turning point in the learning process: In the beginning it can be hard to learn a new thing, but keeping it consistent until a time t, you'll realize that you'll learning much faster than before. This time t is particular for each person.

But it is very simplistic. So I kept searching for a better framework to understand this, but also give me visibility to understand how to improve my learnings and enable me to be actionable.

I found this chart from the book Flow. It talks about how to stay in the flow by managing your state between anxiety and boredom. Basically:

So now I can stop and reflect about my learning experience:

I like this idea because it gives more visibility to understand the pain points on my learning process and also reflect and be actionable on the problems and opportunities I have to improve the whole learning experience. I also like it because it is simple, it's not that complex. And it doesn't need be.

Sharing knowledge

For me, sharing knowledge is a way to give me depth on the topics I'm learning. When I share knowledge, I force myself to go deep and understand every possible detail about the topic I'm learning to teach in the best way. Now I usually do two things: Articles and Tech Talks

I love to write detailed articles about things I'm learning or had experience like when I was learning functional programming, when I was learning data structures and fell in love with the tree data structure, and my very first programming language: Python!

Tech talks are the last step for me when it comes to learning something new. I usually:

This "framework" is the exact thing I did when I was learning functional programming. I did read a lot of articles (and added all in this A Learning Path for Functional Programming Github repo). I did some experiments and projects. I did write an article. And I did a tech talk.

Smart people around

I like the idea to always designing a better experience for my life. As I know I get most of my time at work, and if I have the possibility, I'll choose the best option out there. I like to choose a company or job/team based on three things:

With these three things in mind, I could choose a lot of good places I worked for. The places and people helped immensely to grow.

But learning at a company is one way to do it. You can also be part of a community. Sometimes I go to meetups, or be active on groups on slack or telegram, to learn and discuss things I'm interested or things I want to learn.

About Productivity

I want to get the most of my day to learn and improve, so I experimented different things. And this what I'm aware of to get things done with quality.


Task Planning & Prioritization

Focus & Distractions

Wrapping up

So here I have different things I'm trying out, do experiments in my life, and reflect to understand what works for me. And this is important, because it works for me, but it may not work for you. Do experiments, try different ways of learning, keep the mindset of improving day after day, the lifelong mindset.

The last thing I want say: this is an in progress design for my learning experience. I want to keep improving this, because I'm trying new approaches. The design for my learning experience continues.

My Twitter and Github

Some resources

Patreon Become a Patron Coffee icon Buy me a coffee