Mentorship Guidelines and Advice - nodeschool/saopaulo GitHub Wiki

So you want to be a Mentor at a NodeSchool Event? HOORAY !!!

Here's some general advice & guidelines, and links to useful resources.

This document is currently very Mac-focused. Much of the advice will also line up with with *nix-based systems. Contributions from Windows-savvy developers are appreciated.

General Guidelines

  • Ratios: Try and get a mentor:student ratio of around 1:5 or more
  • For the long-game, encourage people to become mentors or help people find one over in Node Forward Mentors.

On Being a Mentor

Every NodeSchool Event requires a different level of effort. It largely depends upon the Student-to-Mentor ratio, and the Students' collective level of knowledge. You could end up being very busy, or you might end up spending most of your time off to the side chatting with folks or clacking on a personal project.

Your expertise will be in greatest demand at the start of the Event when everyone is going through the Setup process.

Required Experience

Mentors should be familiar with Node and Javascript. It's very helpful to have completed at least the javascripting and learnyounode workshoppers so you understand how the software works and what the attendees are dealing with.

Do you need be an expert Node ninja guru double-rainbow? No! If you are stumped on an attendee's question, it's more than okay to call on another mentor for backup, or sit and work through the problem with the attendee. Teaching truly is the best way to learn; you don't need to have landed a patch in Node core to be a great mentor!

How to Help

Your role as a Mentor is to facilitate the learning experience of the Students.

In general, it's usually good practice to keep a light touch in your Mentoring. This helps the Student feel at ease and gain confidence in their own accomplishments. Even better, it encourages them to feel free to ask for help.

  • Encourage Students to pair up as they work

    There's a lot to be said for having people learn from each other. This even goes for two (or more) Students who have little-to-no Node.js experience. A Mentor can always step in when needed, and they'll end up helping multiple people at once. Yay efficiency!

    The Event staff may even suggest a bit of re-seating before the Event starts to balance the Students per level of knowledge.

  • Observe the Students, and offer help where needed

    Sure, there will be moments when you'll be helping one or more Students for a good chunk of time, especially early on during Setup. But in between those moments, you'll mostly be in 'hovering' mode.

    Stand back and watch for Students who are looking to make eye contact with a Mentor. They're the easiest people to help, because they're asking. Offer as much guidance as they need, then go back to 'hovering' and let them apply your advice.

    Keep an eye out for Students who seem to be in that frustrated stuck state that we're all so familiar with. Ask the student if they want some guidance. Be prepared to step away and let them struggle through it themselves if they prefer.

    You might even suggest that they pair up with a more experienced Student sitting next to them, if all parties are willing.

  • Teach to the Student's level of understanding

    It's a delicate balance to provide just the right amount of help. Some Students will want to soak up everything they can, and some will want to race to the end with as little tangential learning as possible.

    This is something you'll get a feel for as you gain teaching experience. A great question to ask the Student is; "How much do you want to learn?"

    It's often good practice to teach the Student how to 'fish for themselves'. But if they bump into a difficult situation -- eg. Setup insanity -- then doing the fishing for them is totally fine. Take the time to explain what you're doing as you go, and the Student will absorb as much as they can (or want to).

    Students frequently bump into quirks of the JavaScript language or the Node environment. Probably both. All that WAT?-ness you've become accustomed to is certainly too much to convey in one NodeSchool. Check in with the Student, and advise them accordingly.

  • Troubleshooting: From linclark: When someone asks me what the problem is with their failing solution, even if I see the bug immediately I don't say that I do. Instead, I'll say "hmm, I'm not sure, let's take a look" and ask them to do the debugging steps that I would do if I ran into a bug that I didn't understand ("Can you put a console.log() statement and log out the foo variable", etc). This does two things: 1. It makes the learner feel less incompetent and more like we're in this together because we both don't know what's going on, and 2. it gives them the skills to find their own bugs when there aren't mentors around.

  • Socialize!

    The Student will gain a lot of satisfaction from the technical goals that they achieve. They'll also gain a lot from the relationships that they build at the Event.

Preparation

There isn't that much preparation required for being a Mentor. Your willingness to volunteer and show up is the most important part.

  • Bring your laptop, your wisdom, and a smile

  • Have a good handle on setting up Node in a new environment

  • Make sure you've tried out one or two of the Workshoppers on your own

    The easy ones are sufficient, and you don't even need to complete them.

Experience with Windows

Every NodeSchool Event is sure to have Students who will bring their Windows-based laptops.

Mentors who are experienced with Node development under Windows are highly valued, because Windows is ... well, special. It's good for an Event to have one or two Mentors on staff with this amazing niche knowledge, mostly for those inevitable bumps in the road during the Setup process.

Choosing a Workshopper

The Student should choose a Workshopper that fits their learning level. They can pick a real challenge for themselves, or just spend the day re-hashing techniques they already know while chatting with folks and learning the Node.js environment.

If the Student ...

We recommend ...

is completely new to JavaScript

javascripting

is familiar with JavaScript from the browser

learnyounode

If they want to improve their JavaScript skills, there's

If they want to dive into the Node framework itself, there's

Setup

The Student will need to have Node installed, and one of the Workshoppers.

This period of time -- right at the start of the Event -- tends to have the highest demand on Mentors. You get extra gold stars here if you are familiar with Windows.

Install Node

A Student will need access to both both Node.js and NPM. Some good strategies are

  • Install a Node version manager, such as nvm or nave

    This is probably the best option if the student wishes to use Node long-term. Node evolves fast, and sometimes you need to regress your code against old versions. You may also need to switch back from Node "latest" to 0.10; some Workshoppers aren't forward-compatible.

  • Install Node through a package manager such as Homebrew or MacPorts

    It's convenient, but you'll get whatever the "latest" version of Node is according to their packaging.

  • Download and install the Node + NPM binaries

As usual, avoid using sudo priveleges as much as possible.

Alternately, if the Student already has Vagrant installed on their laptop and a base-line image, they can spin up a new VM instance as a 100% clean-slate sandbox. It's a heroic task, but an excellent way to learn about Node from the ground up.

Install a Workshopper

The NodeSchool Workshoppers have thorough instructions, and can be followed verbatim.

Not all Workshoppers are forward-compatible to Node versions above 0.10 (though most are).

Many of the Workshoppers suggest using npm -g for packages. You may want to tell the Student about npm list -g so they can review all of their globally-installed packages at the end of the day.

If the Student wishes to be more organized, they can create a directory for their NodeSchool project work and run npm init to create a baseline package.json. This changees the nature of Workshopper instructions in a couple of ways

  • Use of npm install -g instead of npm install --save
  • To execute the foo binary for the 'foo' NodeSchool project, you'd do ./node_modules/.bin/foo

It's a cleaner way to do things, if the Student wants to take on the additional effort.

Technical Resources

Setup & Installation

Documentation

Node Techniques

Collaboration Tools

Useful for exchanging code snippets between Students and / or Mentors

Online Sandboxes

For in-browser JavaScript expermentation, when the Node.js REPL just won't do.

JavaScript Quirks

Tutorials

Mentoring Resources