This guide is for anyone who wishes to coach in or organize a Rails Girls event.
As a coach, you’ll probably be working with people who may not even be familiar with using their terminal (or had their very first taste of using the terminal at the InstallFest the previous night) and won’t understand intuitively why certain commands are worded the way they are. When you’re teaching beginners, the goal is not necessarily to get through the curriculum, but rather to provide a good grounding in what programming is and how it works — and to get them excited about the possibilities programming offers.
As an organizer, you need to know what the coaches need to know. You have to push them to prepare for the event, because proper preparations are directly related to the quality of the workshop.
Think ahead of time about how you would explain the following:
- What’s a program? Operating system?
- What’s a framework?
- something that makes it faster to build an application because it contains most of the things you would commonly write
- Workflow – how do you write a program?
- Learn about customer’s requirements -> translate to “stories”
- Pick a story that seems doable and start writing code that does it
- Show your work to the customer, get feedback
- Based on feedback, adjust stories (customer’s “up front” requirements vs. changes once they see something working)
- Once story is finished, go back to “pick a story”...keep going until you’re done! (This is an example of looping!)
- Basic programming structures – or, how to do the “start writing code” step
- variables – words that hold information
- types of information – text, numbers, collections
- operators – doing stuff with variables
- loops – doing the same action a bunch of times
- printing – to the screen, or to a file
- Writing a simple program
- opening the editor
- opening the command line
- adding two numbers together, storing in a variable
- printing variable to the screen
- save and run
Preparation is very important and directly correlates to the quality of the workshop.
- Smile :-) but don't be creepy >;-{
- make eye contact
- Tell people how long to expect the process to take
- Admit your ignorance
- Tell people it's ok to make mistakes
- Tell people to take breaks when they (or you) are frustrated
- Assume that anyone you're teaching to has 0 knowledge but infinite intelligence
- Check in a lot
- Use normal language over jargon
- Call newly arrived people in to circle or table
- Ask new people to introduce themselves
- Say up front that it'll be a collaborative learning environment
- Encourage students to answer each others questions
- Ask students "What do you want to get out of class?"
- Maybe write those on a board
- Keep track of students' backgrounds and call back during the class
- "Oh, you're a DBA, you'll like this part"
- Humor
- Students have diverse backgrounds
- Treat them with respect and humility
- Try to learn from your students' expertise
- Don't say "no"
- say "you're heading in the right direction"
- or "yes, and"
- Don't say "any questions?"
- say "What questions do you have?"
- Give people a chance to get to know each other in a casual way.
- Go around the table and ask people to share something about themselves
- name
- experience or profession
- why are you here?
- (better than "what do you want to get out of this?" for beginners)
- Encourage questions & discussion
- Tone: be approachable
- Include something weird or meaningless
- What's your least favorite ice cream flavor?
- What one weird thing are you good at?
- Tell us one fact about yourself -- "keep it light"
- What's the first concert you went to?
- Pair up for 1 minute, then introduce your partner
- Remember the point is to get them confident at speaking out loud
- tell your story
- tell why you like programming and teaching.
- beware of bragging.
- tell why you care! Why are you getting up on saturday morning to come in here?
- Positively!
- i’m glad you said that
- what an interesting question
- great question
- i’ve wondered that myself
- Get people comfortable asking questions
- Ask for questions (even dumb ones)
- Later in the workshop, anticipate questions if possible
- when a question is posed, let another student answer it first
- lay this expectation out explicitly at the beginning that they should try to answer each other’s questions
- Slow down!
- if you’re excited/nervous, you will be talking too fast
- talk sssssslllllloooooowwwwwwllllllyyyyyyyy.
- Wait much longer than you feel is comfortable for questions/comments
- leave a space for them to ask questions
- Also make sure to wait for an answer after you ask a question
- Count to ten (silently)
- Chances are, someone else will fill the void
- Ask about pacing. Ask for feedback.
- emphasize: this is a learning process
- get the students talking to each other
- "Stop me if you don’t understand." (because they’ll be too shy)
- "Do you get it?" (because it’s too easy to say yes when the answer is no)
- ask them a question about the material. But how to do this without putting them on the spot?
- ask questions about something that has already been built on top of. Spiral.
- keep an eye on body language/facial expressions
- "i see some confusion. let’s get a question."
- pairing off and discussing/explaining
- ask a less binary question to check understanding
- How would you do ___?
- If I want to do this, what would i do?
- teach basic concept, then ask them to apply it
- explain while loops, have them build one
- pair them off and debug
- ok to ask the same question twice with slightly different variables
- don’t let the most advanced student dictate the pace
- What is a variable?
- What is the difference between a string and a number?
- What is a comment?
- What is a function?
- Ruby sometimes makes things magical by doing things for you. But this magic obscures the underlying patterns for beginners. Don’t get into optional parameters. If something can be left out in a function call, DON’T leave it out.
- Before you have them do anything, first explain the big picture of what they’re about to do.
- E.G.: before typing in the command to deploy to heroku, explain the difference between localhost and heroku.
- Diagrams are helpful! Draw how all the pieces connect together.
Based on notes shared in the "Rails Girls Team" Google Group