From Mechanical Engineering to Software Engineering

28 Aug 2023

I was an ME major... for a semester

When I entered middle school, I knew what I wanted to do with my life: I was going to be an engineer. I loved watching fabrication videos, learning about how things were made and how things worked... I still do! I even joined the Rocketry club in high school and served as President for two years, dreaming of one day becoming the next Homer Hickam and working for NASA. However, when I entered university for Mechanical Engineering—something I had waited my whole life to do—I felt lost.

After I was the victim of a violent crime in 2020, I decided that I no longer wanted to move to the mainland, even to pursue a lifelong dream. I struggled with PTSD—being alone and away from what was familiar was not possible for me at the time. I didn't even want to leave my house. My life was shaken up and this was only exacerbated by the COVID-19 pandemic.

Then, over the summer of 2021, I took Mark Rober's online class on the engineering design process. We were tasked to build one mechanical project, one electrical project, and one that combined the two. Maybe it's because I was disappointed in how my mechanical project turned out, but I really enjoyed coding the Arduino for the electrical project and was especially proud of it.

Because of this, I switched my major to Computer Science with almost no other coding experience than some basic C++ on that Arduino project.

What I find interesting about Computer Science

I switched to Computer Science for the same reason I wanted to be an engineer—because I have always been curious about how things worked, including software. Seeing how you could accomplish so much with just a computer, an IDE, and some skill inspired me. In a way, Software Engineering feels familiar, exciting, and it piqued my interest.

Software Engineering

For Software Engineering, I am interested in learning how to create a user-friendly interface using JavaScript, HTML, and CSS. Whenever I use an application, the first thing I notice is whether or not it is easy to use—not the learning curve of the actual application, but more so if it is easy to navigate. For example, AutoCAD has a learning curve to effectively use the software, but if you let someone play with it for 30 minutes, they'd likely be able to grasp some basic skills of the program: how to draw basic shapes, toggle the grid on/off, measure distances, etc. Although I doubt I'll be making AutoCAD level software anytime soon, I want to make the experience of my application as pain-free as possible.

I also hope to improve my JavaScript skills. Over the summer, I tried (and failed) to make a Discord bot using JavaScript. Well, "failed" is the wrong word—rather, I created a much less useful bot than I had intended. What was intended to be a music bot that could play songs from YouTube links ended up only being able to send a pre-programmed message when the command was entered. I did speed through some basic JavaScript tutorials on YouTube, but did not come away with any substantial knowledge. I hope to change that by the end of the semester, and feel that I am already making progress after going through the FreeCodeCamp tutorials.

Finally, I want to add more projects to my portfolio. Because I am relatively new to coding in comparison to many of my peers, I have pretty much zero coding projects, and the ones that I do have are as basic as basic gets. I'd like to change that this semester as my coding skills grow, and continue to create software well into the future, whether it be for my friends or for myself.

My future with coding

This semester, I will decide whether I will stay a Computer Science major or go back to Mechanical Engineering. Either way, I hope that understanding Software Engineering will help me in either field.