Final Thoughts

13 May 2025

More bang for my buck

My first impression of a software engineering course was that it would be just like any other computer science class. I expected to encounter a new language and build projects with an emphasis on website design. At the core, ICS 314 taught me about the key concepts of software engineering, demanding frequent training with HTML and Bootstrap, among many other tools.

However, there exists so much more to these practices than just their relation to software engineering. Throughout the semester, I learned to adjust to quickly changing projects, work with a team, and how to effectively troubleshoot. I quickly realized that for software engineers, writing code is only a fraction of the job. Quick thinking, communication, and research, skills although not directly related to software engineering are just as important.

Coding Standards

Essentially, coding standards are a set of guidelines followed by developers when creating code. They exist to make everyone’s lives just a little bit easier, ensuring that code is understandable and uniform. To maintain coding standards, ESLint and Prettier were my best friends. They caught my mistakes, minor and major. Whether there was a stray space and newline or an unused function, ESLint was there to notify me. Even if the code functioned properly, if any squiggly red line lay across the code editor, it wouldn’t pass.

For the final project, I occasionally ran into issues where our project would not deploy to Vercel, the hosting platform we used. While the code would function when I tested locally, there existed some ESLint error that prevented deployment. It also took precedence when working with teammates to figure out what went wrong. We all work differently so having something to enforce consistency made it easier to review code. One example would be the line max-length rule. Although somewhat trivial with wrapping, the max-length rule that limits a line of code to be within a certain amount of characters made what would have been confusing code into something that is easily comprehensible.

Overall, following consistent coding styles emphasized the importance of teamwork and maintainability. Even outside of the scope of software engineering, work that is easy to understand allows for better collaboration and efficient revisions, both essential for a successful project.

Design Patterns

If you knew of an optimal solution to a problem, would you spend extra time trying to come up with a different solution, or would you use the solution you already know? Design patterns are exactly that: blueprints of solutions to common software design problems. They are not direct answers but rather molds meant to be customized. Why make life harder when it doesn’t need to be?

For ICS 314, we were encouraged to use a Next.js application template for all our web applications. The template contained features that we modified according to the demands of the web app we were working on. Unlike an answer sheet, if we copy-pasted the code directly, it would not immediately meet the requirements. More often than not, they would need some tinkering. For the final project, we used the Next.js template and it made creating some of the components easy. Sometimes the hardest part of any task is the first step. Having the template to start made working on the first set of tasks simple and kickstarted our progress.

It was easy to use the template to refer back to when creating our components and proved to be a powerful way to learn. The idea of a blueprint that can be applied and modified to adapt to a wide variety of requests can exist beyond the range of software engineering. It provides support and guidance to those just starting. Similar to a plain cookie recipe that can be decorated and changed in every way, design patterns offer structure without any creative limits. The importance lies in knowing where to begin, rather than always starting from scratch.

Final thoughts

This software engineering course taught me more than just new languages and fundamental principles. My favorite takeaway was reinforcing the ability to explore and search for explanations to problems. With the fast pace of the course I learned to adapt quickly and how to troubleshoot. Coding standards emphasized the importance of attention to detail when working, especially with a team. Design patterns reinforced the need for careful planning, regardless of the context. Overall, I gained not just technical skills, but a wide range of skills that can be applied in more than just coding.