Written by Michael Yi
One particular talent or skill that I am proud of is my ability to solve problems. The sense of gratification after relieving my brain of stress has always been incredibly rewarding to me, which is why I was especially intrigued when I combined my ability to problem solve with another talent of mine: computer science.
Problems are omnipresent when it comes to programming. A significant factor that has prepared me for the years of problem solving ahead of me was my love for math. Math is defined by solving problems, and making mistakes when doing math is inevitable. I further developed my skills with problem solving as I started to program competitively. Competitive programming takes aspects of math and computer science and amalgamates them into one. Therefore, I was not only contributing to my ability to code but also reinforcing my ability to solve problems as I continually debugged my code. As I later pivoted my career towards becoming a software developer, I realized that solving problems would compose more of the development process than actual progression. One of the most challenging problems I have had to solve was when I was developing a speed indicator for my dashcam app.
In 2021, I developed a mobile application called CarCam, an affordable dashcam alternative. One of the features that I wanted to implement was a speed indicator, which displays the speed of the vehicle when recording a trip. At first, I tried to use artificial intelligence to extract the speed of the vehicle. However, I was rather inexperienced with machine learning at the time, which could prove to be problematic. Instead, I extracted the speed of the vehicle by taking the coordinates of the vehicle from point A to point B across a certain interval, utilizing the distance formula to calculate the average speed of the vehicle. This eventually led to another problem, which is trying to find the most accurate and most resource-efficient interval to calculate the average speed. If I fetched the device’s geolocation information from a shorter interval, it would result in a more accurate speed but would hinder the application’s performance. On the other hand, if I fetched the device’s geolocation information from a longer interval, it would result in a much faster application performance but sacrifices accuracy. This resulted in me using an extensive process of trial and error, one in which I would first run the application on a newer phone and an older phone through my computer, go to my car and test the app’s performance and accuracy in speed by driving around my neighborhood, and drive back home to repeat but with different intervals. Additionally, if the development server or Expo had crashed at all, I would have to go back home to connect to the internet to start the process over again. After this extensive process, however, I found the perfect interval and solved my problem.
A couple months later, I knew I had really solved the problem when I received third place in the Congressional App Challenge. This process led me to realize the importance of perseverance. Despite the extreme length of the trial and error process, I was able to persevere through the monotony and tediousness until I found the perfect interval. The process took several hours, but with my unwillingness to give up, I remained optimistic and succeeded.