Javascript is the language I have the most experience with as it was the first language I learned when I was just a freshman in high school. I was fortunate enough to have a computer science class in high school with a very awesome and engaging teacher. In the class, we built websites out of pure HTML, CSS, and Javascript and toyed with Javascript libraries such as p5.js to create games and ml5.js for machine learning. I remember having to write code in a Google Chromebook using an IDE called Caret. We had to bring our own flash drives to save the code that we worked on. Later on, the school gave us better laptops in which we used Ubuntu and hosted servers. In the class, we also experienced GitHub where we used repositories to host websites under our usernames. Without that teacher, my love for coding and Javascript would have never sparked. Looking back, I found it crazy that we would write in pure HTML, CSS, and Javascript. Nowadays, frameworks like React and Angular make creating websites much, much easier and I never want to go back to using pure Javascript
Javascript currently stands as my favorite programming language because it is not a strictly-typed language as well as its versatility to create nearly every kind of program, from full-stack websites to video games. Javascript’s strongest suit is definitely in websites. The thing I enjoy the most about Javascript is how much easier it is to manipulate an array compared to Java and C++. Using ES6 functions such as map and filter feels like a treat in writing beautiful code. As I got older, I started noticing the power of object-oriented programming, and possibly Typescript may be my new favorite language. One of the things that bother me in Javascript is not knowing the type of a function parameter at first glance. Sometimes I have to play guess and check to find out what am I supposed to pass into the function. Typescript solves this issue and although the language is strictly typed, it still offers the ability to return any type from a function as well as a select few types you choose. Typescript boasts of its performance because errors can be caught during compile time rather than runtime.
Going through the FreeCodeCamp curriculum was a nice review of Javascript for me. Although the module was called “Basic Javascript,” I still learned some things like the “delete” command to remove a key and its value from an object. There were also some fun and difficult challenges here and there. The recursion was very unexpected for me to see in a beginner-level introduction. The ES6 learning module, was where I learned a lot from. I learned about freezing an object to prevent any mutations, destructuring an array or object, creating classes, and importing and exporting functions. Overall, I think FreeCodeCamp is a great place for beginners to get a taste of what Javascript is like. It’s also a great place to refer to for specific functionalities of Javascript and ES6.
In ICS314, we practice what is known as “athletic software engineering,” which sounds similar to calling esports “athletic.” Anyway, after having first experienced athletic software engineering in the practice “Workout-of-the-days” (WODs), I now understand where the word athletic comes from. Given a coding challenge and a timer, it can be very stressful, but with enough practice, it can become a breeze. The first practice WOD, “Project Euler” was quite simple; I completed it on the first attempt within 2 minutes and 30 seconds. However, the next practice WOD was much more difficult. I failed my first attempt with a DNF but quickly aced the next attempt with the knowledge I had previously. Overall, I find WODs to be very useful in preparing myself for technical interviews for computer science jobs. In most cases, the interview will involve a coding challenge with a timer. Although it is very stressful on the clock, it can be rewarding and enjoyable when you finish. After experiencing my first practice WODs, I learned that I need to brush up on my basic and fundamental Javascript and take more time to read and understand the problem at hand.