Adventures in Teaching a Ruby on Rails Programming Class
To help get our local chapter of Women Who Code off the ground, I have been volunteering to help with classes. As the only developer working with Rails on a day-to-day basis, it seemed like a great idea for me to lead a Ruby on Rails class. Now, I haven’t even really given a full presentation before, but if I can make a simple blog in under an hour, certainly I can make a quick class about it.
My coworkers, who have a lot more experience in this area, were a little more skeptical. I got a lot of reactions along the lines of “That sounds ambitious, but I’m sure you’ll do great.” They were definitely right. I got to give my first big presentation a few weeks ago, and we didn’t get as far as I wanted to, but I think both the students and I were able to get a lot out of the course. We were able to cover a lot of the high-level concepts used in Rails, and I got to learn a lot about putting a large tutorial together from scratch.
One of the best things you can do after taking on a large project like this is to hold a retrospective. We already do this for our software projects to help us continuously improve at our craft, so why not apply the same technique to other things? To make this retro more than “me, myself and I,” come along with me on my journey and hopefully we can all get something out of this experience.
Building the course
I always struggle to get started on anything. I always seem not to know what to do next to get towards my goal. I will put in a little work here, a little work there, but it didn’t seem to come together into a cohesive slide deck. After struggling for a few nights, I took a step back and approached the problem like I would approach a new project at work by asking myself the questions
What is our end goal? What is the minimum work we need to do to get there?
This is a lot like how we build a minimum viable product for our clients. Being able to start with a familiar approach finally made everything come together. We had already planned on making a blog post app for our Rails course, so that was my end goal. To determine the minimum work to make a project successful, we would normally use story mapping to lay out what needs to be done. In this case, I came up with a single page cheat sheet that acted as a rough skeleton for all of the information that I needed to teach. I followed along the cheat sheet to generate the whole course, and the slides practically wrote themselves.
Knowing that attendees were not going to walk away being Rails masters, I wanted to make sure that I gave them enough information to continue on their Rails adventure if they were still interested. There are tons of resources available around the web for free, from blog posts, to Youtube tutorials, to local Slack channels filled with people who are ready to help. I’m not sure that my slides covered that enough, but many of the students joined our Slack channel to keep in contact with us about Rails and any of our future classes.
The most valuable part of any retrospective are the takeaways and lessons learned from the experience. I feel like there were several things that I could do better if I did another course, which seems likely because I’m on the schedule for a TDD session in June!
Rails might be too much for half a day
The class went very fast for both the students and myself. While some might say it was great because it was action-packed, I didn’t feel like I was able to cover topics in enough depth. Even then, we didn’t cover all of the topics that I would have liked in the three hours we had allocated for Rails. The straight lecture format was also a little difficult to keep moving because there were breaks to keep everyone on the same step. Thankfully, several students let me know that they still got a lot of the course by just covering the basics. It helped me feel better about how well I did overall.
Could this problem be fixed by extending the length of the class? Possibly. We had discussed making the class a full eight hours, but it did not feel quite right. Not only is that a long time to lecture for the instructor, and a long time for the students to stay in one spot, but the space was being donated to us. It did not feel right to ask a sponsor to provide a full day of their time to keep the space open and also feed us for the day.
There is definitely demand for a full Rails course, but I haven’t quite figured out how to deliver that yet for an affordable price. I am still looking into this issue and hopefully we can announce something in the next few months to help fill this need in our community.
Slides are not always the best medium
I found myself fighting with the slides constantly. If you happened to take a look at them, you might notice that the text is HUGE. It’s hard to anticipate the smallest font size that will be legible if you don’t know what kind of screen you will be working with. This resulted in me needing to split code examples across a few slides, and not feeling like I could add enough text to explain what was going on.
After the class, a coworker showed me this book on React and Webpack and I really liked how the material is presented. For my next course, I am considering using something like this. My writing style will likely work a lot better with the book format, and I think a guided tutorial format will work well for the TDD class. It also completely solves the issue of having large code examples because the page scrolls. I’ll be sure to write an update to let you know how that goes in a few months.
Bring plenty to drink
Don’t forget to bring something to keep your throat from hurting too much after presenting! After four hours of talking, I found myself constantly clearing my throat. I had a large coffee at the beginning of the session, but I was definitely craving a big mug of mint tea by the end. A nice warm beverage always helps me keep talking for hours.
In the end, I found teaching a class to be a very rewarding experience. It has helped me get over the fear of presenting at meetups and conferences, and I learned a lot about my presenting style. I don’t know if I would recommend taking on a four hour class for your first presentation, but you should definitely take on a presentation if you haven’t already. It’s a lot of fun to share what you know with others.