Ever since I was a young child, I have been surrounded by coding and programming. By observing my father’s and cousin’s work in programming and after seeing them “commanding” the computer to do their bidding, I was motivated to learn how to code. My first contact with conventional coding is when I started the CodeHS program in 8th grade. For three weeks, I played around with Karel the dog, an introductory course which taught me how to make the “dog” build formations, solve mazes, and complete other tasks.
While I was first learning to code, I became frustrated whenever I encountered a problem. I despised the sense of helplessness when the code just wouldn't compile or run correctly. Out of stubbornness, I held on. I continued to try new approaches until I could finally reach an answer to the problem. Bit by bit, I was able to deconstruct the problem, find the error, and solve the issue. In a sense, learning to code not only gave me the skill of programming but also how to be patient and better control my emotions. I realized I needed to give myself a few minutes to calm down, sit down and try to approach the problem differently. The solution to the problem was no longer the main goal, but the process to get there became a reward in and of itself.
After I finished the CodeHS course, I challenged myself to create a playable game using Java. I worked on the program day in and day out, watching videos on concepts I needed, while constantly debugging the code to make sure everything functioned properly, from syntax to logic. In the end, I created a single-player “BlackJack” game with each “card” consisting only of text symbolizing the rank and suit. Initially, I was satisfied with the results of one month’s worth of hard work.
As I continued to explore computer programming, I reinforced the knowledge that I formerly knew. I also learned new ways to solve problems in the AP Computer Science Principles course along with a summer course on Java that I took at Stanford University. I found that I could improve my “BlackJack” code to the point that it was either optimized or changed entirely. Advice I solicited from my fellow classmates and the instructor helped considerably and allowed me to introduce new functionalities such as allowing players to compete against the computer. Upon reviewing my final code before submission, I realized that alongside growth in my knowledge of Java was my increased willingness to ask for help. I realized that there was still much more I could learn about programming in the years ahead, either from my peers or my professors.
The next year, I was accepted into an online research program featuring DSLs. The research course, offered by Pioneer Academics, is an independent online research-mentorship program. The topic of my research was on DSL of an academic calendar, in which I created an external DSL using Java and iCal4J, or, in simpler terms, created a code that allowed me to change everyday language into a calendar, like Siri in text form. I further recognized the importance of communication with my peers and the ability to see problems with a fresh perspective. The feedback I received from my fellow “classmates” aided me greatly in the construction and completion of the compiler I wrote.
Throughout my study of programming, I slowly took in bits and pieces of knowledge and skills from a variety of places ranging from coding techniques to communication skills to something more personal like my behavior and temper. As I've learned more about coding, I no longer become frustrated when I encounter a problem, or as programmers call it: a bug. Instead, I started to get used to bugs. They are just a part of the process, and I treat them as a challenge - a way to improve myself. After looking at the code and approaching it in a different way, I often find a solution I would never have thought existed.