The First Step: Setting Out on the Road to Mastery

John-Alvin Ambalong
Launch School
Published in
10 min readJan 7, 2023

Nearing the completion of Course RB101 in Launch School, I thought to share my experience, and this first course has been quite a learning experience. Coming into Launch School, I knew that my lack of knowledge and experience in programming (which was nil) would give me a sense of doubt about whether I could comprehend and grasp the learning material. However, that also meant that it was only because I am new to programming and all that was left is to start learning. So, how difficult could it be?

Before Launch School, I already adopted a growth mindset to many things in my life. No matter what subject, passion, or practice I come across, what I believed is it’s always possible to become good at it. Some may take more time than others, but with enough focus and effort, it is truly possible. Thus with my eyes set on becoming a software engineer, Launch School resonated with me and I dove right in starting with their preparatory courses. There were a few struggles, but essentially I followed the material, coded alongside, and completed all the exercises. Long before I realized it, I’d finished the preparatory courses and found myself wanting to learn more!

Let’s dive into RB101

Starting RB101 was fun and exciting! Equipped with the desire to learn more and a new day to begin studying, I dove straight into the material each day. Learning new concepts was fun for me and the material was written very well, easily digestible, and in-depth. I easily put in about 7-8 hours of studying (with breaks) each day learning, I was just engrossed in the excitement of getting to learn more of the basics of Ruby and programming, from reading documentation to debugging to precedence to variable scopes to a problem-solving process that was a game-changer. And soon I was making small programs that had functioning logic and can be run on the terminal! It was fun adding more features to the basic programs I’ve made, it felt good to come up with a solution as to how I’m going to implement a feature and with some debugging have it working.

Then as I proceeded to Lesson 3 and looked at all the practice problems, I knew that to better integrate the concepts I’ve learned I would need to put in the time to do some practice. So I went through the practice problems one by one applying what I’ve learned so far and did my best to answer these or have a working solution. If there were any points I felt I was stuck I went back to previous lessons and if my solution were wrong I would take a look at Launch School’s solution, and study why and how it works like so to get a better understanding of it.

Afterward, I then started the basics of Ruby collections. Being introduced to PEDAC at this point was a game-changer! It allowed me to start breaking down any code problems I came across in a higher-level domain and end up with an algorithm or set of steps to solve the problem in front of me, and all that was left was to translate these steps to Ruby syntax. It always surprised me at the end looking at the solution… “did I really just do all of that?” I mean I have a working solution, I have passed the tests given and thought of, and I can even visualize possible refactoring to make the code more succinct, but most importantly it works! And so I’ve adopted this problem-solving process as often as I could to get more accustomed to the process.

Further, into the lessons, Ruby collections gave me a better understanding of the differences between iteration, selection, and transformation of collections. At first, I only had an awareness that these methods existed and I used them without fully understanding deeply why these work the way they do, how these work themselves and with blocks, and what these methods return. So with that new understanding, I became more aware of the decisions I make in deciding which of Ruby’s #each, #select, and #map methods I should use to achieve what I wanted to do!

Practice Practice Practice

At the Summary portion of Lesson 4, there was a reminder to complete RB101–109 exercises, so I took a detour and started working on the tons of exercises available. The funny thing about growing up playing competitive e-sports games is it taught me that skills are acquired through learning, then practice, and repetition, these accumulated over time, and before I knew it I was seeing the fruits of my training. So I went through the exercises equipped with a better understanding and PEDAC, solving each problem one by one.

The reason I say PEDAC is a game-changer is that as I did these exercises I came across a lot of problems that seemed quite complicated to just hack and slash my way through coding a working solution (this is what I experienced back in Ruby Basics during preparatory courses) but with PEDAC any problem didn’t feel as complicated. Sure I can say some problems felt too difficult or confusing at first, but going through it with PEDAC even if I couldn’t come up with the same solution as Launch School or as beautiful of a code as some, what I felt was important was I was able to come up with a working solution!

“This works! It passes all the tests!” I rejoice, every time I look at my code editor filled with comments going through it with PEDAC and only a sliver of highlighted code syntax. So far I’ve completed 80/141 of the exercises but I was feeling I needed a bit of change since I’ve been working through only these exercises for the week, so I decided to go continue with the lessons.

So how am I fairing?

Learning further about debugging with pry was great. It added a new tool to my repertoire and allowed me to debug the next two programs, Tic-Tac-Toe and Twenty-One, a bit more systematically. A surprise for me was after creating Tic-Tac-Toe and its bonus features, looking at the assignment to create Twenty-One and not seeing a walkthrough video, I wasn’t scared at all. The rules and features were laid out, all I had to do was translate these into a working program, and I did just that! I laughed after I marked it complete and saw that Launch School does have a possible solution on the next page (I didn’t notice it at first in the Lesson’s topic list). I felt good I was able to create Twenty-One from the start and used Launch School’s solution to get a better understanding of their logistics and possible refactors to my code. I then proceeded to add the bonus features afterward just before I started writing this blog post.

