How to learn

How to learn

I believe there are numerous biases around self-taught Software Developers. Like for example, you need to have an inborn talent, be great in math, have friends or family programmers, or that all self-taught folks start programming from childhood. But I am definitely not from those folks! And here I describe the approach which does not require all those things.

We are working on creating the best content you deserve

Formulate

I have one quote that served me vell during my self-education and continue to do so now: "No problem could be solved if one has not been formulated first". Before trying to solve any problem, formulate and write it down first. Otherwise, y can find yourself solving a completely different problem without even realizing it.

In application to self-education, it means that you need to formulate precisely whom you want to become and what to do after. Start with defining your desired outcome first.

Let's assume you already decided, for example, to become a Software Engineer. Now you need to choose which kind of Software Engineer you want to become and write it down. Here are a few examples:

  • "I want to become a remote Software Engineer who develops web applications like Instagram, Facebook, YouTube."
  • "I want to become a Software Engineer who develops IOS/Android apps and works for Tesla."
  • "I want to become a remote Software Engineer who develops AI-driven applications to solve unique people's problems."

Do not afraid to spend a decent chunk of time on this task. It might look easy, but most likely your brain will try to give inconsistent results at different times. Then select the formulation that excites you the most and drop off all the others.

Design

Great, you formulated who you want to become what you want to do. Now with the formulation you defined for yourself, we can begin designing the self-education plan you need to go through to reach the desired destination.

Let's use, for example, one of the options I mentioned earlier "I want to become a remote Software Engineer who develops web applications like Instagram, Facebook, YouTube". The key phrases here are "remote", "Software Engineer", "web", "Instagram Facebook YouTube". And this is all we need to start.

Now, let's define a list of skills you need to acquire. In our example, we have company names. Most probably each company has a career page with openings related to the title you dream about. Now go through each company's openings and search for the positions you see yourself in and write down the requirements and skills you found. Now when you have the list of required skills, it time to create a personal self-education plan.

Go through each skill in a list and search for multiple courses you can find on the subject. I believe you will find great courses on the platforms I listed here. There are a couple of important things to keep in mind during a course selection:

  1. The sequence of courses for each skill should start with the generic which will show the big picture (what is that-formulation, why it exists, which problems it solves,) of the skill. Only then approach courses that dive into details.
  2. Skill is what you can do, not what you know. It is all about action, not knowledge itself. Select courses that actually teach the skill.
  3. It is really beneficial to select courses from multiple different sources per skill. It will give you better prospects and enhance understanding.

At the end of the design process, you will know the skills you need to acquire an education plan you need to go through.

Plan

After the design step, you have defined a list of skills and a list of sources that will help you learn them. You have a "map". Now it is time to plan how many "miles" you will go each day before you start based on your personal life situation. Even though personal circumstances will be different for everyone, the principles will be the same.

The process:

  1. Define personal Management Day. It is a day in a week when you have a couple of hours of uninterrupted time, you are rested and full of energy. If you think you do not have time, create it! The goal of this day is to decide, analyze the previous week, and plan next week. I personally prefer Sunday.
  2. In Management Day, you start the process first thing in the morning, before checking social media, before having breakfast, or doing anything else. For the best results, you need to have a clean mind. 
  3. Look at each day of the next week and define where, when, and how long you will be able to learn uninterruptedly each day. Ideally, to have two sessions per day, one is dedicated to Academic sources, second is dedicated to Practical sources. Select courses from your list and plan them for self-education sessions each day of the next week. 
  4. Plan Academic study to the first part of a day. Because the courses usually more abstract and have a lot of unknown concepts that are more complex and require more cognitive resources. 
  5. Prepare workplace, laptop, notebooks, pens, highlighters, and all tools you think necessary during study sessions. Ask family to help you remain uninterrupted during self-education.

When you complete these preparations, you will have a clear picture of how the next week would look like. The better the planning process is the less decision-making energy you would need to spend during a week for second-guessing and the more production self-education would be. Remember, if you fail to prepare, you are preparing to fail.

Execute

Now it is time to do actual work. If the planning is done properly, execution should be really enjoyable. You just check what you planned for today and follow it...

But you may realize that some of the planning is not perfect and you may feel tempted to make changes to the plan. Or you may not feel like doing the learning session you planned. It is important to resist, you need to protect your plans. Just acknowledge it and fix it on Management Day. This is a way to learn the discipline of proper planning and do it better.

It is like racing. When you see that you have a flat tire on the track it is not the best idea to stop and try to handle it immediately. Get to the pit stop is a better idea. 

Each learning session should be uninterrupted. By interrupted I mean 100% uninterrupted. Eliminate all risks to be distracted, smartphone, laptop notifications, irrelevant browser tabs, ask the family to interrupt you only in an emergency. It should be a focused, purposeful practice. 

Remember, the execution step is about doing, not deciding what to do. Just do what you planned every day, step by step until the next Management Day.

