My first encounter with JavaScript and Typescript was challenging, since the only language I knew then was Java. However, after working through the 160 modules, I was able to make connections to Java, which helped me become familiar with the structures and syntax of both languages. A feature in JavaScript that stood out to me was its use of first-class functions, which are functions that can be assigned to variables, used as arguments, or returned from neighboring functions. This flexibility contrasts with Java, since functions must be created as methods within classes, and require explicit type parameters to execute properly. Thus, making JavaScript a much cleaner and beginner-friendly language than Java.
From a software engineering perspective, I found Typescript to be more logical than Java and JavaScript. Its static typing defines and verifies variables and functions at compile time, reducing the likelihood of bugs and making the code more reliable. In software engineering, it is optimal to minimize runtime errors and prevent debugging, so programs run efficiently and software engineers can work more productively. A feature that I found particularly interesting was the union type, as this allowed variables and parameters to take on more than one type. The ability to utilize multiple data types in a single location makes code more maintainable in contrast to Java, where code is more complex due to its strict type system. Typescript enhances the structure and security of code while maintaining the flexibility of JavaScript, making it a practical and effective programming language.
The Athletic Software Engineering method in ICS 314 emphasizes a time-constrained and intense approach to developing software engineering skills. A key aspect that’s been effective in my learning is the Workout of the Day (WOD), which is a coding problem that must be solved within a duration of time. My first few attempts at the WODs were unsuccessful since I had no strategy when working on the problems. However, with practice, I developed a stronger approach and understanding, which improved my times significantly. While I have yet to achieve proficiency at these WODs, I am confident that with more experience, I will fine-tune my problem-solving skills and reach a level of competency to work under pressure.
I believe that the athletic style of learning will help me acquire the necessary skills to become an efficient software engineer. Although the stress from the WODs is inevitable, it can motivate my learning by encouraging critical thinking and meaningful decision-making. Moreover, if I keep up a growth mindset and stay consistent with my work, this athletic approach to learning will prepare me for both technical and professional aspects of any career I pursue in the future.