My system for learning

As I have progressed through Launch School, I’ve noticed there are some patterns as I go through each part of the course and I decided I wanted to use this to my advantage and develop a system for learning the material.

Disclaimer: This is my system for learning, this isn’t necessarily the only way to learn, just one way to learn that’s all.

Based on my observations after studying in Launch School for about 8 months, I have observed 3 types of information in the readings and it can be separated into 3 topics.

  1. ) Conceptual — Information that is relevant in learning a programming language and these are first principles. This doesn’t necessarily have anything to do with the syntax, but concepts that are important in web development and also a particular language. An example of conceptual topics include Variable Scope, Pass by Value vs. Pass by Reference, GET vs. Post requests, and Class Inheritance.
  2. ) Design/Syntax — This information is about the syntax of the language and also how your code is designed. Examples of this topic would be making your code more readable, learning to write in this syntax, and refactoring your code to make it more efficient and DRY.
  3. ) Tools/techniques/best practices — This information is about the best practices, tools, and techniques used to use in your project. Examples of this topic would be testing, Object oriented programming, and frameworks.

Now that I have divided the material into 3 topics. I will show you how to approach/study each of these topics.

Conceptual

Read the Information

Understand the information

Ponder about the information — Think about it for a bit and let your mind digest it

Experiment with the concept. Don’t just look at Launch School’s example of demonstrating the concept, but experiment with the idea and concept on your own.

Examplify this concept. Put this concept into context and write a small story about it involving a developer who uses this concept.

Speak out loud about the concept to a family member, friend, dog or Rubber Duck.

Example

Topic: Variable Scope

Topic Type: Conceptual

After reading, understanding, and pondering the topic. I decide to experiment with the concept of variable scope. I decide to write some code illustrating what could go wrong if I’m unaware of the concept of variable scope.

For example, If I tried to reassign a variable initialized outside of the method inside it and then tried to print that variable and expected the output to be the value the variable was assigned to inside the method.

Then I think of an example where I would this concept would be important in an example.

I write a story about a developer who gets burnt on a small project because the developer didn’t understand variable scope.

After all this, I decided to speak about the topic to explain it in my words so that it sticks.

Design/Syntax

Topic: Each method

Topic Type: Language/Design/Syntax

Let’s say I’ve never written in Ruby before and I’m writing the each method for the first time. Given the information about the each method, the first thing I will do is break down the code where the each method is used.

Example:

[1,2,3].each {|num| puts num}

[1,2,3] is an array

each is the method being used

|num| is the value being passed to the block

puts num is the code being executed in the block.

After solving the problem, I check to see if there is a way to refactor it to make it more readable and see if there is any methods I can use to make easier.

Code challenges and small problems is where this type of information is applied to.

When problem solving, you’re using the syntax and language. After you solve it yourself and if everything passes, then you look at the solution provided and others solutions, to see their problem solving approach and also any new methods ways to solve the problem.

Then I decide to write down what I learned and what the tradeoffs are and why they are favorable.

Tools/techniques/best practices

Throughout Launch School, you’ll always be introduce to new tools, techniques and best practices throughout the course to make writing code faster, easier, or more efficient.

Example

Topic: Pry

Topic type: Tools/techniques/best practices

Explain the challenges you had or would have without the Pry gem.

The challenges I would have is that I wouldn’t be able to check the outputs as the code is executed and I would also be printing the output in the code which can be messy when you have to many.

Explain the benefits of this tool

The benefits is that it stops execution of the code and allows you to inspect values and experiment with values in a different environment.

If necessary, explain a scenario where the tool would not be recommended.

This is my learning method that I’m going to experiment with and I’m still evolving my study methods and improving on it. Feel free to add any thoughts.