Photo by Luis Llerena | Unsplash

My Overall Tips in Learning :

Stay in Focus & Avoid Distractions

For me to stay focused while studying, I naturally only have related things within my vicinity. I sit on my computer, play my Study Lo-Fi playlist, open up VSCode (the editor I use), open Launch School and Documentation websites, have everything else closed, and clock in my Toggl to track time. I avoid having YouTube, Discord, or anything else within my view as having these up within my peripheral vision can distract my attention whenever I feel any ‘discomfort’ during the study. By ‘discomfort’ I mean times when I feel I don’t want to study anymore and want to do something else ‘more enjoyable or sweet’ (my brain telling me). I enjoy studying, but when I’m honed in on a problem or material that I’m struggling with and finding not as enjoyable, this ‘discomfort’ starts to creep in leading me to find something ‘more enjoyable or sweet’ like distractions… No! I instead look at how much time has passed, pause my Toggl, get up from my chair, take a needed short break, and walk around the house before I sit down and continue my focus.

Essentially, focusing can be hard, and getting distracted can be easy. And too many distractions can lead to less studying. To focus one should set up their environment and habits for success, making it difficult to be distracted in the first place. I don’t do much social media, YouTube, or video games (during my study days). Instead, I get distracted by wanting to learn something else, hence I believe it’s very helpful to set the time, the environment, and focus for the duration in advance so one can adhere to these and efficiently be productive. How that works for you is ultimately what you will figure out as you go through your journey, the earlier the better.

Consistency and Schedule

Having a set schedule is important as well to avoid procrastination, I hear myself at times, “I will start in 30 mins” or “I can push it back for an hour and just study an hour longer later… maybe”. All of these add up and over a week, a month, or a year, a lot of hours that could’ve been spent learning could ultimately be instead spent on avoiding learning. I think setting a schedule whether it be 2–3 hours a day, Monday to Friday, mornings or evenings, or a mix of these help tremendously in the long run. We are not sprinting from the start to finish, it is a marathon, a long endeavor, and thus having a schedule ready helps us get into learning the material.

“Now that I’ve started, how will I stick to it?” That is called staying consistent. By having a set schedule to work through the material, I’ve been able to consistently make progress and log in my desired hours for the week. Together with the help of Toggl, a time-tracking app, I can consistently adhere to putting in the hours to learn the material. Seeing my hours tracked and logged easily gives me the boost to go and study the next day again. I think just knowing that on the previous day, you went and spent those hours studying (with focus) helps you take accountability for your own time and this will urge you to easily start your scheduled learning again. Now I do understand this might not have the same effect on you as it does on me, but give it a try and find out.

Avoiding Burnout

Studying for 7–8 hours each day is a TON of hours for most people, and it is for me as well. However, this is not a necessary amount nor is required to go through the material. I decided that 7–8 hours was my goal each day, as this is both my passion and the only significant responsibility I currently have in my life at this moment. Thus my goal is to get ~35–40 hours of study in a week. My recommendation however is to decide how many hours you can set aside to focus on just studying. As I believe it is important to have a study time set aside in which you will avoid distractions, and give all of your focus. And certainly, different people have different habits and hours they can focus on a given task. It is up to the person to gauge and decide what they can handle and how they will make the most out of it.

What that entailed for me was to portion my study time so I can achieve ~35–40 hours in a week usually Monday to Friday and have the weekends as a complete break separate from studying. If I ever felt the urge to go study (which I often do when I’m away), I instead read articles and watch YouTube videos of game development. This way I can separate myself from the course materials and give my brain a needed rest.

Maybe you have a job during the weekdays, and only have more time during the weekend, that is fine. You can portion some of your study time into the weekend. The key takeaway here: Set time aside to completely be away and take a break so that your physical and mental can make some recovery.

Keep Healthy Habits

I’d like to add this last, as it is incredibly important for a person to stay healthy on this journey. We as aspiring software engineers spend most of our time sitting at our computer, learning, coding, and eventually for our work. This is not healthy for a human being. Thus it is crucial not only for our well-being but also for learning. Get good quality sleep for our brain and body to recover from activities yesterday. Don’t forget to eat our meals to replenish our energy for upcoming activities throughout the day. And exercise so our health and body stay strong as we go through this journey. Sitting for hours and hours coding deteriorates our bones, our posture, and overall our body. So make sure to sit up straight with good posture, stand up when you take breaks, get some exercises in as a routine, and always stay hydrated!

— — — — — — — — — — — — — — — — — —

To conclude, I’m enjoying the first course! I’d like to go back and review previous concepts for further understanding. I’m excited to complete the rest of the RB101–109 exercises. And I’m curious to see how I can improve the programs I’ve created thus far. I still have yet to decide whether to take RB109 Assessment before or after getting split into two courses, we’ll see…

My tips are based on my personal experiences and techniques. These are just guidelines and a glimpse of how I’ve dealt with certain struggles. The important takeaway is to figure out what works best for you and your situation. Happy Learning Everyone!!

--

--