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.
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:
How I Prepared the Written Assessment Part
- 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.
- 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.
- 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.
- 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.
- 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.)
- 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.
- 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.
- 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.
- 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.
How I Prepared the Interview Part
- 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.
- 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.
- 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.
- 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.
- 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.