Well Done
So I’ve officially survived my first week of the Viking Code School! I’ve made more progress in the past week than I could have in a month on my own. Of course I knew coming into this that this was the idea, but understanding something conceptually and then actually experiencing is of course very different. In other words, I’ve had a blast this past week. Let me give you a recap.
We started off the week with the “Object-Oriented Ruby” Unit. We dove into classes, instance variables and methods, and then class variables and their methods to drive home the fundamentals that we’d already introduced ourselves to in the prep work. From there we looked at the differences between classes and modules, covered inheritance, scope and privacy and then applied it all to a tic-tac-toe project. The TicTacToe project was interesting for a few reasons. One was that it was our first time pair programming! This has definitely been interesting, as most of us have never coded with anyone else before. I like pair programming because it gives you a chance to pick up all of the little tips and tricks your partner might have found that you haven’t and vice versa. It also gives you a good opportunity to converse about code which should prove to be a handy skill come interview time. So we finished our TicTacToe projects and then reported back in at the end of our first day to our first SCRUM meeting. We were given the opportunity to ask any questions whether on a micro or macro scale and Erik and the TA’s would help us refine our mental models to more evenly match best practices.
The next couple of days we built on our Ruby/OOP foundations by working on command line versions of the Mastermind and Connect Four board games. These did a good job of driving home concepts like DRY (Don’t Repeat Yourself) and SOLID.
After covering the basics of Ruby we topped the week off with an introduction to Rspec and TDD (Test Driven Development.) Up until then I had only dabbled in Rspec mostly because it seemed yucky, so imagine my surprise when I realized just how damned useful it could be! Tests force you to think through your code and ultimately make you produce cleaner code since the tests are hard to write otherwise.
I should probably tell you how an average day is structured for you to get a picture of just how packed they are. We start off with a SCRUM meeting at 11am EST to discuss the previous night’s reading and what we’ll be covering on the given day. From there we pair up, and set out to complete the assignments. Typically we will first practice the new concept we read about the night before and then we’ll move on to a more challenging project to really drive the concepts home. So we do this until lunch time around 3pm EST when we break for an hour. Then we come right back, do a code review where we discuss what we’ve accomplished so far and any questions there might be. We immediately jump back into pair programming for another few hours until our final SCRUM meeting at 8pm EST. I think all in all that comes out to about seven hours programming. And of course we are then assigned more reading to cover before the next day.
Jumping in on Tuesday, I definitely felt a shock, like jumping into a cold pool. Like, “Oh, so this is what I’ll be doing for the next four months.” Which don’t get me wrong, I’m completely thrilled. But the first couple of days require a bit of adjustment. That said, I couldn’t be more excited. Like I said, I’ve learned more in this past week than I have in the entire previous month studying on my own. It really comes down to the fact that you have people there to point you in the right direction when you get lost, to point out your bad habits before they take root and to cheer you on while you do it! It’s great. And then of course having other students to work with is encouraging because they all have issues setting up RVM or whatever too, so I know I’m not the only one!
Of course, just because I’ve got VCS occupying much of my time doesn’t mean I’ve completely slacked off during my off hours. As a matter of fact, Vishal(one of my cohort members) and I have been exploring all sorts of interesting topics during the mornings before our first SCRUM meeting kicks off. Our main focus has been on algorithms, but we also discuss books about OOP, design or whatever we happen to be interested in at the moment. I find myself looking forward to the next time I get to nerd out about VIM technique and CompSci philosophy with him.
So, yeah! This past week has been a whirlwind of information. I can see where the “drinking from a firehose” metaphor comes from. The course is designed in such a way that you don’t pick everything up on your first introduction to it, but it sees that your are repeatedly introduced to topics insuring that they sink in, all the while introducting something else for you to start learning about. On Friday, Erik asked us to give our “temperature” or how we were feeling so far. On my turn, I pronounced that I was “well done” or in other words, feeling great but also totally fried after such a packed week of learning!