Learning to code is, in itself, becoming a new common language. It is becoming essential across all sectors of the economy and a strong skill for those seeking advancement. An improvement in education is an investment to the future of Node.js.
Last winter, the Node.js Foundation expanded its annual user survey to encompass and unravel who and how programmers are learning Node.js and using it alongside other languages. In this talk, we’ll explore the Node.js user, a global landscape attempting to learn Node.js despite English not being their spoken language of choice. We will explore the quality work across mediums that is available despite your experience level, and how there’s no single answer for learning Node.js.
There are no mistakes, only lessons
Education Community Manager
Hi, I’m Tracy. Education Community Manager at the Node.js Foundation. Diplomat, baker, rock
climber, web engineer, motorcyclist.
I’ve worn many hats. I have been a conference organizer, a baker by trade, an addictions
program coordinator, and a restaurant manager(this is not the exhaustive list).
I love learning, whether it is via code or researching intersections of my interests, I really dig
nerding out on what it means to learn. How each person must approach it. To learn for fun, for
improvement, to career transition, to get hired, to get promoted, or found a company. It’s
peaked my interest for a long time, so it’s been a pleasure for me to address this head on in my
This report presents selected findings from the 2017 Node.js User Survey.
The study was conducted online from November 30, 2016 to January 16, 2017
via a self-administered survey.
Learning to code is, in itself, becoming a new common language. Programming in one form or
another is essential across all sectors of the economy and a strong skill for those seeking
advancement. Programming ability provides upwards mobility like few other opportunities.
We’re seeing see far less graduates with computer science degrees. No university degree at
all, a liberal arts background, codeschools, self-paced learning–When we are looking at
improving learning Node.js, it’s a beautiful variety of people segmented by different learning
styles, geographical and cultural differences, and socioeconomic status.
Last winter, the Node.js Foundation expanded its annual user survey to encompass and
unravel who is and how programmers are learning Node.js. We’ll explore the Node.js user, a
global landscape attempting to learn Node.js even when English not being their spoken
language of choice. Let’s explore the quality work across mediums that is available despite our
experience levels, and how there’s no single answer for learning Node.js.
A few notes:
Job Title (top mentions)
Frontend Engineer 13%
Tech Lead 12%
Senior Backend Engineer 12%
Backend Engineer 11%
Senior Frontend Engineer 8%
Hobbyist Programmer 7%
Company Size (# employees)
Median # 54.2
< College Degree 26%
College Degree+ 51%
Grad Degree + 21%
Prof. Development Experience
< 5 years 46%
5- <10 years 23%
10+ years 31%
Median 5.8 yrs
< 25 25-34 35+
Median age: 30.6
Who is learning Node.js?
Country of Residence
The typical Node.js user resides in the US, is age 31, college educated and has around 6 years
of professional development experience(note that doesn’t mean Node.js experience).
Users span a range of job titles, with Front-end and Back-end Engineers most common. More
than half work in organizations with fewer than 100 employees.
This is the little nugget to keep in mind: the typical Node.js coder has been using Node.js for
just over 2 years.
Users spend about half of their professional time using Node.js – mostly for developing web
apps. Keep this in mind as sort of the status quo of the Node.js developer, but we have
enough representation in groups outside of this pretty stereotypical developer persona that a
segmented approach is needed to address all the differences, which often run deep.
we speak different languages
(NOT A METAPHOR)
Ninety-five percent of our users learned Node.js in English. But to 45% of our users, that’s their
Think about that for a moment–nearly half of our users have had to learn a programming
platform and also know another spoken language to get there. Users take advantage of many
different resources for learning, so providing a broad mix of tools that accommodate multiple
languages where feasible, is and will be important. Documentation, free online course,s and
tutorial videos are among the most valued educational resources. I’m getting ahead of myself a
little. We’ll dive into that a little further through.
AND, Why do we learn node.js?
Fullstack fun: "Write once, use in client
“PHP was making me very sad.”
“Needed a platform for quickly developing
webapps at low cost that would present data
from our data warehouse”
It’s JS on a server, baby!
to just write
“Diversity of Node.js(packages) years ago–I was
impressed. There was a package for everything–From
controlling robotics to helper packages like lodash and
I already knew JS. "I already had some
to learn more with minimum time
Big fan of async programming and socket.io
So, there’s funny reasons people will give, or rather sort of unfun reasons that people try to find
“PHP was making me very sad.”(also, this is a quote, not me knocking php)
Work made me.
But then there’s also the really useful reasons which I’ve heard time and time again:
I looked at the “Diversity of Node.js(packages) years ago–I was impressed. There was a
package for everything–From controlling robotics to helper packages like lodash and async.js”
“We needed a platform for quickly developing webapps at low cost that would present data
from our data warehouse.” Might sounds familiar?
learn more with minimum time consumption.” Just getting to write JS. The event driven
How are we learning?
Docs + Stackoverflow === <3
Yeah, I know. I think this is one of the reasons people constantly ask for more structured
resources. It’s the 1-2 combo punch, I suppose. StackOverfow is really useful, but doesn’t
necessarily teach best practices that have been adopted by people leading in Node.js code
culture. I don’t see a lot of our working group contributors answering questions in
Stackoverflow. However, I am super grateful for the people who are patiently in there answering
questions, because they are doing a whole heck of a lot of it. This also isn’t a great exposure to
the node.js community, because as far as I can tell, we aren’t that present there. Poor behavior
can’t really be held accountable for if we don’t know that it happened, especially when it occurs
outside of the places we commune. Maybe we should be showing that a little more love?
Informal Coding Education
Online course (no instr.)
Node.js meetup workshop
Multiple sources (misc)
•Using <2 yrs 44%
Less common among…
•Using <2 yrs 3%
As for docs, when I say docs this isn’t just Node.js API docs. A lot of comments given on the
best docs were those of ecosystem packages--that many of our especially prolific authors had
good documentation and made it really easy to learn from the changes they were seeing in
GitHub as these packages evolved.
General Node.js programming
ES2016 and beyond
Node.js for front-end engineering
Managing Node.js in production
Node.js and security
Resources Rely On Most When Learning
A New Language/ Framework/Runtime Env.
⬢ Documentation 70%
⬢ StackOverflow 60%
⬢ Free online courses 44%
⬢ Tutorial videos 41%
⬢ Publications 34%
(e.g., books, ebooks, mags)
*Scale = 1 (extremely difficult) to 10 (extremely easy) ^^ Scale = 1 (poor) to 10 (excellent) ^ Scale = 1 (poor – e.g., impossible to find/access ) to 10 (excellent – e.g., easy to find/access)
Availability/Quality of Learning Resources
What’s it like learning Node.js?
Overall, we know that more than half of our users don’t think learning Node.js is easy. The
quality and availability of resources we use to learn is also challenged. And that feedback
comes from a wide range of backgrounds and experience levels. Remember that our average
user has been programming for pay for 6 years.
Behind Stackoverflow the our docs,
Tutorials and online courses such as CodeSchool, egghead.io, Udemy, You Don’t Know JS,
CodeAcademy, Coursera, PluralSight, and other massive open online courses were the main
informal education source.
However, there was an exception to learning styles in one region overall--one on one Tutoring
is more widely used in China than elsewhere and is the overwhelming primary learning tool.
Let’s take a look at a few of the other resources that our wide range of users approached
• NodeSchool--a series of workshops built to be walked through in-person with mentors and
peers cheering them on. These cover a wide range of topics and have been community-
collaborated software effort far before other projects had this breadth and depth.
levels to play with NodeJS and robots. This group has been huge in encouraging more
people to look at IoT and Node.js. This has also been a gateway for people to try Node.js
and carry it over into their main work.
• Node.js Meetup or workshop(these are all over)--there are new meetups popping up daily.
They tend to be a set of talks from your local Node.js devs, and a super way to find folks to
regularly throw questions to about what your working on. Check them out in your town.
• NodeGirls and NodeTogether--NodeGirls currently operating in London and multiple cities in
Australia, these events prioritize underrespresented groups in learning Node.js.
NodeTogether was a series of workshops that circled the globe last year teaching how to get
a web app up with Node.js in a day while covering web concepts, making no assumption
And then you get into more of the general internet help.
• Google/YouTube(let me google that for you so lots of blogs)
• CNode.js.org(the Chinese Node.js community that is visually similar to reddit but is all
conversations about Node.js code and events with 700,000 active users) It’s a sight to
behold(no pun intended). If you don’t read Chinese, browser translaters are pretty great now
and it’s really neat to interact there. I do recommend translating anything you write to
Chinese to get more responses.
• And awesome tools like Exercism.io
FullStack Academy, Code Fellows, and HackReactor to name a few. But this brings up another
point--most universities are not teaching Node.js, especially not in the US. I’m trying to find
them now, and encourage more instructors to adopt it. (shout out “let me know if you aaare”,
If you’re a classic book learner: Books!
• HTTP – the Definitive Guide
• HTTP Developer’s Handbook
• Node Cookbook
• Node Up and Running
• Node.js in Action
• Node.js the Right Way
• You Don’t Know JS
• Streams Handbook
A little disclaimer: Some books have dated themselves a bit with how fast
Node.js has been changing, and others are keeping quite up to date. So this is a disclaimer
that what I’m telling you is how people learned Nodejs PRIOR. Also, if you’ll notice, these are
almost exclusively all in English. *cough cough*
Trial & Error One
Node.js coder survey remarked: "One of the biggest learning tools for me has been writing a
the more I learn what not to do…” Another part of that experience is debugging tools we’re
consuming(ex: Local development under Webpack) but not necessarily contributing back
One anecdote was that a person learned a ton through subscribing to the Node.js issue tracker.
(lurking, reading through expertise and code). I thought that being able to observe folks open
sourcing on this scale was a really incredible insight for people to learn. I’d love to encourage
more people to do that.
Have a little help from our friends
Mentors. Knowingly or unknowingly, inspire and keep people in the language. Working
alongside people who were contributing to the language and happy to share their knowledge
has been really powerful for a number of people writing Node.js. It can be intimidating to ask
this of people, but it’s worth pushing through that. My mentor pushed what I thought I’d even be
interested in areas of Node.js by his infectious excitement about developments of the project.
No coder is an island?
The one that always makes me giggle is people declaring they are self-taught.(throw a little
shade. This isn’t a thing. People at least read the source and that’s standing on the shoulders
of giants) It takes whole communities to build a Node.js programmer, even if that community
lives in the ether of the internet or a far off server.
Documentation 37% 36% 38% 36% 39%
Free online courses 33 25 38 29 37
Tutorial videos 26 18 37 25 39
Conferences 16 16 19 16 19
Case studies 13 15 23 17 22
17 17 14 13 23
Meet-up talk events 14 14 16 11 22
Technical podcasts 16 14 11 11 21
12 8 17 11 10
Technical webinars 10 9 15 12 23
None/no answer 27 44 25 30 21
Resources Would Like More Of
It’s important to point out, again, that where one hangs their hat in the world makes a difference
in interest for learning. There is considerable interest in a range of resources among Latin
American users. Chinese users do not care so much about a wide range of resources, but are
more concerned about the availability and quality of learning tools.
Barriers to learning Node.js
And now we visit the Land of Issues with Learning Node.js. While not necessarily broken,
relatively few users describe the process of learning Node.js as ‘easy’. Access and quality of
resources is an issue in some topic areas, especially including managing Node.js for
production and security. Users in China, new users and those in smaller companies are among
the most likely to complain about accessibility and/or quality of learning resources.
Please keep in mind these are opinions shared, not my own experience necessarily.
“Tools I’m used to from programming in other languages”
…OR THAT I’VE BEEN TOLD WOULD BE HELPFUL
“Tools I’m used to from programming in other languages, or that I’ve been told would be
years back--I was not a fan when I started writing Node.js but the plugins now have created a
level of support difficult to ignore. This is especially useful for those who have transitioned from
other languages that had excellent IDEs.
No real debuggers(at the time). Yeah, it can be really difficult to debug code without a decent
debugger. Who’d a thought?
Discovery and quality of resources--help a new Node.jser out!
Hard to find resources—just ended using stack overflow.
Some of the API Docs are very substandard. I felt this pain when I first started. They just
weren’t entry-level docs. If JS alone was a prereq, it’d be fine, but a lot of assumptions had
been written into the docs about programming constructs you would have been exposed to in
Difficult to find good examples of production ready node apps/services
• Silly shock face picture here
Event-driven programming breaks some brains. Very different style of programming for some
coming from other languages.
beginners who usually need more structure” —Adri.van.houd
Learning JS isn’t easy—Node.js is sort of caught up in that.(scope and async programming
Or maybe it really is Node.js
“The learning curve is really shallow and then super steep. Since you are building things from
the ground up, there are times when you aren't quite sure how to get from point A to B. And
there are times when I have solved a problem only to find out there was already a solution(the
curse of discovery). I built my own load balancer in Node.js before I found out there was built in
functionality for that... On the flip side there isn't anything I have wanted to do that hasn't been
Keeping up with the changing trends in node community(callbacks, promises, streams,
Flamewars in the community can sometimes catch bystanders in the crossfire when they just
want to learn and have working code.
Or maybe a lot of our Node.js coders, only writing Node.js for about 50% of their day job, have
to context switch. Not everyone gets the pure JS fullstack luxury. “I use it along side other
languages, so I can get rusty at it pretty quickly.”
Lastly, a number of people wrote Time as a big barrier. (people waxing poetic for the eternal
struggle of FOMO and our fast-paced ecosystem) The struggle is real.
From USERS TO CONtRIButers
OSS Repos/Working Groups/Projects Contributed To
10% Most widely mentioned. . .
• …nodejs/nodejs.org 3%
• …nodejs/LTS 1%
• …nodejs/http2 1%
• …nodejs/node-gyp 1%
• …nodejs/v8 1%
did not check
pic of code+ learn
Speaking of trying to keep up with all of that, what if you also want to get pull requests
accepted? Learning isn’t just for beginners. We’re paid to learn every day. We have to improve
to push our work forward. What if you need a fix in Node.js itself?
Learning to contribute! This is a work in progress for us as a project
Node.js Users have not typically contributed to open source networks in the past, and there is a
reluctance to get involved – in large part because of lack of time or experience, but also
because of feeling ‘intimidated’ or not knowing how to.
Even if interest in providing technical contributions is limited, there does seem to be some
potential for wanting a mentoring program and volunteering – particularly among some
subgroups such as longer term users.
This is where community can really shine. Code + Learn, NodeToDo and community organizers
running how to OSS nights. This is really powerful because it can accelerate your learning,
provide you unknowing mentors, and help with retaining folks because they feel a sense of
Let’s do better
• Opportunities exist for improving the Node.js learning experience:
• Overall, just 45% of users say Node was easy to learn (rating top 3 on 10 point scale); most
resources around managing node in production and security are greatly lacking. The low
positives - and high negatives – on for these areas are a concern.
• Node.js for front-end engineering and Asynchronous programming are also weak spots with
fewer than half given top ratings for availability and quality.
Resources Would Like More Of
Free online courses
Meet-up coding events
Meet-up talk events
Conference talk videos
Workshops (indep of conf)
Paid online courses
•Web App devel
•Using <2 yrs
•Big data devel
•Big data devel 24%
•Enterprise focused 17%
•Enterprise focused 13%
•Big data devel 13%
• Discovery is such an eternal curse for the Node.js community. It’s incredibly difficult for
newcomers when they know what they don’t know, but they don’t know where to go to get
help in that quest.
• The main resources users rely on when learning a new language are documentation and
StackOverflow. Having more contributors answering questions on nodejs/help, in IRC, and
on SO is an awesome way to learn how to mentor and ensure our community is adopting
best practices. We can set coders up for success.
• A VM having the full toolstack with an IDE
• An official getting started guide for Node.js development --in easily findable places on our
official mediums(such as nodejs.org)
• Collection of simple examples for various use cases and how someone might fall into bad
practices(callbacks is a great one here). Best practices, security specific examples.
• Address community problems(not all problems are technical, moderation, consideration
What we’ve taught everyone-LET’S REVIEW
• Node.js is not widely seen as ‘easy’ to learn – perhaps in part because so many have
learned it in their non-native language.
other areas are lacking – particularly for managing Node.js in production, and issues related
• Multiple learning tools will be critical – to accommodate different preferences based on
region, job or area of focus.
• Users rely on many different learning resources, but documentation, free online courses &
tutorial videos top the wish list for further development
How you can accelerate your learning: Go to events. People are the answer. Local ones are
free. Collab summits and code and learn, NodeToDo, nodeschool. These are awesome. If you
get the opportunity, come to conferences. There are scholarships and travel assistance often
Sooooo all you have to do to learn Node.js is to run through a number of tutorials, be patient
spelunking through StackOverflow and our docs, speak English, maybe attend a code school,
read lots of books, write even more non-peformant crash & burn code, and work your way to
coding and architecting bigging and bigger Node.js projects. Simple!(this isn’t okay)
Help is needed. YOU CAN HELP. One of the most enjoyable parts of working in education for
Node.js is the space it’s created for more people to help contribute. Lots of new-to-engaging-in-
the-community people with great ideas and time to help. If you program, project manage,
design, teach, write–there’s things that you could do. Check out github.com/nodejs/education to
file issues on what you’d like to see, and brownie points if you can help make that happen.
Tell me and I forget. Teach me and I
remember. Involve me and I learn.
– Benjamin Franklin
Thank all of these people for their input
Greg Wallace-Nodejs survey
Adri van houdt
People icons by Rockicon
Backgrounds generated by https://qrohlf.com/trianglify-generator/