Another Summer Academy week zipped by; a week of ruby programming, pair programming, Test Driven Development (TDD), learning, listening, and teaching. Sitting here and reflecting on what happened makes me truly appreciate the unique opportunity that I am getting this summer. One can learn a lot on their own (and I have) but there are things that you just can’t do alone.
You don’t get an opportunity to teach what you know when you’re alone. You don’t get to see people go through the same emotions/frustrations that you went through (or are going through) while learning. You don’t get to see how professional developers approach and solve a problem. You don’t get to talk to people who are full-time employees of one of the hottest startups in Canada (the world?). You don’t get people checking up on you, keeping you honest about the goals that you set for yourself.
The main takeaways for this week are “be resourceful” and “be yourself and do what you love”.
On Being Resourceful
Being a programmer is partly knowing the technology but this takes a backseat to being resourceful. Being resourceful means solving problems, being inventive, creative, clever, talented and able. It means always taking the time to think about a problem and then asking yourself (and others) some very good questions. It means being able to gather information, analyze this information and then make reasonable conclusions.
Errors are rather scary to a novice programmer; this fear combined with the cryptic nature of errors can be a formidable force. Going beyond the novice stage requires a programmer to make peace with the errors, and hey maybe even become friends. Errors give a lot of useful information so learning what they say is key. Beyond just helping us fix broken code they can also be the driving force behind the creation of code in TDD. Errors produced by the test code can pretty much tell you what code you need to write.
Knowing enough to properly phrase a question can make a programmer very resourceful because it means there’s a high chance the answer is one google search away. I feel (happily) that I am at a stage of my programming adventure where I know how to phrase my questions, so finding answers becomes rather easy.
I navigate the Ruby docs when I have questions about syntax, I browse the Rails API when I want to learn what a helper method does, I look at the Official Rails Guides when I want to know the magic behind Rails, and for gems I combine the powers of rubygems.org, Ruby Toolbox and Github.
The book “Agile Web Development with Rails” gives a step by step guide on how to build a shopping cart - an appropriate exercise given the setting (Shopify)! I already went through the book before the course so I took some time to read my code and made some notes about how the whole app works. Building the shopping cart while following the guide felt like only a partial learning exercise - I felt that I needed to rebuild the app without help from the book. So part of this week was spent building the cart from the start, this time with TDD and without any of the junk that the scaffold produces. I didn’t refer to the book but I was looking at the depot code and my own notes.
My hope is that soon I’ll have a fully functional shopping cart app that was built with TDD, that I fully understand and that I feel I truly built.
My wife (Paula) and I have been pair programming and collaborating on two side projects. Holly is a senile AI computer that at the moment can only answer arithmetic questions (working on this!) and Hex, a quiz/game to help people learn colour hexadecimal codes. Both are coming along nicely - I’ll write more about them in the future.
Other than learning (a lot) we’re having tons of fun and by the end of the summer our Github accounts will have no shortage of cool repos to show off.
On Being Yourself and Doing What You Love
We had the privilege this week of listening to many talks from Shopify staff - including Harley Finkelstein (CPO of Shopify) and Doug Tetzner (Talent Scout at Shopify). The message was pretty much “do what you love and with the right people” and “work needn’t be a separate category, one should ideally blur the line between work and play”. I personally am passionate about web/software development and education so if these passions can be part of my everyday life then I am a happy man.
Doug pointed out that we should be ourselves, be real, and be honest about who we are and what we want to achieve. This was a relief, to be honest, because too much talk of “selling yourself” does tend to make me queasy.