Launch School in review: Backend Courses Part 1

Olly Chadwick
7 min readOct 7, 2019

--

I’ve been reviewing the Launchschool courses having completed the core curriculum (see here for a general overview). For more context, you can read this article on what I did after finishing the Launch School core curriculum.

In this post I’m going to go through the first three courses in the backend section.

  • RB101 — Programming Foundations
  • RB120 — Object Oriented Programming
  • RB 130 — Ruby Foundations: More Topics

RB101 — Programming Foundations

“As we go through these programs, we’ll point out important learning concepts like variable scope, method scope, and using blocks. After this course, you should have a good grasp of how to write programs and think in an imperative, step-by-step, logical fashion. You will also learn to debug and trap tricky bugs, and learn to develop a temperament for debugging.” — RB101 Summary

As the first part of the Launch School’s paid curriculum, this course is designed to teach you the basics of coding with Ruby.

The Launchschool pedagogy is based on the idea that it doesn’t make much difference what programming language you learn when you start, as you’re learning ‘the things that don’t change’. I was reminded of the truth of this in reviewing RB101. I haven’t used Ruby for the last 18 months, but the material here still all felt very familiar. Understanding how to approach problems is to a large extent language agnostic, and I’ve never stopped using what I learnt in RB101.

Getting back into Ruby after JavaScript

When I started back over this course, I realised that my Ruby skills were extremely rusty. I hadn’t used Ruby since I completed RB170 nearly 18 months ago! Launchschool does advise that students keep up their Ruby proficiency by regularly reviewing the earlier material, and working through coding challenges. I hadn’t done this, and it showed. This post from a Launchschool student sets out some best practice on this (which I definitely didn’t follow).

