An eventful semester during the spring of 2024 at UH Mānoa has lamentably ended, but not without its merits. In retrospect, this time has markedly provided me with a fundamental view of and allowed me to take one major step forward in the world of software engineering. Taking ICS 314 offered me an enriching glimpse into principles and disciplines that I hadn’t previously experienced before. Looking back, all ICS courses I’ve taken during my undergraduate career thus far have been immensely insightful, but this course has stood out in a notable way. The final project felt like a major step into the reality of jobs within the realm of computer science, especially with regard to project management and integration of UI frameworks. As a result, I learned about essential concepts that are firmly woven into the fibers of developing software.
Previous semesters have allowed me to work with others in teams for CS projects before, but this was the first time I experienced an organized arrangement of objectives we designed for our project to function how we intended it to. Fundamentally, it is an approach to creating issues and delivering solutions to them in an interactively-designed process. As a result, the issues management through our GitHub repository and project board provided us with a way to set goals and tackle them in a well-coordinated manner that led to clearer communication of team members’ roles within our window of delivery. In turn, this principle made it simple to break down our project into manageable increments and allowed us to prioritize tasks based on their value or feasibility. As I continue to take steps into the professional world of software engineering, I expect similar disciplines to be utilized again in future endeavors.
The final project taught me a valuable lesson in planning objectives in what I code and how I can maximize efficiency to get the result I want. In this, design patterns are a crucial element since they fundamentally serve as a proven blueprint for structuring code and offer a template or roadmap for repetitive problems. Using them allowed me to streamline the process of creating different components within our web application while also enhancing code reusability to solve similar types of issues. For example, I heavily relied on the Factory pattern, especially since many page components required repetitive coding. The processes for adding/listing a recipe or ingredient in our Toaster Eats project mirror each other and share similar features. Following the scheme of this design pattern was effective since it allowed me to apply it to other pages with similar attributes and maintain consistency throughout the application.