How do you teach Elm to complete beginners? To kids? To bootcamps that are on a track to start a career in programming?
I’ve read quite a few resources, having learned Lisp through How To Design Programs, and Elm through Elm in Action. I’ve taught kids Python with Code Combat and Ozaria — originally I learned Python through Codecademy. And still, I’m only good at an educational level and very small apps! I’m a hobbyist, not a professional.
So all that said, I think nothing beats a good structured book (ideally with a mentor) such as the Head First Series, making a notes file (like a little book) as you go, some code example files, and adding some material to Anki for revision. Documentation in Elm isn’t as good as it could be (not enough examples), but that too.
In my experience, Elm in Action is a great book to begin with, but when it hits Part 3 (Building Bigger) I’m thoroughly confused, and I expect many students will be too. Recursive types and routing is quite difficult, as is larger, nested encoding/decoding json, and the bigger your applications get the harder they become to disentangle and understand. Small apps good, big apps … not so good. At the larger scale, I think it’s better to be working with a professional mentor or understanding company.
So here’s my question for the community:
- What would you teach to a kid? What would you leave out? Would you use a different language, such as Bootcamp? (there’s a difference between an 8 year old and a 16 year old, and Bootcamp probably suits the younger kids).
- What would you teach to bootcamp early career starters, who may or may not have done a CompSci degree? (I wish I’d started with How To Design Programs, as it’s a great base for programming)
- What tools and resources have you (or would you) use for these two cohorts?
I’m hoping in later iterations of Elm Lang some things are made easier, or at the very least explained in a thorough enough way. I think there needs to be it’s own version of How To Design Programs if it’s planning on being an educational tool for functional programming.
What do you all think?
There’s a few posts in here from @johan @Janiczek and @tomka on education, some are tools, some are resources — here’s the links:
There’s many ways to teach, but functional programming is especially hard to explain. The language is often incredibly academic sounding!