Understanding Software Engineering Through Practice

17 Dec 2025

Introduction

When going through ICS 314, I learned that the course itself was not just about understanding how just to build a web application from the ground up. But instead, I gain an understanding of core principles in software engineering. Although the course focused on web technologies and how to use these tools, I was able to practice with them to gain a broader concept rather than focusing on completing them as the main objective. Through using these tools in the final project and WODs, I learned how professional software developers plan, organize, and maintain their code.

Agile Project Management and IDPM

Agile Project Management is an approach that emphasizes ideas of flexiablity, collaboration, and iertative progess instead of inflixable planning. Throughout the course, we practiced Issue Driven Project Management or IDPM, where we work to organize clearly defined issues with specific requirements we want to complete. This idea is not just limited to web applications and it could be applied to other different types of projects like desktop software to team projects, because it supports transparency, accountability, and adaptability.

Configuration Management

In ICS 314, a major concept that I kept to heart throughout the assignments was configuration management, which helps to control and track changes to within the code. During this course, we practiced configuration management using coding standards like ESLint, GitHub, and version control. These exercises of using these tools have helped me ensure consistency and reliability across assignments, and I believe it is essential to learn for all types of software development.  

Design Patterns

When learning about design patterns in ICS 314, I came to understand that design patterns are used to help solve common software design issues in the code. Patterns like Model-View-Controller help organize,  separate responsibilities, and improve maintainability within the code. These patterns are widely used throughout many software systems and can help developers communicate and structure solutions more effectively.

Conclusion

In all, ICS 314 has taught me various key concepts, and that software engineering is more than writing functional code. It involves planning, collaboration, structure, and long-term thinking. Concepts like IDMP, agile Project Management, configuration management, and design patterns will remain useful for me to use across many different software projects beyond this course and web development.