My Journey Through Software Engineering

14 May 2020

Reaching The End of the Finish Line

This semester has been quite a ride, with a decently heavy and frequent workload from a lot of my classes, but ICS 314 definitely was up there in keeping me on my toes constantly. Software Engineering had so much fundamentals to learn that we basically moved on to a new topic every week. Of course it made things stressing when it is stacked with everything else, but through this experience, I built a newfound appreciation for Software Engineering. Prior to starting the class, I always thought Software Engineering was kind of the middle point between Engineering and ICS, but boy was I wrong. This class became my first taste in putting all my coding knowledge in a practical manner that can be actually seen. All of a sudden, my measly 150 lines of code can now be seen as a landing page for a website, and it slowly ramped up to our final project, where we had to put all those skills to the test. Quarantine definitely took a toll in learning for almost all my classes, but this class was able to keep my attention to the very end. Now that the semester is over, I can say that I took quite a few things from my experience in Software Engineering.

You Don’t Need A $3000 Computer To Code (But It Helps)

One crucial part of Software Engineering and coding in general is the tools that you use in order to carry out projects. This concept called the development environment which pertains to the software that you use to code, which was JSFiddle and IntelliJ for us. This also includes the hardware that you use to run these software. Anyone can code on any old computer, but in order to run that code and implement it in a real life situation, you need a computer that can take that kind of workload. Throughout my time in ICS 314, I assumed that my MSI Laptop with an i7 Intel processor and a decent SSD was enough to handle any type of code, but I was quite wrong. Initially, running code took only less than a minute. But, once it came around to creating websites, the processing of installing packages for our code and running them into a local host took upwards of 15 minutes. What seemed to be an easy assignment that can take 10 minutes now takes almost an hour simply because the hardware I was using wasn’t fast enough. I am not a huge person in wanting the best PC parts because I don’t need them, but these experiences showed me that you have match the hardware to the software if you are willing to get results at relatively good speeds. Of course you don’t need to have cutting edge NASA computers to be coding, but it will help immensely to at least have keep your technology updated to handle any problem for Software Engineering. Hopefully once I make a decent amount of money, I too can upgrade my computer so that handling code for future projects won’t be a problem.

If You Can’t Clean Your Room, Don’t Expect Clean Code

Another aspect of Software Engineering that stuck me was upholding good coding standards in any project that we are approaching. Not only does it help others understand where your thought process with code, it also helps you be able to debug and modify code without having to search through lines of typing. This was an aspect that seemed simple enough, but when it came to having files with upwards of 100 lines of code, having a good coding standard was paramount. From indenting for when code is within a function, or commenting on specific parts are all needed if you want to keep track at all times of where you are. For our final project, coding standards was needed because not only are we working on our own code for different parts, we also need to look at each others code to know what needs fixing or improvements. If my teammate had a problem with their code and I wanted to help, I can’t if their code is all on one line. With Software Engineering, I realized that like any other simple task, if you don’t do something properly, it will bite you in the end. A code can work in the end, but if it is messy no one will understand it.

There was so much other small fundamentals that Software Engineering helped me develop such as time management, team coordination, and much other important skills. Sure some of the skills that I mentioned earlier are ICS exclusive skills, but the skills I just mentioned will carry on in many other situations. Ultimately, I found out that finding motivation in the work you do and setting goals helps everything else flow easily. It was hard to find that motivation in other ICS classes, but when you finally get to put all those skills in a practical manner, the motivation naturally comes in. Overall, the experiences I had throughout learning Software Engineering in ICS 314 will drive my future goals and possibly attract me to more Software Engineering opportunities.