How We Prioritize Tutorial Content

When it comes to processing large amounts of data, Node.js is a superstar. My team and I have had a lot of fun exploring these concepts in our Data Brokering with Node.js series. In addition to other data processing touchpoints, we’ve dissected how package.json files work, investigated using streams in Node.js, and learned all about the ETL (Extract, Transform, Load) pipeline.

As we set our 2020 content goals, I was reminded of the first time I had to do this with Drupalize.Me, our sister site, which evolved over many years into the extensive Drupal training resource it's become. Early on, a lot of the content we created was based on what was popular, with little regard for long-term content strategy or what the bigger picture looked like. This resulted in duplication -- and a content base that's still probably harder to maintain than it should be.

Because we’ve had the opportunity to be more mindful from the get-go with Hey Node, I’ve had some insights about process I think are worth sharing. Part of that involves trying to distill the lessons we've learned into an executable plan. For example, we now spend a lot more time thinking about what the complete set of content we want to create looks like, which helps inform what content we create now and how to organize it. It goes without saying (but I will anyway), that the completed material should be up to date with current releases and accurate.

But what does complete look like?

Our long-term goal is to create a one-stop reference for all things Node.js -- something like “The Complete Reference Manual for Node.js”. We want it to be a digital textbook comprised of individual courses. Any individual course isn't likely to use the complete manual, and may even jump around from section to section depending on the course requirements.

New developers want a linear, project-based path to follow to teach the fundamentals, while also writing real code. Experienced developers want quick, copy/paste-ready solutions to common problems, as well as explanations of how the code in question works, and why it's written that way. Done right, our content strategy should answer both these needs.

Self-contained tutorials

The fundamental unit of content is the individual tutorial, a URL where you can learn everything you need to know about a specific aspect of Node.js. Each tutorial contains some combination of written material, videos, code samples, and illustrations as necessary to provide the best explanation possible.

Each individual tutorial should be self-contained. While it may be presented as part of a linear set, it should stand on its own. For instance, on their first visit, a learner might read the complete tutorial to learn what Node.js streams are and how they work. In the future, that same learner just wants a quick reminder of the specific syntax -- and wants to find that reference fast.

A learner likely lands on our site with a problem to solve today, like a specific task they have been assigned at work. They might also want to brush up for an interview or learn enough Node.js to help with an upcoming project. We want that learner to return to Hey Node often, even after we’ve delivered the answer to their specific problem. Again, like a reference manual.

Many of our members are not Node.js beginners. There's a good chance they already know some (or a lot) of the content a course contains. This means they will likely skip over sections in order to find the parts they're interested in. We don’t assume that people are going to consume the content in a linear fashion, or even that they'll consume all of it.

Drupalize.Me’s tutorial "What Are Template Files?" provides a good example of an individual tutorial that serves five discrete functions:

  • A standalone piece of content: a learner can complete the tutorial and understand what a template file is, how templates are used by Drupal, and common naming conventions
  • Material for a specific unit as part of a multi-week course
  • A quick cheat sheet intended to be used as a repeat reference
  • Part of a manual that isn't intended to be consumed in any specific order but does provide exhaustive coverage of a topic
  • Part of a topical page


In order to help learners meet specific needs, we also mix and match individual tutorials from our database together into “Guides”, which answer all sorts of different questions. Building out this catalog of tutorials into guides is one of our primary objectives right now.


We also realize that it's more useful for learners (and our marketing efforts), to be able to tell a story. I know I personally learn better when I'm working towards a goal as opposed to consuming random pages of technical documentation. With that in mind, we need to produce tutorials in an order that allows us to string them together as part of a story, a cohesive framework. Then we can come back and fill in the gaps required to ensure we have comprehensive coverage at a later point.

Community input

Finally, we look at data we've collected through surveys, interviews, and other anecdotal evidence to help us better understand what content to create. We look at what topics are popular, what people using Node.js in the real world want to get better at, and what people currently find to be difficult. The graphs show actual results from surveys we conducted last year, gauging interest in Node.js by topic and ability.

Chart: Node.js for working with streaming data shows marked interest in learning this concept.

Chart: Node.js for serverless functions shows marked interest in learning this concept.

We also recently created a study guide for the new OpenJS Node.js developer certifications. We’re working on creating new content to help fill in the gaps and better position ourselves as a resource for the community.

Up next

With all that in mind, here’s our 2020 content priority list, in no particular order:

  • Serverless
  • Streaming (real-time applications)
  • Debugging
  • Node.js fundamentals, especially the Event loop, Events/EventEmitters, and Exception/Error handling
  • TypeScript
  • Express.js and popular middleware
  • Testing
  • GraphQL

P.S. If you're an expert in any of these topics and would like to help create educational resources for our site and the community, check out this contract tutorial writer opportunity.

In development now:

We’re creating a new batch of tutorials on setting up a Proxy API with Express. We’ll publish the written versions after they have gone through a technical review, with video tutorials soon to follow.

  • What Is a Proxy API?
  • Use Express to Create an API Proxy Server
  • Set up an Express Server
  • Organize Your Code into Modules
  • Set up Routes for Your API
  • Overview: Streaming HTTP Responses
  • Stream to an HTTP Response
  • Optimize an Express Server
  • Add Caching and Compression
By Joe Shindelar
  • Jan. 22nd, 2020

If you enjoyed this post sign up for our newsletter to get notified of new content.

Learn Node.js
Access all our written and video Node.js tutorials.

← Previous post

A year and change ago, I joined Osio Labs as a marketing coordinator, jumping headfirst into a new role, new company, and a new distributed work lifestyle. But newest of all was learning the value of what we sell: technology knowledge. How do you communicate that? How do you differentiate yourself in a crowded market?

Because understanding that is central to my job, I needed to learn what happens to tutorials during technical review. Jon Peck, technical reviewer for Hey Node, kindly obliged. It turns out, an online tutorial is a small chunk of ice, and the process to make one is an iceberg built of Trello cards. What follows is an excerpt from our interview.

By Philippa Stasiuk on Dec. 4th, 2019

Next post →

A comma-separated values (CSV) file is a plain text file that stores tabular data. The values are separated by commas. They can be used to collect or store information for various purposes. One of the ways I've used it was to collect user data from clients and then do a bulk update to the database. You may have a different use-case but want to know how to read data from a CSV file and how to output tabular data to a CSV file. In this post, I'll show you how to achieve those objectives with JavaScript, in Node.js.

By Peter Mbanugo on Feb. 3rd, 2020