Files
elm-0.19-workshop/TEACHING.md
Richard Feldman 345368cbcc Initial commit.
2018-04-28 16:50:03 -04:00

98 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## Running this workshop
Hi there! 👋
Im [Richard](https://twitter.com/rtfeldman), and I made this workshop. I hope
you like it! Ive [run it for Frontend Masters](https://frontendmasters.com/courses/elm/)
as well as [for Pluralsight](https://www.pluralsight.com/courses/elm), and
in person at a bunch of conferences. (If youd like me to run it at a particular
conference, have the organizers [ping me](https://twitter.com/rtfeldman)!)
I released the material Ive made here under
<a rel="license" href="http://creativecommons.org/licenses/by/4.0/">Creative Commons</a>
so others can use it to run their own workshops. If thats you, great! Heres
some info about it that may be helpful in teaching this workshop.
## Slides
The [slides](https://docs.google.com/presentation/d/1sNx5k3_fHwJcgm9QEY1LsMH_TyF5SnnOSDKb8HvFsEU/edit?usp=sharing)
I use with the workshop include speaker notes. If youve seen me give this
workshop before, you may notice that Im not following these notes very closely.
This is because I made the notes for other teachers, not for myself. In general
I prefer not to use speaker notes, but I thought it would be unreasonable to
expect other teachers who wanted to use this material to watch hours of video
to figure out what words the slides were designed to complement. Writing speaker
notes seemed like a nice way to save other teachers a bunch of time, so
thats what I did!
If you spot any mistakes in the speaker notes, or have any questions about them,
please dont hesitate to ask me in the
[`#teaching` channel](https://elmlang.slack.com/messages/C0MF3BQ7K/)
on [Elm Slack](http://elmlang.herokuapp.com/).
## Schedule
This is designed to be a full-day workshop. You may not have a full day to
work with, but I figure itll be helpful to cover how I use this material. The
schedule I follow is typically something like:
* 30 minutes - help everyone get set up, buffer for late arrivals
* 2.5 hours - cover parts 1-4
* 1 hour - lunch
* 4 hours - cover parts 5-10, with a couple of 10 minute breaks sprinkled in
Definitely get through part 4 before lunch if possible. Teaching gets harder
after lunch because [humans are programmed to get sleepy in the early
afternoon](https://www.webmd.com/balance/features/afternoon-energy-boosters#1).
Part 4 introduces types, and you dont want to introduce types to sleepy
students.
## Teaching Tips
I gave a talk about [teaching Elm to beginners](https://www.youtube.com/watch?v=G-GhUxeYc1U)
which has a bunch of my thoughts on the subject. The
[`#teaching` channel](https://elmlang.slack.com/messages/C0MF3BQ7K/)
on [Elm Slack](http://elmlang.herokuapp.com/)
is a great place to chat about workshops, exchange tips, etc. Come say hi!
One big piece of advice I have for this workshop is to
**minimize the number of new concepts you introduce**.
The goal of the workshop is that students will be able to build Elm applications
on their own. This requires digesting a **ton** of new information,
and piling on even more on top of whats absolutely necessary is harmful to
those students who are already struggling to keep up.
For example, I only use the term “partial application” to explain that concept.
I very deliberately do **not** introduce the term “currying.” If a student asks
“is this currying?” I give a short answer like “Yep!” and move on quickly.
Why not mention it, though? What could it hurt to throw that in?
Students who have been cruising through material might easily absorb this info
and move on, but imagine a student whos really struggled to keep up.
Imagine them thinking “wait, I already dont understand partial application -
and now I need to learn currying too? Whats the difference? *Is* there a
difference? Should I raise my hand and ask, or is that a stupid question?
Argh, this is so frustrating!”
It can feel shameful to admit publicly that you dont understand what the
teacher just covered. Especially when everyone else seems to have gotten it.
Double especially if youre sitting near that one student whos always raising
their hand and asking stuff like “so its an applicative functor, right?”
They make it sound like this is the easiest stuff in the world! Are they
going to laugh if you raise your hand and say “I still dont get why
`(List.map negate)` compiles. Can you explain how that works again?”
If a student is struggling, they generally wont say so out loud. You wont
find out until you see the mistakes they make on the exercises. Just know that
some students in every class will struggle, and that extraneous info thats a
nice-to-have for students who are cruising through the workshop may be
detrimental to those who are barely hanging in there.
Remember, the goal is that students will be able to build Elm applications on
their own. **Minimize the number of new concepts you introduce** so you minimize
the chance that theyll get overwhelmed and give up before reaching that goal!