A Retrospective Outlook

05 May 2024

A New Branch

An eventful semester in the Spring semester 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 has 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 so far have been immensely insightful, but 314 has stood out in a notable way. For one, 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. With this, I learned about essential concepts that are firmly woven into the fibers of developing software.

Agile Project Management

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.

Design Patterns

The final project taught me a valuable lesson in planning objectives in what I code and how I can maximize efficiency in how to produce the result I aim for. 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 enhancing code reusability to solve similar types of issues. For instance, 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.