
The term “New Game+”, or, “NG+” is an option in Souls Bourne games—RPG, often open world games—created by the video game company FromSoftware that allows players to complete another play-through of the game at enhanced difficulty, but players can keep the equipment and levels they have earned in their first play-through. That would be the analogy I would use to describe my experience with learning Typescript.
Prior to learning Typescript, I have experience, or in terms of the analogy, completed some “play-throughs” of Java, C, C++, and Python. Now, for ICS 314, I have begun another new game+, another play-through, but with the knowledge of four play-throughs—Java, C, C++, python—under my belt. This new game+ seemed daunting at first, as learning a new coding language can seem scary, especially under a time constraint. However, as I moved through the freecodecamp courses and the practice WODs, the syntax and logic began to feel familiar. Mainly because a lot of the syntax and functionalities of Typescript root from Javascript, which is also very similar to Java. My first “play-through” was in Java, so logic and syntax that resembles Java catch on easier. For example, semicolons are placed at the end of lines of code, the presence of classes, objects and constructors, array and loop syntax, just to name a few.
Compared to other languages like C, and C++, Typescript is much more dynamic and easier to implement. It’s not like Python, where the syntax looks like pseudocode, but there are a multitude of functions and data structures in it that make coding a lot less of a headache. For example, implicit variables let Typescript infer what data type a certain variable should be based on its initialization. Therefore, if you forgot to declare a type for a variable, Typescript would infer the data-type and not throw an error for a non-type variable. Typescript also has neat data structures like tuples—fixed arrays with known element types. This means that the first element could be a string, then the second element could be a number.

A new and challenging concept that will be implemented in ICS 314 is athletic software engineering. It is a “high intensity, time-constrained, and often stress-inducing approach to acquiring competency with software engineering skills”, developed by Philip Johnson. In essence, we will receive a WOD—workout of the day—once a week, and solve a coding problem in an x amount of time. If the code runs and works accordingly, you score 100%. If the code does not work, or you did not finish, you get a DNF, which results in a 0%. It seems difficult, yet at the same time it excites me. Going back to the New game+ analogy, it’s like I unlocked a new arena and I can use all the equipment I’ve gained through my ICS career to conquer these undiscovered lands. I have completed some of the practice WODs and they are a good way for me to test myself on Typescript syntax and problem solving. We haven’t encountered an official in-class WOD, but I do feel a bit more prepared after doing the practice WODs.
This learning style is unique and I quite like it. It puts a lot of pressure on the coder in real time and forces them to perform. I think being able to operate under pressure is an essential skill for software engineering, especially for interviews, projects with short deadlines, or a quick fix that is needed for a system. This also allows the coder to analyze their own abilities, and if they are unable to think and do on the spot, they must increase their preparations in order to meet the time constraints. Although stressful, WODs are fun and an enjoyable experience for me. Plus, it’s a good way to evolve my critical thinking skills and software engineering skills as a whole.