Up until the weekend before I wrote this essay, I had never touched JavaScript in my life. But thanks to a rather rigorous college assignment and a bout of poor time management on my end, I landed myself in a situation where I had about a day to complete an entire course on JavaScript basics. Luckily, my prior programming experience with other languages came in handy, and I managed to blow through the course in a matter of hours, albeit with several headaches. Now, having gone through all of that, here’s my first thoughts about JavaScript.
Previously, I’ve used primarily C++ and some C for my coding projects. Immediately, JavaScript seems much more flexible than either of those languages. The first thing I noticed was that JavaScript does not ask for variable type declarations in variables or in functions, which gives you a lot more freedom. You can also treat functions as objects that you can pass into and return from other functions. My immediate reaction was how cool this was; I felt liberated in a way, free from a lot of the rules that had been ingrained in me ever since I started programming. My secondary reaction, however, was how confusing this was. As soon as I began playing around with this newfound freedom, I quickly found myself confused. What was this variable for again? What is that function supposed to do? I found myself frustrated and tired as I struggled through the last of the JavaScript course. Looking back, it’s starting to make more sense, but it’s still astonishing to me how quickly that freedom can turn to chaos. I think I still prefer the rigidity of languages like C++, but I’ve now found an appreciation for JavaScript, and I hope with more experience I can become more fluent with the language.
The class that assigned me the task of learning JavaScript focuses on “athletic software engineering.” It’s a style of coding that focuses on the speed and accuracy at which you can write code in a time-pressured environment. In my class, we are assigned Workouts Of the Day, or WODs, for short. These assignments ask for you to time yourself completing a task, and the goal is to finish the task and produce a working chunk of code within a certain amount of time. These assignments vary in difficulty and the amount of time allowed to complete them. Immediately after learning the Javascript basics, I was thrown into several of these assignments that required me to use Javascript to complete the task. Having just learned the basics of the language, the assignments were difficult; however, no matter the complexity of the acual assignment, the most difficult part of every assignment was starting the timer.
Athletic software engineering an interesting skill that I thought was niche at first, but being able to write good code efficiently is a highly valued skill in today’s job market. Writing code and completing assignments while racing against the clock is great practice for technical interviews, as well as improving how efficiently I can accomplish tasks. Doing timed exercised can be stressful, and I spent more time than I’d like to admit staring at the “start stopwatch” button on my phone and biting my nails before a WOD. However, I think athletic software engineering is a skill that any good computer scientist should possess to some degree.