Starting this program made me pretty nervous. But I’m proud to say that I’m feeling confident overall upon the completion of the first week. Matthew is a bright student with a background in computer science and programming already, so it helps that he can catch on fairly quickly and with little resistence. There are definitely some nuances to Ruby syntax and expressiveness that I’ll continue to guide him on, as well as the day-to-day pressures and processes of web development in the real world. Overall, he’s performed fantastically well, and he’s demonstrated a strong grasp of the basic concepts.
Week 1 was all about Ruby basics, testing frameworks, and deep immersion.
Since Matthew already knows Java and C++, programming fundamentals and primitives required nothing more than an overview in Monday’s lesson. I was able to cover the specifics of Ruby development, its focus on syntax, expressiveness, and concise clarity. I also had him pair with me as an observer while I worked on maintenance tasks in legacy projects and on new features in our development projects. I explained to him what each project was about, the goals of the specific tasks assigned to me, and the structure of each section of the code as I worked within them.
Yesterday we dived right into the deep end of test-driven development with Cucumber and RSpec. We started building a Rubygem version of the game Mastermind. This move definitely overwhelmed us both, so we each took a longer break after the lesson. I decided it would be better for the concepts to roll around in the back of his mind, so I had him continue his assigned reading and paired observation for the rest of the day.
I also had Nic ‘Aitch’ take over some of the teaching in this first week. He helped Matthew with Terminal usage, Sublime Text 2 setup, configuration, plugins, and keyboard shortcuts. It’s good for an apprentice to spend time with other people besides his primary mentor. Also, Aitch will be called upon for Front-End Development lessons, so it’s important that I introduced them to the relationship early on.
Matthew is an avid chess player and advocate. So at yesterday’s end, I invited him to teach me some more advanced techniques and strategy. Reversing the role of teacher and student helped us gain insight into each others’ perspectives as we go through this program together. We’ll definitely keep playing regularly, and, in fact, it’s gotten the rest of the Neoteric team interested. So, I’ll be adjusting Matthew’s schedule to include optional chess lessons for anyone who wants one.
Today, we got right back into Cucumber and RSpec on our Mastermind game. I can tell that giving Matthew the day off to let his lesson soak in was the right choice. We were both able to come back to it with refreshed brains and we finished some of the most difficult concepts of the game’s logic. I also showed him examples of how and when to refactor the code’s design. For the rest of the day, I asked him to complete the logic of a codemaker providing feedback to the codebreaker about their guesses.
At the end of the day, he showed me a completed Feedback class. He asked me to review and provide critiques, and I showed him how I would break the methods apart and rename variables and methods to improve their expressiveness. Other than a few things here and there, I thought the code he wrote without my help was on target.
This weekend, I’ve assigned him the homework of reading about Cucumber (I believe the book can introduce him to it better than I can) and another book on the general practices and mindset of an agile developer. I have complete confidence in him. Thanks for a smooth and fun week, Matthew!
Have a comment or question? Send us a note. It won't be shown here and email isn't required, unless you'd like a