Group Study for Launch School’s RB129 Assessment
Well, I’ve done it. I’ve just passed the RB129 Assessment and I’m on my way to the next course! A few people have asked me for my study methods, and while they are always evolving, I found one new technique particularly useful for the RB129 Interview: working with others.
There have been many great articles and podcasts about the benefits of getting involved in the Launch School community, so I won’t go into that here. Instead, I’ll be outlining a method of study that worked really well for me and some of the folks I’ve been studying with. Special thanks to Gagan, Michael, James, and Luke for being willing to experiment and helping to deepen my knowledge!
This works great for a group of 3–4 students, but I have done it in a pair setting as well. The idea is to try and come at a problem sideways, by quickly building an exercise yourself.
Step One: check in with your group (or partner) and make sure everyone is on the same page. Paste the main points of the course or study guide into whatever environment you are sharing (such as a Replit or CoderPad). Ensure that there isn’t a specific concept that anyone is unclear on.
Step Two: Take a 10–15 minute video “pause” (we just muted ourselves while we worked). It’s best, I find, if someone times this so no one gets lost in the weeds. Within the given time frame, see if you can come up with a problem, along with a solution, having to do with one of the listed concepts.
This forces you to either (a) quickly make up an example of something and then find a way to break it, or (b) set up a challenge for yourself and see if you can implement it. Having to approach the ideas in the course “backward” in this way can often lead to noticing common bugs, a deeper understanding of where that concept is coming from, or playing around with code in a way that reveals something you didn’t know before. It’s also a lot of fun!
Step Three: Everyone in the group should present their problem to another group member. That person then has an opportunity to solve the problem.
Step Four: Once the person in the “hot seat” has come to a working solution, discuss the problem with your peers. Ask why this or that solution works. Did anyone else think about solving this in a different way? What are the pros and cons of each solution?
You can also test the limits of the code; what if you applied another layer? What would happen then? This can be done by either trying to break the solution again or just trying something out you haven’t seen done before. Have everyone go around in turn and see if they can contribute in this way.
At the end of the day, structuring our sessions like this resulted in some fantastic “a-ha” moments, as well as making some long study sessions seem shorter. Time flies when you are having fun!
Here is an example of a problem that I came up with during one of these sessions.
For this problem, first I reviewed the concepts in the study guide and found a couple I thought would be interesting to explore. Here, we are looking at collaborator objects, equivalence, and method overriding.
I wanted to implement a really generic collection class (DataBase) that would be able to display information about its members regardless of what they are. In this example, I chose to create a class called Student, but really it could have been anything.
The expressions on lines 20 and 21 deal with equivalence. The return values tell us that we should define an == method that can be called on a Student object. It will return false when the id number of the calling Student object and the Student object passed as an argument do not match, and true if they do.
Next, we instantiate a new DataBase object, then add the three Student objects to it. This shows that we need to implement a << method for DataBase. Line 27 tells us that this method should have a guard clause: if there is an object within the collection that has the same values, even if it is not the same object in memory, the program should display a message and not add the object to the collection.
Finally, we need a way to display the objects in the collection. This should output both the class and some sort of string representation of the object in question. This means we need to define a custom to_s method for the items within our collection, overriding the default implementation.
Here is one possible solution:
If you’d like to see more of the problems we created, you can check them out here.
Now that you know how it’s done, you can go out with study buddies and create your own!