Reflections on my Journey and Launch School After Course 101
I have always been a slightly restless person. I have always felt like there was a new adventure to be had, a new skill to be learned, a new problem to be solved. While in university, my restlessness was quite evident. In the 4 years, I was in college, I switched my major five times, transferred to a new school and transferred back to my old school. I eventually decided to study economics. My decision to study economics was not necessarily due to my interest in markets and the overall economy, but more due to the fact that an economics degree was difficult to obtain. I wanted to experience the rush of learning new material. A lot of people experience a rush from activities such as skydiving, parasailing or things of that nature. Don’t get me wrong, I love a good adrenaline rush, but for me, nothing is like the rush of new knowledge and those “ah-ha” moments. I want to be challenged and studying economics did this, it pushed me to my limits at points. My final year of college, I spent six months, including my entire Christmas break, working on an econometric research paper. I loved everything about that project. It pushed me and grew me unlike any other academic endeavor has. Eventually, though, I finished and presented the research bringing an end to that challenge and to university. I, like most, moved on from university to the professional world.
In my professional career, I have loved the companies that I have worked for. They have been amazingly supportive and great places to grow. I, however, have not been able to obtain any of those knowledge rushes that I so badly crave. I don’t know why or when, but at some point, I hatched the idea that the career that would satisfy my craving was software engineering. So, I started doing research on how to become a software engineer online. As I am sure you are well aware, a simple Google search returns, what seems like an infinite amount of online courses, bootcamps, and blogs that promise to turn you into a top tier software developer. After those first searches, I remember thinking to myself, “Awesome. All I need is like 3 months and I can become a professional developer.” Initially, I weighed two options, do a bootcamp or self-learn using online resources. I really wanted to enroll in a bootcamp but eventually came to the conclusion to go the self-learning route as didn’t have $15,000+ at my disposal.
So, I started learning online. I did courses on all your big platforms. I would fly through the course, “learning” the basic syntax of whatever language the course used. At the time I thought I was learning a plethora of information, but in reality, I learned very little. I didn’t learn two very important things: how to program with a purpose or how to problem solve. My “learning” fell into a nice predictable pattern: go to a new website or book, find a few courses/exercises, complete the courses/exercises, evaluate what I had learned, restart. After half a year of this pattern, I finally decided, software engineering isn’t all that interesting. I stopped spending my free time attempting to learn something that was obviously not that fascinating. I continued on with my life and didn’t think about software engineering for quite some time.
I really love podcasts. Instead of binge-watching TV, I binge listen to podcasts. My personal favorites are true crime podcasts (think Serial or Casefile)and podcasts that tell great stories (think Myths and Legends or Fictional). One day, I was searching for a new podcast to binge and accidentally clicked on the Technology podcast category. At the time, the Learning to Code With Me podcast was near the top. It sounded interesting, so I played the first episode. The first episode was enjoyable, so I listened to a few more. I remember walking my dog and listening to an episode where the host was interviewing a guy named Chris Lee. On the podcast he and the host talked about why learning the fundamentals to mastery was important. This concept really resonated with me.
I played soccer growing up and my coach used to always say something along the lines of, “Perfect the simple things and the rest will come easy.” So, instead of learning the fancy flicks and tricks, I focused on my passing, my first touch, and positioning; the fundamentals. While I did not go professional, I think focusing a large portion of my time doing the fundamentals well, made me a better overall player. To better illustrate my coaches point, one of my all-time favorite soccer players is Andrea Pirlo. Not only is he the definition of class and elegance, but he is also the perfect example of someone who mastered the fundamentals. Pirlo was not known for doing fancy step-overs and tricks to beat players. When you think of Pirlo, you think of someone who could pass a ball 100 yards and hit the dime you placed on the ground. He made an incredibly successful career out of doing the simple things well.
Listening to Chris talk on the LTCWM podcast, everything he was saying seemed to match my beliefs; the belief that to have a successful and lasting career you must master the fundamentals. After listening to Chris talk, the itch to learn software engineering had been reignited. I quickly went to my computer and looked up Launch School, the multi-year program for studious beginners to launch a lasting career in software engineering that Chris has created. For the next two days, I spent hours researching Launch School. I was amazed at how explicit they were about their pedagogy, objectives, and the difficulty of their courses. It was strange to have a business being so open about what they stand for. They even have a web page called “Is This Program for Me?” that can give you a pretty good understanding of if the program is a good fit for you. I am not going to dive into their pedagogy and beliefs because they can much better articulate them on their website.
After reading all of the material on their website, I decided I would sign up for their prep course. It was free after all, so the only thing I was losing was my time. The prep course begins with them reiterating who the course is for and how to succeed in their program. The first half of the prep course was quite simple, just like all the other courses I had done. The main difference was their emphasis on what it takes to succeed and built a lasting career in software development. Even from the early stages, it was evident that they weren’t kidding about this whole learning a topic to mastery thing.
I completed their prep course in about 2.5 months. I immediately realized that you do not create a lasting and successful career in software engineering in 3 months like all those bootcamps promise. I took my time and went quite slowly. I made sure that I understood the topics. Launch School had begun ingraining in me that it isn’t enough just be exposed to fundamental topics, you must have a deep understanding of them. To say I loved the prep course would be an understatement. Launch School had provided me with exactly what I was looking for when I initially set out to learn software engineering. I finally experienced that knowledge rush that I was craving. So after I completed the free prep course I decided not to do the paid courses.
Yep, I chose not to continue learning with Launch School. It wasn’t that I didn’t plan to eventually do the Core Curriculum at Launch School, but I was getting married in a month and I wanted to focus my time and energy on the wedding and spending the rest of a really special period of life with my now wife. So, I decided to put my Launch School studies on hold.
In July, I decided that I was ready to commit myself to Launch School. So I re-did the prep course and this time when I finished, I immediately got out my wallet and signed up for the paid Core Curriculum of Launch School. After almost 200 hours of work, today, I am just finishing up the final lesson of the first course, 101 Programming Foundations. In fact, to start a blog is one of the last assignments.
Course 101 has been everything I expected from Launch School. The thing I most enjoyed about this course was the layout. You begin the course by making two pretty basic programs: a loan calculator and an extended rock, paper, scissors game. The middle section of the course deepens your knowledge of the fundamentals of Ruby. You explore PEDAC and how to break apart problems, you learn if Ruby is pass-by-reference or pass-by-value, you learn about variable scoping and variable shadowing, you gain a deep understanding of methods and how to break down a problem, you are taught to understand every letter in each line of code, and much more. The course is then rounded off by asking you to make two larger programs. While writing the code to the final large problem, I wanted to define a method to validate user input. I remembered doing something similar in the rock, paper scissor exercise from earlier in the course, so I pulled up that code. Even just skimming over the code, I could see how far I had come. There were methods that I remember struggling through that now made perfect sense to me and there were portions of code that I immediately saw could be refactored and cleaned up. Opening up the code for that program gave me the chance to see how much I had grown over this course.
In the Japanese language, there is a word for continuous improvement, kaizen. Being able to reflect on those first programs I wrote allowed me to see my improvement and what Launch School has taught me. I am about to enter course 109, which tests (yes, Launch School has tests!) you on the material you learned in 101. I am still early on in my Launch School journey, but I can confidently say that Launch School is teaching me the two things that every other program was missing: how to program with a purpose and how to problem solve.
Enrolling in Launch School is one of the best choices I have made. If you want to learn more about Launch School, you can find their website here.