From the perspective of a student whose entry-level coding courses make up the bulk of my experience, hearing that we must use an entirely new language (which is based on another language we didn’t specifically cover) is very disheartening. However, I was surprised not only by how quickly I was able to grasp the concepts, but by how familiar I was. The way I see it, at least as of now, is a cross between Java and C; at least by feel, it operates like a stricter version of C, while allowing for the memory management capabilities of Java – at least up to this point. It’s a language that can cover for your mistakes through inferences but will force you to check your work if something is really screwed up. It makes sure you go through the proper checks and procedures to ensure that a piece of code works as intended.
However, the language learning process isn’t something that I can relate to putting on cruise control and not paying attention; there are many hurdles that I am working to overcome, especially as it relates to some of the ES6 features. The tutorial on some of these functions, such as destructuring and the arrow functions, was my first time learning these concepts. While conceptually I can see how powerful and time-saving some of these measures can be, putting the processes into use will take some time.
From what little I’ve used of it so far, and from how limited my experience is to programming and coding in general, I find TypeScript to be a great language from a software engineering perspective. Like previously mentioned, the specificity of the language may initially cause a user some headaches as they go through the learning curve. However, those same bumps in the road become experiences that allow the user to develop the skills and insight to really think about the code they are trying to write. For me, understanding that at this point mistakes are what will help instill the knowledge into “muscle memory” creates the drive to keep pushing through and learning the language.

The athletic style of software engineering, which boils down to learning by doing and practicing (over and over), sounds intimidating and awful until you realize a lot of what you’ve learned best is taught that way. While I was taking the entry-level courses in preparation for this material, many of the professors always said to “code in pieces” or to “take breaks”. While I ultimately came up with a solution to the problem at hand, ultimately a lot of those processes are relegated to the back of my mind, because I could always review the code, and there was essentially no limit to the amount of time we had for the assignment beyond the due date. However, the introduction of fast-paced “workout” exercises and the introduced time-crunch of thinking and coding quickly and efficiently has already helped to keep the skills at the forefront of my mind.
This style of learning is both stressful and enjoyable, and I weirdly like it. Continuing with the athletic analogy, I get the same feeling from learning the concepts of TypeScript through this style that I do going to the gym; Sure, the middle of a set will strain the muscle and be painful to get through, but the feeling of accomplishment and growth afterwards makes it all worth it – and the same is true of software engineering. The process can be painful, but the knowledge and skills obtained make it both worth it and enjoyable in its own right.
At the end of the day, sure, TypeScript can just be another language that people can throw in their toolbelt and say, “Yeah, I know how to use it”, but I view it as a means to something greater rather than the end goal. It’s a language that helps a person not only refine their skill specifically in TypeScript, but also in software engineering in its entirety. While I anticipate there to be more painful moments as we move into harder concepts, I’ll view it as another case of putting more weight on the barbell and keep on pushing through it.
While writing this technical essay, Grammarly AI was used to help verify and check for all major grammatical mistakes. Some minor edits suggested by Grammarly were used if I felt that they added or enhanced what I was trying to convey, while some were ignored because they would sound less like “me”.