Reflect

When next Management Day comes, it is time to activate your self-observer and analyze the previous week. It is time to recall the Formulate, Design, and Plan steps and look at them with a context you have after you went through the Execution step.

One of my favorite quotes from Tim Ferris: Effectiveness is doing the right things, Efficiency is doing things right. And the goal of this step is to calibrate your self-education plan for better effectiveness and efficiency. You need to think about and answer a few questions:

  • Is the formulation of whom you want to become and what to do correct enough? Or you want to make slight changes to make it more exact to what you desire? Maybe your vision of yourself grew from "I want to become a remote Software Engineer who develop web applications like Instagram, Facebook, YouTube" to "I want to become a remote Software Engineer - Entrepreneur who develop web applications like Instagram, Facebook, YouTube and create your own cryptocurrency"? 
  • Is self-education designed effectively? Will following the self-education plan moves you in the direction of whom you want to become? Or now you see a point of improvement that was not obvious before? Maybe you found a course you want to add, remove, or replace?
  • Were you able to follow your plan most efficiently? If not, then what went wrong? What obstacles did you have each time you could not pursue personal commitment? What you can do to eliminate them next week?

You, your thoughts, and your desires will evolve all the time, that is why reflecting is important. For the best results, the reflection should also be focused on an uninterrupted process. 

Repeat

At this point you have a vision of the future self, you have designed a personal "map" that will get you to the future self and you know how to use weekly planning to move towards future self efficiently.

But what is next? I believe Arnold Schwarzenegger gave the best answer: "There are no shortcuts. Everything is reps, reps, reps."

Tips and tricks

Start With Why

Whatever new technology or concept you are learning, start with the reason one was created and which purpose it serves. With this knowledge, further learning will be a lot easier.

Information Diet

Our brain spends energy when process new information and the energy is limited. Do not spend valuable brain energy on watching TV, random internet surfing, or social media. Use it for self-education.

Pomodoro Technique

It will help you leverage Focused and Diffuse thinking switching.

Certificate Driven Learning 

I use this term to describe a concept of learning where the major goal is to get a certificate that can be demonstrated publicly. It is a second-handers approach, do not get into this trap. Your fundamental goal is to understand the topic deeply and be able to apply it to real-world problems. The certificate is the only side effect.

Track your time 

Time is the ultimate and only resource each of us has, everything else is an only derivation of it. And to manage it you need to measure it first and understand how you spend it. I use RescueTime which I highly recommend.

Build Mental Representation (wiki)

It is a way the brain represents certain information or concepts in your brain. Since each of us is unique, we will represent knowledge in our own way. What you can do to understand if you have a mental representation of a new concept of a skill is to formulate it in your own words or explain it to someone.

Do Purposeful Practice

It is a practice when you clearly understand its purpose and desired outcomes. It is the proven best way to build solid Mental Representations. The Peak book is the best place to learn more about it.

The only way to go fast, go slow

Remember, the goal is to understand the practical application of the topic you are learning. If you did not understand it, you not ready to move further. Be ready that some concepts will take a while to understand.

Create a terminology notebook

When you start self-education in a new domain, there will be dozens of unknown terms. Prepare notebooks where you write the meaning of those terms ideally followed by your own interpretation of each. So you can have it in one place and reread it occasionally.

"How to apply it?"

This question should always be on top of your head when you learn. If a course does not explain it, take the time to research it and get the answer.

Apply it!

When you learn a new tool or technology create a test environment or a pet project to try everything you learn in practice.

Do handwriting

When you write the information you are learning you increase the amount of time you concentrate on it. Your brain operates on low Beta or even Alpha waves. Hence, the persistence of information improves dramatically. Results are multiplied if you rewrite them in your own words. 

Summarize

After each self-education session summarize what you were learning, what you understand, and what you did not understand during the session. It allows you to re-acknowledge everything and reduces chaos in your head.

Question, question, question...

"Question properly formulated is a question half answered". Formulate and write questions while taking notes in a notebook. Create a section where you write the questions on each page.

Reread notebooks regularly

If you follow my advice on notebooks handwriting, rephrasing, and question writing you will have quite a few notebooks that will represent your personal, unique understanding snapshot of each piece of information you were learning during the self-education. They will also contain gaps in understanding of certain concepts. Each time you reread notes you solidify understanding, get answers to questions, see your progress.

Compare yourself to your previous self only

We all run a marathon called life, but each of us has its own route. It is important to remember that each of us has unique abilities, strengths, weaknesses, and life circumstances. You need to know your own progress which is equal to you today - you yesterday. All other comparisons are noise.

Do not break the chain

It is important to act every day. Even if you spend just 1 Pomodoro per day (25 min) it is worth it, at least for recalling where you are in memory. Do not give a Forgetting Curve any chance.

Sport

It is hard to count how many insights regarding complex CS concepts I was getting on a treadmill or while doing the lifting. It is one of the best learning buster I use these days.