My Slow Path to Mastery
Since May of 2022, I have been completely devoted to Launch School and its mastery-based curriculum. Along the way, I have deferred to the experience and expertise of other students and graduates who have taken the same journey that I am taking, and they all say the same thing: trust the process and follow the path. That being said, I am by nature a skeptical person, and there have been times where I have questioned the path that I am on, and wondered if I was truly on the right path. Moreover, could this “too good to be true” software engineering school really get me from where I was to where I wanted to be? I am writing this article because now, in the final course of Launch School’s core curriculum, I have a definitive answer to this question. Yes, this is an amazing path, and as others before me have said with the gift of hindsight, there’s a good reason for everything we learn.
I wanted to write this article for people like me who may at times, feel lost, unsure, or “lost in the woods” as they proceed through Launch School. I want you to know exactly what my perspective is, and why I personally have come to believe in the extraordinary value of the Launch School core curriculum. Now that I also have the gift of hindsight, I want to specifically list some lessons, wisdom, or thoughts I have about why you are learning what you are learning, and how another path could lead you to a much darker future.
Let’s start with what actually prompted me to write this article: the DOM. The DOM is what your browser uses to display information on a webpage. The information being presented to you, right now as you read this article, is determined by the DOM. If you manipulate this structure of a webpage, you can change the webpage itself. Try it for yourself:
Press F12 on your keyboard or right click the page and click ‘inspect’ (in chrome), and then open the console.
Your browser is really just a program that interprets files like HTML for you, so you can influence how it does that. Paste the following code into the console:
let paragraphs = Array.prototype.slice.apply(document.querySelectorAll('p'));
paragraphs.map(paragraph => paragraph.style.color = 'red');
Most of the text on this page should have turned red, and you can fix this either by simply reloading the page, or replacing the word ‘red’ at the end with ‘black’. This is a cute trick, but there are some pretty serious lessons here.
First, it would be an easy trap to follow some tutorials and learn how to do this kind of thing. I have met a lot of self-taught or bootcamp grads who basically learn more-intense versions of exactly that — memorize some frameworks, get a basic idea of how the thing works, and go off in the world. In my opinion, this is a trap that you’re setting for yourself. Learning to ‘do’ some things without really having an appreciation for how they work, how to figure them out yourself, or what is really happening under the hood is setting yourself up to run into a giant brick wall — a giant chasm filled with misunderstanding or a lack of understanding. Only through long-painstaking months of work, practice, questioning, and collaboration am I now at a point where writing something like the code above, and completely understanding why it works, how to do it, other ideas for things to do, and how it fits into greater codebases is relatively simple. If I had followed a different path, I’m not so sure how long it would have taken me to get to that point.
Second, every fundamental concept, principle, and lesson I’ve learned in Launch School has prepared me for this. Learning the fundamentals of software development, problem-solving, data manipulation, and computer science have allowed me not to only understand what I am doing, but why it is necessary and what the next steps are. I feel confident that after Launch School’s Core curriculum that I will be prepared to tackle any programming challenge I may face because I have such a strong grasp of the fundamentals. When I was in the object-oriented ruby course months ago, I didn’t fully appreciate how the concepts of object-oriented programming would be completely essential to my ability to create, manipulate or understand web applications. How could I? But without that stepping stone, I might be really struggling with the concepts I need right now in my learning. Concepts like closures, or understanding why I have to transform the HTMLCollection that the querySelector method returns into an array, or how execution context fits in to all of this or even matters. All of these concepts I feel prepared to grasp and capable of grasping because of what came before this. I also feel confident that I can learn other technologies based on these topics.
Third and finally, I feel completely prepared to tackle the future. As part of Launch School, I decided to participate in a seminar to learn the Elixir programming language (though I should really say tour the language after having the wisdom to know how much I don’t know). Elixir is a super weird language with a lot of quirks, interesting syntax, and interesting applications. However, because of what I have learned at Launch School, I feel completely prepared to tackle this entirely new technology, and understand what questions to ask about its inner-workings, how to find the information I need, and what to do with that information once I get it. It’s exciting to feel prepared to tackle new challenges and know “I can figure this out” because of the lessons and understanding I’ve gained through Launch School. Every day now I get excited for the next cool thing I get to learn!
But it wasn’t always that way! Again, I have the gift of hindsight. If you are reading this out of curiosity about Launch School or unsure about what the future might bring to you in Launch School, I hope you’ve come away with some perspective. I can’t fully impart upon you all of the understanding that perspective brings, but I hope this article was helpful to you and gives you the motivation you need to keep going, or get started in the first place.