I would like to present a highly interesting initiative for everyone keen on topics oriented to Node.js. If you are curious about how to effectively learn of stuff available on the platform, how to effectively use libraries and write the most idiomatic code, which is consistent with the UNIX philosophy, read this article.
The major problem when learning new things is related to the first step, even if it concerns a basic question “how to start”. This barrier is often related to the new thinking or programming paradigm, new language, unknown environment or even unfamiliar API. For almost every technology we can find opinionated stuff on the Internet: multiple tutorials, guidelines (often, it is not so hard to find two contratictory ones 😉 ) and blog posts with information how to work with technology in which we are interested. Moreover, in almost every case we still have a question at the back of our minds: “Is it a proper way to learn and work with it?”.
Learning process could be easier if we have one source of truth and best practices concerning the approach to certain topics related to technology interesting for us. For Node.js such initiative is called nodeschool.io.
Nodeschool is a series of interactive workshops divided into two sections – core concepts and electives.
In the main concepts we have:
- basic asynchronous programming and introduction to the core Node.js concepts
- introduction to the streams
- bytes and buffers manipulation
- how to work effectively with git and github
Electives are oriented to:
- use of node.js binding and modules related with LevelDB
- hapi.js framework
- express.js framework
- native modules and addons
- 6th version of ECMAScript
How to start?
At first, you need to have npm and node executables. If you do not have them on your machine yet, it is the most recommended place to start. Next, you can install each workshop globally using Node Packaged Modules manager:
In this example -g flag means “install package globally”, so it will be available as an executable on your machine.
Every single workshop uses the same command line interface and workflow. This eases the work with every one of them. Moreover, assignments are well defined, descriptive and small enough to perform them as a daily code kata.
Workflow is oriented to invoking commands in the terminal. After starting the workshop executable without any parameters, you will see the list of available assignments, as presented below:
Then, you should select the first unresolved assignment from the list. After that you will see the description and guidelines concerning how you should approach this task. In the next step you have two commands for testing and verifying prepared solution.
If solution is correct, the current assignment will be marked as resolved. Now, you are ready to work with each workshop available on the main page.
I am the beginner in Node.js community – where should I start?
I recommend to start with learn-you-node workshop and then move forward through the rest of core concepts. After that you are free to choose any interesting topic from electives group (e.g. related to specific framework).
I am more advanced member – how can I contribute?
You can contribute in several ways.
The easiest thing is to perform any workshop and check it in practice (especially with edge cases). Then, you can fork repository related to it, fix the bugs, improve documentation and clarity of the steps, maybe even add missing scenarios and lessons. After that you can contribute back your changes to the community by providing the workshop author with a pull request.
Second option is related to local events. You can easily organize a new event in your city, which will be oriented to the whole nodeschool initiative (or even to just one type of workshops). There is a detailed guideline prepared by organization how to do this.
Finally, you can create a new workshop. In such vibrant and broad community you can easily find topic suitable for you. If you do not have a clue what to prepare, you can look at the list of possible topics gathered here. If you already have an idea, you should fork rvagg/workshopper project and start creating lessons. Then, you can add your project to the list of available workshops. It will be reviewed, validated and after acceptance it will be available as an official lesson on the main nodeschool page.