-
Notifications
You must be signed in to change notification settings - Fork 59
Event Mentor Best Practices
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 *nix-based systems. Contributions from Windows-savvy developers are appreciated.
- 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.
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.
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!
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.
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.
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.
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
- fundamental functional programming features
- how to use the
async
package - how to use Promises
- how to use some features from ES6
If they want to dive into the Node framework itself, there's
- how to compose streaming interfaces with
.pipe
- improve your debugging skills
- Scope Chains & Closures
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.
A Student will need access to 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.
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.
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 changes the nature of Workshopper instructions in a couple of ways
- Use of
npm install -g
instead ofnpm 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.
- Node.js Best Practices
- Understanding Error-First Callbacks
- Understanding the node.js event loop
- setTimeout and Friends
Useful for exchanging code snippets between Students and / or Mentors
For in-browser JavaScript expermentation, when the Node.js REPL just won't do.
-
12 JavaScript quirks
- Truthyness
- Coercion and
===
this
- Variable scopes and the Global namespace
- JavaScript quirks
- WAT - A lightning talk by Gary Bernhardt from CodeMash 2012
- MDN JavaScript
- MDN Learning JavaScript
- MSDN JavaScript Reference
- JavaScript: The Good Parts
- Javascript Koans
- Essential JavaScript Links
- Node Forward's Node Mentoring Program
- NodeSchool Organizer's Event Mentor Best Practices
- @maxogden's tips and tricks for hosting a nodeschool event
- The long-lived NodeSchool Discussion Want to run an event?