10 Steps to learn anything quickly — Vue.js

10 minute read

Using John Somnez technique to learn Vue.js

10stepsIMG

Step 1. Get the Big Picture

What is the high-level topic that you want to learn about?
Learn Vue.js

Briefly provide a summary of what your topic is about (the big picture.)
Vue.js is a JavaScript framework. It is one of three most popular frameworks: React, Angular and Vue

Break your high-level topic up into smaller subtopics or focus areas:

  • Inline JavaScript in HTML. One component “app”
  • Multiple components in single HTML
  • Separate components in project tree
  • Single Page Applications
  • State management with Vuex
  • Testing components
  • Installing, deploying

Step 2. Determine the Scope

Time frame:
2 weeks
8 hours per day
2 x 5 x 8 = 80 hours total

Scoped Topic
What subtopic do you want to learn about?
Write Single Page Application

What do you plan on doing with the knowledge you will get from learning about this topic?
Use it in my workflow

Use the time frame, the subtopic, and what you will do with the knowledge to determine what will be your appropriately-scoped topic and write it here:
Write Vue frontend-application with Rails backend API

Step 3. Define Success

What specific actions does the knowledge you are trying to acquire allow you to do?

  • Refactor existing web applications
  • Write own Vue components
  • Use existing components
  • Write modular web applications
  • Write Single Page Applications

Of the actions you listed above, which one or ones would be most valuable for you to be able to do?
Write Single Page Applications

Using this information, come up with a clearly-defined success criteria that you will use to determine when you have reached your goal.
I will have learned to create Single Page Applications when I write my own SPA

Step 4. Find Resources

Start with books, since books usually contain the most well-researched and organized information. Look for the best 5 or so books you can find on your topic and list them here.

Now make a list of all the other resources you can think of.

Step 5. Create a Learning Plan

List the chapters from the table of contents or the sections or headers used to break up the material.

vuejs.org:

  • Essentials
  • Installation
  • Introduction
  • The Vue Instance
  • Template Syntax
  • Computed Properties and Watchers
  • Class and Style Bindings
  • Conditional Rendering
  • List Rendering
  • Event Handling
  • Form Input Bindings
  • Components
  • Transitions & Animation
  • Enter/Leave & List Transitions
  • State Transitions
  • Reusability & Composition
  • Mixins
  • Custom Directives
  • Render Functions & JSX
  • Plugins
  • Filters
  • Tooling
  • Production Deployment
  • Single File Components
  • Unit Testing
  • TypeScript Support
  • Scaling Up
  • Routing
  • State Management
  • Server-Side Rendering

Vue.js: Up & Running:

  • Vue.js: The Basics
  • Components in Vue.js
  • Styling with Vue
  • Render functions and JSX
  • Client-side routing with vue-router
  • State management with Vuex
  • Testing Vue components

Take a look at what chapters or sections are repeated the most and write them down here:

  • Installation
  • Basics
  • Components
  • Transitions & Animation
  • Rendering
  • Routing
  • Vuex
  • Testing

Add any additional modules or sections that you think need to be added to your learning plan, but might not exist as distinct chapters or sections in your resources:

  • Tools
  • Deployment

From both of these lists, come up with the modules for your learning plan. Put them in the order that makes the most sense to you:

  • Installation
  • Basics
  • Components
  • Routing
  • Tools
  • Deployment

Step 6. Filter Resourses

What criteria do you think is the most important for judging the resources you will use for learning your topic? List the criteria you feel is most valuable to you here:

  • Contains real examples
  • Contains ground knowledge

Make your master list of resources here:

Step 7. Learn Enough to Get Started

What is the general idea of this module in your learning plan?
To build working web application

What actions can you take to “play around” with what you are going to be learning for this module?
Take a look at some examples

Step 8. Play around

What specific things can you do to “play around” with the subject you are learning about?

  • Install Vue.js
  • Run sample code in HTML < script >
  • Run CLI tools

Pick one of the things you can do and do it. Then list any questions you have as you are “playing around” here:

  • How to use Vue.js inline in HTML?
  • How to separate one file to SFC — Single File Components
  • How to use CLI: vue, vue-webpack-server, vue-loader?
  • What is Webpacker?
  • What is Babel?
  • What is YARN?
  • What is MVVM?
  • What is W3C Components?
  • What is Vuex?

Step 9. Learn Enough to Do Something Useful

What are the most important questions you hope to find answers to during this step?

  • How it works?
  • How to use command line tools?
  • How to put all components together?
  • How to deploy Vue projects?
  • How to transfer front-end projects written on Vue.js to Rails back-end?

Which questions are still unanswered after completing this step?

  • How to implement Vue transitions and animation?
  • How to use Vuex modules?
  • How to deploy?
  • How to implement server-side rendering with Rails?

What do you think would be an effective way to teach what you have learned in this step to someone else?

  • To document all my actions
  • To tell someone what I have learned
  • To write in blog

What is the most important thing you have learned in this step?

  • Custom HTML elements — are javascript objects, not HTML code
  • Reactive features — is a process to work with Shadow DOM, render nodes and paste them to DOM
  • All business logic put in Vuex!

Step 10. Teach

What methods of teaching do you find appeal to you the most? Do you like lectures, reading from books, watching videos, having a personal conversation, or something else?
Watch video course and write code by myself

What do you think would be the best way to present the material you have learned in this module of your learning plan?

  • To document each step in README.md
  • To have a conversation with coworkers

Based on the answers from these two questions, determine how you will teach the subject matter you have been learning about and write it down here.
I’ll write a documentation and do a conversation

After you have taught your subject, list anything you learned in the process that you had not realized or did not know before.