Engineering for the Real World: What ICS 314 Taught Me

16 May 2025

ICS 314, Software Engineering, is more than just a web development course—it’s a deep dive into the principles and practices of modern software engineering. Through hands-on assignments and a team-based final project, we explored essential concepts such as Agile Project Management and Configuration Management. The course emphasized not only technical growth but also professional development, helping us build practical skills with industry-standard tools like Git, TypeScript, JavaScript, and various UI frameworks. More than learning how to code, we learned how to engineer reliable, maintainable, and collaborative software systems.

Agile Project Management (IDPM)

One of the core concepts I took away from this course was Agile Project Management, specifically a style known as Issue Driven Project Management (IDPM). Agile Project Management emphasizes iterative progress, team collaboration, adaptability to change, and regular feedback. In our group project, we used GitHub Issues to assign and manage tasks, allowing us to distribute the workload efficiently. Every commit and pull request was tied to a specific issue, keeping our development process organized and traceable. This approach encouraged us to break down large problems into smaller, manageable tasks, which made coding the website more efficient and improved overall team coordination. I can easily see myself using IDPM in the workforce, especially in collaborative environments. GitHub Issues is a powerful tool for tracking tasks, and the workflow of branching, committing regularly, and reviewing pull requests helped reduce miscommunication and kept our team focused.

Configuration Management

Another critical concept I valued in this course was Configuration Management. This practice involves systematically managing changes to a software system to ensure consistency, stability, and reliability over time. In ICS 314, we used Git and GitHub extensively—not just for storing code, but for version control, branch management, and effective team collaboration. We also worked with .env files to handle environment-specific configurations, such as database credentials and API keys, which helped keep sensitive information secure and our application flexible across different environments. Proper configuration management allowed our entire team to work on the same project simultaneously without accidentally overwriting each other’s changes or breaking the system. Beyond this course, I now understand how essential configuration management is in any professional software project—whether it’s building websites, setting up databases, or deploying applications in production. It provides a solid foundation for maintaining code integrity and supporting long-term project scalability.

In conclusion, ICS 314 has shown me that software engineering goes far beyond just writing code—it’s about designing systems that are maintainable, scalable, and collaborative. Through concepts like Agile Project Management and Configuration Management, I learned how to work effectively within a team and manage complex projects with structure and clarity. This course has helped me build a strong foundation in both technical tools and the software engineering mindset, and I now feel more confident and prepared to contribute to real-world software development projects.

ChatGPT was used to refine the grammar and the clarity of my writing, however, all ideas and contents are entirely my own.