Tuesday, February 9, 2021

Coding Challenges and Job Searching

I know I missed posting last weekend and for good reason. Not only was it a busy weekend at the house I'm living at, but I also was stressed preparing for my first coding challenge that one of the companies I applied with asked me to complete.

I'm admittedly somewhat self-taught when it comes to computer science concepts. I have a limited background in algorithms. What object oriented programming I know is mostly what I've picked up learning Python, which allows for, but doesn't require, an object oriented paradigm. I'm familiar with big O notation from my math studies, but still have difficulty knowing what the time complexity of various common functions and operations is.

Needless to say, I quickly realized that I was unprepared for the typical algorithmic coding challenges companies use as part of their interviewing and hiring process. The challenge I completed was administered through a platform called CodeSignal. Once I signed up for an account, I started working through some of their arcade and interview prep problems. In addition to providing practice, it also allowed me to become familiar with their in-browser IDE (integrated development environment) and allowed me to test out a few programming languages I might use. I was initially torn between using either Python or MATLAB (I don't feel comfortable enough with perl to attempt a timed test). Since MATLAB is proprietary software, it isn't supported on CodeSignal's platform. Octave, an open-source language similar to MATLAB, is, but I am not familiar with or comfortable navigating the differences between the two. Plus, it's been a while since I've used MATLAB, so I'm a bit rusty. Ultimately, I chose to proceed with Python.

I didn't do horribly on the coding challenge, but neither did I do super well. This will likely not be the last challenge I'm asked to complete, so I have decided that going forward I will try to complete one practice problem a day. This was initially a goal I was intending to pursue with Leetcode, but I've settled on using CodeSignal for now. This has a few advantages. First, you must either spend some hard earned coins, gained through completion of exercises, or successfully solve the problem in order to view hints or other users' solutions. This removes the temptation to look at the solution the moment you become stuck. Second, the organization of problem sets on CodeSignal makes it easy to progress from simpler problems through to more challenging ones.

One recommendation I have for anyone seeking to expand their coding abilities this way is to do the problem, and if you get royally stuck, do a quick Google search and read through a few forum threads or search the language's documentation to discover some unknown-to-you function, package, or syntax that may be helpful. Once you've solved the problem in its entirety, look at a few of the solutions for your chosen language and look up pieces of code that are unfamiliar to you. I've been doing this and have learned new things I wouldn't have discovered otherwise. For example, I learned this past week about list (and dictionary) comprehension in Python. This technique is a way of constructing lists (or dictionaries) more quickly than using something like a straight-forward for loop, which constructs entries one by one. I've been able to implement it in other problems I've worked on and it's helped to speed up the execution of my code.

One last thing I wanted to briefly touch on this week: job searching. I know I mentioned a while back that I'm looking for my first professional job. One thing I've discovered is that colleges by and large don't do a good job of preparing students to job search. I think the expectation is that you go to a school job fair, you get a job. Eazy-peazy. In reality, it's not that simple. I've spend the better part of my job search fumbling my way around job boards and reading job posting that make me feel depressed about not having any experience. This is a topic I hope to elaborate on in the future, but for now, I just wanted to mention that if you are feeling lost in your search for a job, you are not alone. I've watched enough videos and read enough forum posts to know that no one really knows what they are doing, but they hope that they get noticed by the right recruiter or hiring manager. I think sometimes there is this misconception that once you become an adult, you know how to do adult things, like getting a job. That couldn't be further from the true: we are all pretending and hoping that those around us believe we know what we are doing until we've got it figured out.

No comments:

Post a Comment