Developing a JS learning framework - Part 1 - how it is gonna work?
Tags: javascript
Published: 2020-03-25 22:43:39

# Motivation
This is my first post. I am doing it because for the next 2 years we're probaly going into a worldwide recession and i wanna start developing some serious skills in this period.

I've been working with code for some time, using both java and JS in my projects, however i never took my study process seriously. I believe that leveling up your skills require reading the main books of Programming, building meta projects(like a compiler, a tcp/ip stack) and doing Full Stack apps without frameworks: 

"So why the hell you choose javascript to start?"...You may say.

Because the JS community is very LARGE. You can find JS topics ranging from [hardware](https://tessel.io/) to [Machine Learning](https://www.tensorflow.org/js) 

Another reason is this video:
{% youtube ft5bYnt0W48 %}

# But how it is going to work?
First of all we must understand that Javascript is a big category that gather many small concepts. These concepts should be gathered in smaller clusters in order to organize the learning process. 

## Concepts
I'll list the concepts that come to my mind:

* JS Syntax;
* Object handling(spread, destructure ...);
* DOM manipulation;
* Classes and prototype;
* DOM events;
* OO in JS;
* FP in JS;
* Types in JS(typescript)
* Tests(acceptance, integration, unit)
* JS app architecture;
* HTTP in JS;
* Full Stack Apps in vanilla js;
* Configuration of a js app for deploy pipelines;
* Backend problems: Logging, RBAC, ORM, tests, Dependency Injection, scability, concurrency and paralelism;
* Frontend problems: routing, theming, components creation, tests, UI-driven state, events;

## Organizing the concepts
Ok that's a lot of concepts. Based on my experience i believe that we can gather some of them in levels 1, 2 and 3. 

* Level 1 - You will be able to read code and talk about JS with confidence, understand the language but will not be able to build an app without help. In this level you can produce features and resolve bugs, but cannot build a project from scratch

* Level 2 - If you master this level you can build a project by yourself, tailor JS Object Oriented and Functional features inside your domain, create a good automation for daily projects tasks, transit between backend and frontend without a mental breakdown.  

* Level 3 - Right here you'll be able to adapt JS projects in different environments, create devops workflows, create some personal frameworks with good level of automation, become JS Tutor to other team members. Understand the impact of some choices inside a project, react to change early. Talk about different architecture styles and trade-offs os some choices.


![Javascript Knowledge](https://i.imgur.com/wO0tMn4.jpg)

# The Resources
Mainly books and projects. The book i choose to master level 1 is [Eloquent JavaScript, 3rd Edition](https://eloquentjavascript.net/)

Another resource that i'll use is [Dan Abramov's javascript course](https://justjavascript.com/), but only as support to the first book.

What kind of projects? I don't know yet. 

# Conclusion
After i read the book i'll post an update in this series of a review and the next step in the process of learning JS.