When I started learning JavaScript in course JS210, I hadn’t liked it at all. There were none of the convenient methods I had come to love (how I missed Array#uniq! how I longed for the Range class!) and the code looked messy (so many brackets!) But now, coming back to Ruby, I realised that JavaScript had fully taken over my brain, and I had forgotten a lot of Ruby.

This was a little embarrassing. My CV says that I have just finished an online school that specialises in Ruby, but I’m pretty rusty in it. This isn’t something I spend a lot time worrying about. If I need to learn Ruby, I’m very confident I could pick it up again quickly (using ‘Just In Time’ learning).

Comparing Ruby and JavaScript

When I learnt the syntax of JavaScript in course JS210 (Computational Thinking and JavaScript Programming), I found myself constantly making comparisons with Ruby, thinking how strange this new language was. Now I was going through that process in reverse, with Ruby seeming strange. For example, it surprised me that in Ruby variables defined in an outer scope aren’t accessible in a function scope (the only way to pass a variable into a method definition in Ruby is to pass it in as an argument).

How much did I enjoy the course first time around?

I really enjoyed RB101. Solving problems with code is my favourite part of coding. This course is all about teaching you how to do that in Ruby, which is a really nice language. Considering only the popcorn-munching joy of the experience of taking the course (rather than how useful/hard it might be), I would give it:

Enjoyment Factor: ⭐️ ⭐️ ⭐️ ⭐️ ⭐️

What was the assessment like?

The assessment for the course comprised two parts: one written and one live coding interview. I was fairly bruised by the written part. I’ve got a literature degree, and have done a lot of writing over the years. I was pretty sure that my writing skills were better than my coding skills. When I got the grade back though, I was picked up on the sloppiness of my language. It was a pass, but only just! This really drove home to me the high standards of language precision that Launch School requires from its students. It’s a lesson that I’ve never forgotten.

I did a lot of prep for the video interview. When it came to the assessment I really enjoyed explaining my thought processes to the interviewer, being extra careful not to miss anything or make any assumptions. It felt like a high-wire act. It was nerve wracking, as I’d never done anything like it before, but it went fine.

RB 120 — Object Oriented Programming

“Object oriented programming is at the heart of Ruby, and in this course we’ll work on demystifying OOP and how to code in an OO fashion. We’ll cover topics such as inheritance and encapsulation and get at the core of what Ruby programming is about. You’ll be challenged to debug and design several non-trivial OO programs.” — RB 120 Summary

In my head, RB101 and RB120 are pretty much the same course. They both exist in the lovely walled garden of solving problems in Ruby, before any of the grim reality of developing software in the real-world kicks in the form of HTTP, databases, package managers and CSS.

This is the first course where we start creating larger programs, such as the object-oriented tic-tac-toe and have to start considering tricky things like data structures.

Going in depth into a language

A lot of RB120 was going more in depth into Ruby. Being able to quickly learn a language to depth is a key part of being a software developer. I am currently learning Python, and having learnt two scripting languages in Launch School, I definitely think I’m learning it quicker than I otherwise would. This is mainly because I know what features to look out for. I know to ask questions like: how does variable scoping work in Python? Are variables pass-by-reference or by pass-by-value in Python? Learning a third language, I am also more comfortable with the idea that different languages do things differently. When I was learning my second language (JavaScript) my brain initially rejected quite a lot what was being told, simply because it wasn’t how things worked in Ruby.

For me this shows how taking the time to master Ruby can be useful even if you never end up using it professionally.

Object Oriented Ruby

Reading back through the RB120 material made me think a lot about the OOP concepts that we studied in JS225 (Object Oriented JavaScript).

I still haven’t written a lot of backend applications, so haven’t created many programmes that use classes. The most complicated programmes I’ve written involve JavaScript logic that runs in the browser. And these haven’t involved a lot of object-oriented principles like classes.

I think this was an area where I would have benefited from some more circular learning. For example, if I had built my own object-oriented Ruby programme at some point while working through the frontend part of the course, these principles would be more secure in my mind now.

Object Oriented Ruby vs Object Oriented JavaScript

While going RB120 I realised how much easier object-oriented programming is in Ruby than in JavaScript. A lot of the mental struggle of JS225 (Object Oriented Javascript) is about understanding the bizarre ways in which JS attempts to implement class-based structures. Going through this again in Ruby was like drifting gently through a spa pool, having trudged through the cold swamp of object-oriented JavaScript.

How much did I enjoy the course?

I had heard a lot about object-oriented programming before this course, so I was really excited to finally get into it. It felt like I was learning something very advanced and important. Plus, I still got to do a lot of fun problem solving. I’m going to give it:

Enjoyment Factor: ⭐️ ⭐️ ⭐️ ⭐️

What was the assessment like?

Very similar to the assessment for RB101: there was a written and interview part of the assessment. I remember being very pressed for time on the written part, but it went fine overall. For the interview, despite a positive experience in the RB101 assessment, I was a bit nervous about being asked to explain some of the more technical concepts. With hindsight, I actually think I over-prepared for the assessment, and probably could have taken it a bit sooner than I did.

130: Ruby Foundations: More Topics

“This course will cover some language specific aspects of the Ruby programming language. We’ll specifically look at blocks and the Minitest testing library.” — RB130 Summary

RB130 is definitely one of the shorter courses, and focused on the ‘plumbing’ of application development. This is probably no-one’s favourite course.

Before I reviewed RB130 I had written it off as a lot of stuff I hadn’t used since learning it. However, reviewing it, I realised that while I haven’t used RubyGems (a Ruby package manager) or Minitest (a Ruby testing framework) much since, I have used npm (a JavaScript package manager) and Jest (a JavaScript testing framework). Undoubtedly these were easier to learn because I had a good understanding of the point of these tools.

While it may not be the most exciting part of the programme, we really need to learn about these tools to be able to put everything together to develop the fully functioning web applications that we go on to build in RB170 and RB180.

How much did I enjoy the course?

Reviewing my feedback that I submitted to the course, I said at the time: “Found it a bit boring compared to some of the other courses”. Alas, the days of focusing on Ruby coding challenges were behind me. I give it:

Enjoyment Factor: ⭐️ ⭐️ ⭐️

What was the assessment like?

This was the first assessment without a video interview (I was rather sad to learn that there aren’t any more of these until the frontend courses). Instead it was a 4-hour exam. I used every last minute of these 4 hours, and was under a lot of time pressure.

Next Steps

Click here to read the next entry in this blog series about the Launchschool curriculum, where I cover the second half of the backend courses.

--

--