Last weekend, Ready Set Startup and Swinburne University hosted a RailsGirls event in Melbourne, and I had the privilege of attending as a coach to meet and mentor some amazing new people, both with and without prior programming experience. The event was split over two days, the Friday evening and Saturday, with the idea being that Friday would be spent getting everyone set up with Ruby, Rails, Git, etc. so we could get right into it on Saturday morning.
Friday
Friday evening kicked off with the coaches trying to free electric power boards from their plastic packaging with their bare hands and a small screw, while the attendees got to know each other and started setting their laptops up. All the required software (RailsInstaller, Sublime Text and the Heroku Toolbelt) had all been thoughtfully prepared on special RailsGirls-branded USB sticks. We did have some issues with the supplied version of RailsInstaller and those on OS X 10.9 Mavericks, however, but for the most part the installation party was pretty smooth sailing.
Robert Postill then gave a presentation into how the web works, explaining what HTML, CSS, Javascript, and server-side technologies like Ruby on Rails are, and how they work together to build a structured, well-designed, and responsive website. We then moved on to a discussion of what Ruby on Rails is, and had the now very familiar challenge of trying to explain exactly what a controller in the MVC pattern is. It seems that every coach there had a different way of explaining it, but we got there in the end! Robert has a real knack for only telling half of anecdotes, leading to many in-jokes throughout the rest of the weekend about camping trips and turtles. Tip: you can’t tell just the second half of the “turtles all the way down” story, it just doesn’t make sense.
We capped off the night by running rails new railsgirls
and starting the server to view the “Welcome aboard, you’re riding Ruby on Rails!” screen, to make sure that everyone had everything installed properly, and called it a night.
Saturday
After a nightmare morning caused by the entire train line being out of service, I arrived a little late on Saturday morning to find everyone chatting and generally socialising, before settling down to start working through TryRuby (interesting little tidbit: TryRuby seems to be using JRuby 1.7.6). We had a lot of painful timeouts and odd behaviour, which made this pretty frustrating, but everyone kept at it until lunchtime, working through basic math operators, functions, classes, and so on before lunch. The coaches, as with Friday night, floated around the room helping people out when they got stuck, and explaining and elaborating when asked questions by the participants. The most common questions that I was asked were:
- What a Hash is, and how it differs from an Array,
- When to use double quotes, and when to use single quotes,
- What a block is, and when to use do..end, and when to use curly braces.
There is a bit of a theme to those questions, and that’s that they tended to be pointing out two similar things (such as do..end
and {}
), and asking what the differences are, and when to use each one. I got those questions a couple of times each, along with some extra-special ones, such as if you can use semicolons in Ruby!
Everyone worked at a pretty similar pace through TryRuby, and we broke for lunch as people were getting far enough into it that they could make a start on building their Rails app. While we were eating, we had a brief discussion about Ruby and Rails documentation, where to look when you need help (i.e., Stack Overflow), and other questions that the participants had, which led to some pretty hairy pseudocode being written on the whiteboard by some of the coaches!
We then all got stuck into building the Rails app, again with the coaches helping out and explaining when the participants got stuck. Some coaches sat at a table and helped the three or four at that table, and others did more floating around, helping the rest out when a hand went up. I did a mix of both, and later on ended up working with a table of four for the remainder of the day. The app involved creating “ideas”, adding some design to the site, customising the routes, adding image uploads, and having a sort of bio page about the app’s author. The tutorial is hosted on the RailsGirls website, if you are interested in seeing what we were all building.
One of the participants that I helped that day has a job as a QA tester on a non-Ruby project, and at one point she asked me whether Ruby supported assertions, so that she could start writing some tests for her “Idea” model and controller. The look on her face when I showed her all the tests that had been created for her when she generated the “idea” scaffolding earlier on was priceless! It was a real “wow” moment for her, seeing how easy it was to write automated tests for Rails apps, and that Rails even gives you some basic tests for free. I took her through the unit and functional tests, showed her how to run them with the rake
command, and we talked about Cucumber (she asked about Selenium, which she uses in her job), Jenkins and Travis CI, and so on for the next hour or so. I could tell that she was pretty much hooked on Rails development from then on!
In the last hour or so we got the apps up on Heroku, and played around with making small changes, committing them, and pushing it to Heroku, to show how quick it is to make a change to a Rails app and deploy it to the web, followed by one last group discussion about the Rails community in Melbourne, the events that are held, and how to find out when and where the next one is (such as the InstallFest that we are running on December 5th in Melbourne).
That pretty much wrapped up the weekend! Not everyone got their apps up on Heroku, as a few people had to leave early, and the coaches were a little stretched for time with so many participants! Everyone started heading home around 5pm, with a lot of people asking when the next Ruby meetup is on in Melbourne (November 28th at Inspire9).
I had a great weekend at RailsGirls, and got to meet and help out a lot of lovely new people. We had fewer annoying installation issues than I expected, and the problems that arose while going through TryRuby and the Rails tutorial led to some great and insightful conversations (both as a group and one-on-one). I definitely left on Saturday evening with a lot more experience at explaining Ruby, Rails, and even general programming concepts to beginners, and lots of practice at helping people out with their problems while keeping my own hands off the keyboard wherever possible.
Thanks to Ready Set Startup, Swinburne University, DiUS and Envato for sponsoring and organising the November Melbourne RailsGirls event, and for allowing me to come along and help out a new set of Ruby on Rails developers.
I look forward to the next one!