Last weekend in my software engineering class, we were given the task of learning the syntax of JavaScript over the weekend. Here’s my thoughts on both the language, and the “Athletic Software Engineering” approach that’s behind all of this.
The syntax of JavaScript was really straightforward, it felt like a middle ground between Python and Java. The way you format and write most of your code is similar to Java since they are both heavily influenced by C style syntax, but similar to Python, you don’t have to worry about your variable types when declaring a variable, or adding to an array. JavaScript objects also look a lot like the Python dictionaries that I’m familiar with, so that helped me a lot in understanding them. However that’s where the similarities stop. Unlike Python variables, you still have to declare variables with a keyword, usually let
, sometimes const
, and you don’t talk about var
. Also functions are first class, meaning that unlike many other languages, you can actually pass and return functions. Even with my tiny amount of experience and understanding of the language I can tell that this is very powerful. I have had many experiences in the past with other languages where I wanted to send the results of a function to another function, but since functions weren’t first class, I would have to first save the result in a variable, then pass it, which always felt absolutely awful to do. I don’t know enough about JavaScript yet to give a good review of the language, but I can tell you that I’m excited to learn more.
Athletic software engineering is an interesting approach by my professor, Philip Johnson, where he wants you to treat software engineering as a sport. As a result, he expects you to train your skills 2-4 hours every day, and definitely assigns you enough assignments and readings for you to do so. While the readings can be tedious, I found that the exercises were very engaging and helpful. For each exercise you are given a coding problem, and are expected to time yourself to see if you can complete the problem in a good time. If you take too long or are unable to solve it, you’re expected to watch the professor’s solution and try again, hopefully finishing much faster than your previous attempt. This builds up your skills very quickly, and with it, your confidence in your coding skills. As you would expect, all of this can get stressful, especially since this is only one class out of the 4-5 classes that you might be taking in a full time student workload. However that is justified, as this class aims to make you a software engineer, which is not something you can become easily. The final thing that I’ll like to add is that the efficacy of this system is clear. When the students of a previous year was surveyed on their opinion of athletic software engineering, 90% of them preferred it over other traditional teaching methods. While the survey is definitely biased (most who disagree or couldn’t handle it would’ve dropped the class before they could’ve taken the survey), it’s clear that this approach is great for students who are motivated enough to commit the time and effort required in treating learning as a sport.