This week I started Tealeaf Academy’s Introduction to Ruby & Web Development course, and so far it’s been a great experience. Having decided to learn Ruby a few months ago I’d been contemplating signing up with Tealeaf for a while given the apparent breadth and depth of the curriculum (they run three courses intended to get you to an intermediate level) and the overwhelmingly positive reviews I’d read online. My only hesitation was due to the cost (the first course runs to $475, doing all three courses sets you back $2,500) but if the quality of the material in the first week is any guide it will be money well spent.
I’ll update this post each week as I progress through the course. You can take a look at my code from the projects I’ve completed in the course on Github.
As you’d expect, the first few exercises covered setting up your development environment, pushing to Github, and Ruby style conventions. Having completed Pragmatic Studio’s Ruby Programming course (which I strongly recommend) this was all familiar to me so I was able to breeze through it and get into the more interesting stuff.
Throughout the week we built a few simple, procedural Ruby apps including a calculator and Tic, Tac, Toe & Blackjack games (the focus of the second week of the course is refactoring the Blackjack game using an object-oriented approach). In addition to the set assignments there are a number of optional exercises and I definitely recommend doing all of these and posting your code on the discussion board for other students (and the TAs) to review. It’s the approach I took and it has helped me feel a lot more confident writing code, as well as eliminate any bad habits early on. I’m already really impressed by the level of support and interaction from the Tealeaf team, and depth of the course materials.
Week 2 was all about getting familiar with OOP concepts and getting a lot more practice reading and understanding Ruby code in preparation for jumping into Rails in the second course. One of the assignments has you reading and completing the exercises in Tealeaf’s own Object Oriented Programming with Ruby book and while I’d completed a couple of Ruby courses prior to starting with Tealeaf, this definitely helped improve my understanding of the OO methodology.
If you’re brand-new to programming, it would be easy to feel overwhelmed in this second lesson. I got close to that point a couple of times but overcame it by taking a break when I felt I was starting to tune out, but also by relying on the solution videos and reviewing the sample code when necessary. This felt a little like I was taking the easy way out but the instructor makes a point of encouraging you to use these if you need to. Reassuringly, it’s reinforced a couple of times that the goal of this second week is not to have you become an OOP master, as that’s simply not possible in such a short timeframe. Rather, as long as you’re able to read and broadly understand code written using the OO methodology you’re ready to move onto the next lesson.
The last two weeks of the course covered HTTP and and the “stateless” nature of the protocol, learning how to process requests and responses, some basic web development concepts and deploying the procedural Blackjack game to the web using Sinatra and Heroku. It’s ultra-basic but you can take a look at the finished product here, or if you want to dig deeper my code is on Github.
I was already comfortable with the web development side of things but I found learning more about HTTP really interesting. I’ve been using the web for a long time but I’ve never really thought too much about how it works, I’ve just taken it for granted that it does. It was cool to get an understanding of the statelessness of the HTTP protocol and how to simulate “statefulness”. The Blackjack app uses sessions to persist the player and dealer’s hands across requests and in week 4 AJAX is added to prevent the whole page having to reload everytime a new action is performed (like when a new card is dealt when you choose to “hit”).
Part of week 3 involves reading Tealeaf’s Introduction to HTTP book on their Open Bookshelf and it’s really worth reading if you want to learn more about the protocol, regardless of whether of not you’re doing the course.
Before I started this course I had tossed up skipping it and starting with Tealeaf’s second course (Rapid Prototyping with Ruby on Rails) as I already had some familiarity with Ruby and I wanted to get stuck into building “real” projects using Rails that I could have live on the web. Having now finished the course it was definitely worth doing as I’ve picked up extra knowledge that I didn’t get from some of the other Ruby courses I’ve completed.
Next up is Tealeaf’s second course. I’m looking forward to finally getting stuck into Rails and I’ll cover the key concepts as I learn them in a future post.