Rekindling the Flame

03 Sep 2019

Gone but not forgotten

It’s been almost a year since I touched anything relating to programming or Computer Science in general, and I’m very very glad to be back. It turns out that just because you take a break from school, school doesn’t take a break from you. The long hiatus hasn’t really done me any favors in regards to my return to programming, and definitely made me realize that programming is something that one must continue to improve over time. Jumping right into Javascript in the beginning of ICS314 definitely made me feel a little intimidated, considering that many of my peers in my class were so comfortable writing code from recently taking ICS211 or 212 a semester or two prior, but that didn’t stop me from trying my best to get back into the swing of things. By the time the Fall 2019 semester started, I was ready to attack anything that came my way. Nothing, not even a rabid dog, or a giant African lizard guarding my computer, or the rage of a furious significant other ready to rain hell on me for spending too much time with my friends would stop me from diving back into my groove in school. Nothing would stop me from rekindling the flame.

Let’s try this again

Jumping into one of the first Javascript assignments was a very good way to get me back into the swing of things. The FreeCodeCamp course that was assigned to us really helped me with getting the dust off, as these fingers have not typed any code at all for a long time. I became more comfortable with Javascript and feeling like my old self again as I flew through the modules, and as time passed, I could definitely feel my confidence getting higher and higher with each completed lesson. Although there were some moments of frustration even from seemingly simple lessons (which was released in the form of taking breaks and playing Super Smash Bros or crushing an Orange with my hands in a frustrated attempt to peel it), the feeling of writing Javascript, code in general, and using that code to solve problems slowly came back to me. It was like riding a bike, slowly but surely getting back into it while taking baby steps along the way. Another way that the feeling can be described is like going surfing again for the first time after taking a 2 year break. By the end of the assignment, I felt like I had a pretty good grip on what I learned, and wanted to dive right into it.

They like apples to oranges

Comparing Javascript to one of the other languages that I’ve had experience with would be comparing apples to oranges. Well, in my case, if Javascript represented an orange, and Java represented an apple, then it’d be like comparing a nice fresh juicy florida orange (good oranges are from florida, right??) to a moldy apple that’s been sitting in the back of a fridge for an extremely questionable amount of time. On one end of the spectrum, I’m glad that I have a kind-of-fresh perspective on the language, so the limitations or capabilities of Java or C may not get in the way that much (simply because I don’t remember them that clearly), but on the other end, the same statement may apply when I start getting back into using other languages. I can almost hear myself saying “But I can do this in Javascript!!” at countless times in the near future. Regardless of the case though, I can say that Javascript is an appropriate language to learn for Software Engineering as it seems like the numerous functions of ES6 (arrow functions come to mind) will allow for cleaner code, both during initial writing of the code, and during code maintenance. The introduction to Javascript objects was definitely something different than what I have done before, but I’ve grown to like it as it as it seems more organized to have a single object contain different properties that it can be characterized by. I also like that the properties themselves can be manipulated without affecting the entire object, and it also seems like they can be really useful for storing things in a database or if you need to access certain data, etc. Adding multiple entries for each property of an object made me felt like a total wizard, which felt awesome as it was one of the most interesting mechanics of a language that I have ever learned. I don’t know if that statement has much merit to it, as the magnitude of it can be compared to saying that McDonald’s Chicken Nuggets are the true king of fried chicken. At this point in time, with my very limited knowledge on programming languages in general, I can say that learning Javascript was definitely one of the more interesting experiences in my career as a student. There was never a point in time where I thought any of the concepts of Java were interesting at all (maybe it’s because I was too busy scrambling to get my assignments done without a good understanding of the characteristics of the language), and I feared that Javascript would be the same, but I am definitely glad that it is not the case.

Hey, this isn’t the gym???

Once I received a brief introduction to Javascript, the next phase of learning how to be lean, mean, software engineers was our very first Workout of the Day (referred to as WODs, taken from the world of Crossfit). Athleticism and Software Engineering don’t really go hand in hand too much (it’s not really healthy to be sitting in front of a computer screen for multiple hours at a time, questioning your mental sanity as you find out after 2 hours of debugging that the reason your code doesn’t work is because you forgot a semi-colon…) but they say that the most unlikely combinations yield the most effective results. The WODs consist of a certain problem that is given to us, and we have to use our masterful knowledge of Javascript and super duper fast typing speed to create a solution to the problem within a set time limit. Depending on the amount of time that was elapsed, there are certain time “speeds” that are granted to us upon completion. The goal is to get the completed to be under “Rx” time, as that demonstrates mastery of the current topic at hand. The time limit is called “DNF” or Did Not Finish, and represents a time that you should stop the WOD, and try to look at the solution before attempting it again. This is because any time spent over that DNF time could give you diminishing returns, and is not recommended.

The first WOD was a good introduction to the entire WOD concept, and to also apply what we learned about Javascript outside of the handholding/test environment that I was so used to from the tutorial. It was our first step out into the real world, and a taste of what was to come, a taste of our fate for the Fall semester. Although the given problem was relatively easy (finding the sum of multiples of 3 and 5 up to a certain upper limit), setting the timer and racing against the clock provided an entirely new experience. Although I already had some experience with a few WODs that were done before my abrupt end to my Fall 2018 semester, the feeling of adrenaline racing against the clock was still the same. The feeling can only be described by a magnitude and intensity that can only be matched by a Michael Bay movie, and once the time starts, it’s game time.

Completion of the WOD at Rx time on your first try for every WOD thrown at you is definitely a remarkable feat, but it’s just not humanely possible. Because of this, a solution video is provided for you to watch if you hit DNF time. Although the solution video explicitly shows the solution to the problem, I feel like it is more of an aid that can guide you if you are completely stuck. The videos are not meant for you to memorize the solution to, they are more like a way for you to see how the part you were having trouble with during the WOD was implemented so you know how to get around it and improve your time. Once you view the solution, you attempt the WOD again as before, attempting to get Rx time with help from the solution video.

With everything that goes on in a WOD, it is way more than just learning the material. WODs in ICS314 are an entire experience that you are immersed in, and has real-life practicality as it mirrors whiteboard interviews at all the dream companies that Software Engineer hopefuls like myself want to get into. Each exercise gives you a feeling of satisfaction and accomplishment, almost similar to getting a personal record at the gym, or like finally turning in that long project after lots of hard work. With these accomplishments of performing WODs, it’s almost like they’re like weekly pick-ups that refresh you and leave you wanting more and more to take your learning experience to the next level.

The push to victory

The learning methods that we will utilize in our Software Engineering class will set us up for success in our futures, and I am more than happy to be able to participate and learn from this process. The road ahead seems hard, but like many rewarding skills, the amount of efficient time put in will make room for success. I’m looking forward to learning numerous skills and gaining mastery of different tools and frameworks, and I can’t wait to have a great semester with the rest of my classmates. I hope for all of us to be successful and work together in every step of our journey, even after graduating college.