Recap on JS129 Assessment Preparation

Photo by Kees Streefkerk on Unsplash

I recently passed JS129 assessments and would like to recap and share my experience on JS120 & JS129 of Launch School’s JavaScript track. If you are not familiar with Launch School and its mastery-based learning, you might be better off start reading this article from Chris, the founder of Launch School before continuing.

Based on the basic foundations learned from JS101, you are guided into the well-established way of thinking called Object-Oriented Programming (OOP) and get your hands on how to think and how to code OOP way in JS120. You get to understand the concepts and you get to apply those into examples. While doing that, you get to realize the benefit of OOP, especially when you try to expend your code.

In JS101 I have learned how to be comfortable at solving simple problems using JavaScript, JS120 taught me how to be comfortable at solving a bit larger problems, as you can now see such a problem as a combination of smaller problems, and you know how to manage the small problems and their relationships in much clearer and simpler way: OOP. (Note that this is not an easy feat as JavaScript implements OOP in quite a unique way, so even if you have experience with other OOP language it is not so easy.)

The good thing about Launch School is that it makes sure that you are immersed in the theory and the practice so that you feel natural and comfortable about everything you have learned in the course work by the time you are taking the assessments. Of course, it does not come free: Launch School guides you with the course work and challenges you with the assessments. How to overcome the challenge may depend on the studying habit and style of each individual, but below was how I handled the challenge:

Photo by Scott Graham on Unsplash

How I Prepared the Written Assessment Part

  1. I went through the course-work, write all the code examples in my own editor, solve all the problems along the way before I look at solutions, took all the quizzes. I did not particularly stop and go back during my first look even when some concepts are still a bit fuzzy in my head, as I knew I would revisit the course work multiple times later.
  2. Quizzes were extremely hard at this point, and my score was not good at all. Good that Launch School already indicated that this is normal. The quiz questions revealed (without mercy) that my understanding of JS OOP is still very fuzzy. Okay, but not okay. Let me try until I really get it.
  3. I went to JS129 to look for the study guide. I focused on the concepts highlighted in the study guide when I reviewed the course-work this time. Because the study-guide hinted that the assessment would be more ‘open-ended’ questions asking about certain concepts and you need to provide example codes, I decided to write exactly that in my note for each and every concept in study guide.
  4. Especially, I wanted to get a better understanding of the different ways to create objects. In my note, I started with Object Factory, writing my own thoughts and code examples on the definition, when to use, what are the advantages and disadvantages compared to other ways.
  5. I did that for OLOO, constructor & prototype, and ES6 class. While doing that, I was surprised that I still make silly mistakes like using ‘this’ in returning object of Object Factory, or confused object prototype (the internal [[prototype]] property) with function’s prototype property (.prototype of the function, which is always there but useful when the function acts as a constructor of an object.)
  6. Even during the time I retook all the problems, retook all the quizzes, and retook all the exercises until a certain point I felt more puzzled than the first time I encountered all concepts.
  7. It was I think about the third time I revisit the course material it all clicked. I think the major breakthrough for me was understanding how the prototype chaining is configured when the new keyword is at work. Then I could understand why OLOO is similar but different from the constructor-prototype pattern, and why ES6 class is just syntactic sugar and nothing more.
  8. After that, it was quite a smooth drive, as now I understand why the course material was introduced in this particular order. Some of the quiz questions I could not make sense of before also seems obvious. At this point, I decided to rewrite my notes to the markdown file to practice the written assessment formatting.
  9. Taking the exam was not so hard. At this point, I really wanted to test myself against the challenge. I think the preparation of my own example already in markdown format was quite important in saving time during the written assessment. Because of that, I could spend enough time on the last question which took some time to answer.
Photo by Ilyass SEDDOUG on Unsplash

How I Prepared the Interview Part

  1. I took the interview assessment a week after I passed the written assessment. I was kind of lucky that there was a study group right before the written test, and the study group experience gave me the real feeling of being asked to write some code on this subject. I thought I got over with the first-timer nerve by passing through JS109, but I was not.
  2. Mainly because you are asked to provide your own example. At the time of study-group, I already had all the examples in the markdown file, but when asked (to me and to other fellow students participated in the study group), it was not easy as I thought it would be, because you would need to have the process of reconstructing why you would pick up this example, and how the example illustrates the concepts that were asked. Iterating this ‘thought process’ is not easy, if you have any fuzzy part in between the start and end of the process.
  3. So during the one week from the end of the written test to the start of the interview, I practiced mainly on writing up examples. I went through the study-guide of written assessment again, and try to write up the code examples on the fly for each and every concept that study-guide said that the assessment would cover.
  4. During the interview, I was still quite nervous, especially at the beginning. I think you just have to believe that your nerve will get calm eventually. I fumbled up a bit on one question in the middle when I did not have an example prepared to explain something. It was extremely hard to come up with something on the fly, but I started with the concept itself, thought really hard about possible situations this concept would be used, made some mistakes on different trials, but ended up coming up with one working example. I feel I was lucky, and in this case, Launch School interviewer was on my side to help, not the other way around.
  5. Even if you prepared well, you cannot prepare to be perfect. I guess having just one such fumbling ending up fine would be okay. I think if I had more than one such occasion in the interview, I would surely not be able to pass the assessment.

Conclusion

Compared to the month or so ago when I just started learning how to write OOP code in JavaScript, I feel much comfortable doing that. I am still very far away from mastering OOP as that would require years of experience, but I feel I am on the right track to get there eventually, with the fundamentals to read and write many many codes in the future.