I just spent the past week relearning the basics of Javascript, here’s what I noticed:
I originally learned Javascript for my job as a web developer, so I had a basic idea of what it looked like before my week of review. However, I no longer work at that position, and my knowledge is a little rusty. I did end up forgetting a lot of the features related to ES6 (ECMAScript 6), like the spread operator, destructuring, and promises. Since I wasn’t really using these features in my previous work, I forgot about their existence as time went on. So even though I did know the basics of Javascript entering this past week, it was really nice to get a review of things that may not be used as often. I can even use what I’ve learned to improve how I write code.
When it comes to coding languages, I also have experience with C/C++, Python, and C#. If you add Javascript into the mix, it soon gets hard to remember the exact syntax for each language. When coding with a language I haven’t used for a while, I often find myself looking up simple things like, “how to define a function”. This also means that it’s easy to compare Javascript to these languages. Going back to defining functions, Javascript doesn’t require a return value type, while other languages like C++ do. This can make it easier to write functions in Javascript, since you’re able to return strings and integers from the same function.
From my previous experience as a web developer, I can say that Javascript is a good language from a Software Engineering perspective (we were able to create a final product, after all). Is it the best language? It’s hard for me to say at this point.
Athletic Software Engineering is a method that involves high intensity and time constrained work. For my Software Engineering class, we participate in WODs (workout of the day). For each WOD, we are given a problem and a limited amount of time to write a solution. If you are able to complete the WOD in the allotted time period you were successful, otherwise you DNF - there is no in between. This approach forces me to quickly assess the problem, find the best possible solution, and write the code. There is no time for hesitation. Though this does sound like a very stressful way of learning, I think that it has been very beneficial to me so far. If I know how to approach the problem, my next challenge is how I can proficiently write the code. If I don’t know how to approach the problem, then I can learn from the DNF and hopefully finish a similar problem in the future.
I haven’t had too much trouble with the WODs given to us so far. But who knows, this opinion may change in the future when I’m faced with harder problems. For now, I believe that this view of “Athletic Software Engineering” can play a big role in learning and improving as a developer.
As I continue to practice with Javascript, I’ll be able to learn more about its characteristics and how it differs from other languages. I also hope that the WODs will continue to help me improve as a coder. As this is only the second week of the course, only time can tell. But I have high hopes!