ARTICLES
Mentorship Week 2: Teaching Ruby on Rails
Joe Sak
Teaching Rails is hard! They say that one of the most difficult aspects of teaching is that you don’t know what you already know. That couldn’t be more true for me in this case. There is so much about my workflow that is second nature, that I just take completely for granted! Where do you even start when you want to teach someone Rails? MVC? Bundler? Test-first? Routes? Models? What is RVM? How does the view template know about that variable? How did Rails know to use that view template?! Shit’s magic!
Well, starting on Monday, I threw Matthew right into the deep end again. I’m so glad that guy can swim. We started building the web interface to our Mastermind gem, which is now installed in a Rails app. It went okay, but Matthew’s feedback for me was that he didn’t quite understand how Rails was connecting all the dots.
So on Tuesday, we took a step back. I drew a few diagrams out on the whiteboard to give him a basic model of how Rails works in a typical Client-Request, Server-Response model. It made a lot more sense to him after that, and then I showed him where–in the code that he writes–Rails “magically” hooks in and handles the connections between its components. We also sat down and reviewed a list of Railscasts for him to watch. That really helped a lot.
Today, we had a lunch review to make sure everybody still feels good about the program, and it’s really meeting and exceeding our expectations. So that’s great news! For the afternoon, he finished integrating the Mastermind game into his Rails app, fixed some bugs, and polished the views with some CSS and HTML in time for a 5pm demo. Bryan sat down and, after about 10 turns, he broke the code and won the game! It was exhilerating to see Matthew’s final “YOU WON” page appear on the screen.
We are very proud of Matthew, and we congratulate him heartily for completing his second week in our Apprenticeship Beta Program. He’s really hit the ground running and continues to demonstrate an exceptional skill. This week’s homework will be continued reading of Eloquent Ruby and viewing our preset list of Railscasts. Next week, we will start building an app for our “client”, Nick Gracilla.
Keep kicking ass, Matthew!