I remember how I felt the first time I made an API call - like a caveman who has just created fire.
A student made that comment (modulo paraphrasing) during my last Rails class at The Iron Yard. I know exactly the feeling he’s referring to - that sense of having grappled, built, and conquered. Those are the moments that got me hooked on programming. As cerebral as software engineering is, it’s a strangely primal feeling.
I want each of my students to have that viscerally satisfying experience of creating fire themselves, and I’ve been thinking about how I can make that happen. I think the trick is in the tools - don’t give them a lighter, give them flint and kindling.
Questions, Not Answers
I first ran across this sort of idea in my Moore method classes in grad school. The idea of the Moore method is this - math texts are more or less all isomorphic: a sequence of definitions, propositions, and proofs. In a Moore method class, you take a textbook, delete the proofs, hand the book to the students, and let them fill it in.
The key is that the existing definitions frame and direct the discussion and lead students to a point where they can make their own discoveries. The instructor steps in only to keep progress moving forward if it lags, and to highlight trends or other approaches to solutions.
My Moore classes were hands-down the most instructive of my graduate career. I was solving problems, not memorizing solutions. I discovered for myself. I internalized. I was far more confident in my abilities because I had been doing the real work all along.
To Yearn for the Sea
For my next class, I’ll be taking more of a cue from those Moore classes, and not handing out nearly as many solutions. That means more ERB and less HAML; more
<form>s and less
form_fors; more Camping and less Rails; re-inventing a few wheels; taking the time to live with and internalize problems, not shying away from pain points, and coming to solutions collaboratively.
Rails has a lot of surface area, and it’s quite possible we won’t see as much of it this time around. But I think it’s more valuable to have a solid foundation for being confident exploring and speculating and considering. It lets students intuit “well, if I were writing Rails, it would work like this”. It puts them in a better position to consider their tools objectively and decide which (if any) is appropriate for a given problem.
Ultimately, worrying about what my students know at the end of our three months seems a little short-sighted. It’s at least as important to get them ready to continue learning for the next three months and the next three and the next three - and to get them excited for the road ahead. That is my goal.
If you want to build a ship, don’t drum up the men to gather wood, divide the work and give orders. Instead, teach them to yearn for the vast and endless sea. — Antoine de Saint-Exupéry