
JavaScript is a versatile programming language that has garnered both admiration and criticism in the world of software development. For newcomers and seasoned programmers alike, its unique characteristics and applications can be both fascinating and challenging.
The idiosyncrasies of JavaScript, such as its syntax, asynchronous behavior, support for first-class functions, and the ability to return various data types, differs from the conventions of more traditional languages like Python, Java, or C/C++. I appreciate these idiosyncrasies as they provide programmers with a broader spectrum of tools that can be used to craft innovative software applications. One drawback is the additional time investment required to acquire new knowledge, yet I believe this investment is more than worthwhile.
During my time in high school, I gained early exposure to JavaScript, with one noteworthy experience involving the use of Processing p5.js. I developed a web-based game utilizing Processing, which is currently accessible on my GitHub repository. While in high school, my JavaScript learning primarily encompassed fundamental concepts, without delving into advanced topics such as functional programming, lambda functions, and the like.
Recently, upon completing a module on ES6 via FreeCodeCamp, I was pleasantly surprised by the addition of new features and increased complexity. Among the novel concepts I encountered were anonymous functions, destructuring, the use of rest parameters (including rest parameters within destructuring), as well as promises and JavaScript code import/export mechanisms. This exposure broadened my understanding of JavaScript considerably.
Athletic Software Engineering is a novel approach that emphasizes continual practice and skill development, much like athletes hone their abilities. This approach encourages regular engagement in coding challenges and exercises. The goal is to productively and successfully learn a tech stack. Workouts of the Day (WODs) are integral to Athletic Software Engineering. They are timed problems that force students to learn the tech stack correctly and efficiently.
My engagement with practice WODs within the context of the Athletic Software Engineering style of learning proved to be an invaluable experience for honing my coding skills with efficiency. As I had never previously coded under time constraints, this presented a novel and challenging situation for me. I had to swiftly adapt to the imposed time limitations, and I achieved this by initially identifying the critical components of the WOD, writing comments outlining the necessary steps, and subsequently proceeding with the coding process.
Despite the inherent stress associated with this learning method, I believe that it will ultimately be beneficial. The pressure to perform and the consistent practice it encourages will undoubtedly contribute to my growth and proficiency in coding.