Making a New Rails Curriculum

(Hi! I’m Lillie Chilen, and I do meta-organizing for RailsBridge SF, which means that I work with Rachel Myers to find organizers and venues for our monthly workshops here. This is a post I wrote on my blog and thought you might like!)

On a Sunday afternoon about a month ago, Travis Grathwell said he thought we should build a message board. So we sat on our couch and worked the rest of the day; him making suggestions for what I might do next, me remembering what rails is. I wanted it to be pretty, so after I had an empty app and had installed Devise (the authentication gem that Travis wanted to use), I added a rails-friendly version of Bootstrap. Since I didn’t know how any of these things worked already (and Travis knew generally, but didn’t know the specific commands to type in) we just read through the documentation and troubleshot as necessary.

After getting things set up, we were ready to actually make something useful — a post. I was a little bit rusty on the old MVC and what those things meant, but we played Follow the Error Message and got the models, views, and controllers set up. It got a little crazier when we added commenting (nested resources, anyone?), but by the end of the day I had a fun little app and Travis had posted on my LillieBoard message board with a topic of “Lillie is a doof”. I commented that that was not accurate.

Since we wanted to make a new Rails curriculum that was a bit closer to what it’s like to program IRL, we set out a series of four challenges:

  • Install Devise and make a static home page
  • Add Bootstrap
  • Add posts functionality
  • Add commenting

Each step had a series of requirements (i.e. “The user should be able to create a post with a title, author, date published, and content.”), as well as topics that teachers and students would probably want to discuss, links to topical resources, and some hints.

We did a little bit of beta testing with the gracious and supersmart Michelle Glauser during a RailsBridge workshop at GitHub. We found more pieces that needed clarification and decided to break up the beginning slides a bit more, so the “Make a static home page” came before “Install Devise” — having a home page before having authentication made it a lot easier to see what was going on.

I decided to organize a workshop to give this new curriculum a shot, and the fantastic VP of Engineering at VerticalResponse was totally behind sponsoring and hosting. So while testing and improving the curriculum, I got to plan foodstuffs and send many, many emails. Once the workshop was definitely happening, we tried to improve the curriculum as much as possible. We ended up splitting up the steps even more, and Travis made some sweet mockups using Balsamiq. I didn’t expect students to get through to the end, but I did figure they’d get to the point of being able to create a post.

Turns out it was kind of hard! By the time we had lunch, one class had just finished adding Devise to their app. But that class also spent a time in the morning reviewing CRUD and other concepts, so that once they were actually coding they had a better idea of what was going on. Another class sort of dissolved around 3:30pm, which was concerning, but the teacher himself said that he didn’t really stop them, and the students felt like they should just work on it at home, if they weren’t going to be told what to do. This seemed like the exception, though, as a lot of the classes were still working hard at 4:15pm when I started haranguing them to pack up for the day.

After we wrapped, we had a damn lively teacher’s retro — a lot of opinions on improvements for the curriculum as well as for sorting students to make sure they were in the correct class. On the registration survey, I had described each curriculum and let students choose between doing to intro Rails curriculum at one of two levels (Beginner or Advanced Beginner) or doing the brand-new Intermediate curriculum. In retrospect, some of the students doing the new curriculum weren’t quite ready for it, and probably should have done the intro curriculum again.

The plan now is to add more resources to this new curriculum and some concepts review for the teachers to teach before people dive into their apps. One comment I heard a few times was that people had spent too much time with Bootstrap and just wanted to get to rails, so I’m planning on making an optional cheat sheet with step-by-step instructions for anyone that wants a styled app but quickly. Another suggestion was grouping people by topics for the intermediate curriculum — perhaps the “let’s really get into databases” group, and the “make it really pretty” group, and the “dive into devise” group.

As many things as I want to improve, I’m really happy about how the workshop turned out. The general feedback I’ve heard is that the new curriculum really helps cement concepts for people who mostly get rails, but haven’t yet gotten a chance to apply what they learned from the intro curriculum. And I got to learn a ton, too! Now I just need to get someone to write my dream regex curriculum with me…

Making a New Rails Curriculum