First Milestone

July 01, 2021

I spent the last fortnight to complete the Basic JavaScript course on freeCodeCamp.

Ideally, this course would have been completed a few days sooner. However, a sudden spike in work from my current job along with a couple of bouts of allergies prevented me from solving exercises on freeCodeCamp for a few days. Further, I realised that it took more time to complete each successive exercise, as the level of difficulty progressively increased with time. Thus, it took longer to finish this course than the amount of time I had initially estimated for it. I have also realised that it often takes significantly greater mental energy to learn new concepts of coding, if I attempt to do multiple exercises at one go. I think this is due to the fact that I am not used to the specific kind of logical thinking that is required while writing codes. I think the process will get smoother once I am more used to thinking in the particular way that a coder is expected to think. However, now that I have an understanding of the kind of time and commitment required for completing a course on JavaScript on freeCodeCamp, I aim to set aside at least 90 minutes every morning for coding, in order to ensure that I spend at least some time learning how to code even on days when I do not seem to be able find some any spare time on my calendar.

Basic JavaScript course: Key learnings

I began with the course by first going through the explainers provided by freeCodeCamp and then trying to solve the problems separately on Visual Studio Code. Soon, I realised that to see if the code I had written was correct, I had to repeatedly using the console.log() function, for every operation or function. This was making the code bulky and time-consuming, especially when I wanted to see how the same statement, function or operator would return different results with different kinds of inputs. To this end, I soon started using the node CLI, which is an interactive utility for running JavaScript statements, that gives me immediate feedback to the code I am writing. Thus, for every exercise, I would initially try out the new command or operator or function introduced in a particular exercise, on the node terminal. Thereafter, I would try to solve the exercise on Visual Studio Code and then finally paste it on the freeCodeCamp window to proceed further.

During the Basic JavaScript course, I learnt several new concepts. It started with relatively simple concepts, such as understanding how to write comments and declare variables in a program. Soon, I started learning about arrays and how to access, delete and add new elements to arrays. Writing codes with conditional statements (such as if-else and switch) was fascinating as it gave me a glimpse of how complicated programs can be structured. The last part of the course was dedicated to recursive functions.

Upon Reflection

Having completed my first course on Computer Science, I must admit that I found it interesting and I look forward to learn newer and more complicated concepts. What I particularly enjoyed during this course was the ability to fiddle with a new concept that I learned in an exercise, on node CLI. This played a key role in helping me understand each concept clearly.

However, it is also important to note that I would get stuck at multiple points in the course, often due to careless omissions on my part. Sometimes, spotting these small errors took a while and I would exhaust myself in the process of resolving them. For example, early on, while solving an exercise on global and local variables, I spent nearly an hour trying to understand why the freeCodeCamp portal would not accept my code as correct. I had run the exact same code on Visual Studio Code, which did not throw any error report while compiling it. After several agonising minutes, I realised that I had assigned the number 10 to a variable (oopsGlobal) when the exercise required me to assign 5 to it. Apart from such trivial errors, I would, at times, spend considerable time trying to write the correct code to produce the output required by the particular exercise, as I would find it difficult to clearly understand the instructions for the problem at hand. This was particularly true for this exercise, as the instructions were not very apparent to me as I did not have a prior knowledge of the game of Golf.

Going forward

I aim to read a few articles on recursions and attempt to write a programs on recursive functions. Thereafter, I will proceed to the next course on freeCodeCamp on JavaScript, namely the ES6 course, based on ECMAScript.