ICS 414, Software Engineering II, was one of the most challenging and eye opening courses I have taken in the computer science program. The class focused on long term, team based software development, with students divided into three teams to build a full web application over the course of the semester. Each team worked on a pantry management app, and my team’s project was called Pantry Pal. While the technical side of the course was demanding, the most important lessons came from working on a large project with a team over an extended period of time.
Pantry Pal was designed to help users organize pantry items, manage shopping lists, and browse recipes. The application aimed to solve everyday organization problems through a simple and accessible web interface. Building a complete product from planning through deployment gave me a clearer understanding of how much coordination and effort is required to deliver a usable application.
From a technical perspective, the course gave me hands on experience with modern web development tools and workflows. My team built Pantry Pal using Next.js and React on the frontend, with Bootstrap 5 for styling and a PostgreSQL database managed through Prisma on the backend. We deployed the application to Vercel, which introduced real world challenges related to environment variables and production builds. Working with this stack strengthened my full stack development skills and helped me become more comfortable working in a large codebase.
The most difficult part of ICS 414 was dealing with team dynamics. This class was a rude awakening to what working on a long term group project can be like when communication is limited. My team struggled to stay in consistent contact throughout the semester, which often made coordination difficult. Some team members contributed very little work, which resulted in an uneven workload and increased pressure on the rest of the team.
These challenges became especially clear during milestone presentations. Toward the end of the semester, only three people, including myself, were consistently showing up to present our progress. In one milestone presentation, only one other teammate presented with me and arrived late after the presentation had already ended. This was frustrating, especially considering the effort required to prepare and meet deadlines. At the same time, these situations pushed me to take greater responsibility and stay committed to the project.
Despite the difficulties, ICS 414 was a valuable learning experience. The course taught me that technical ability alone is not enough to ensure success in a team based software project. Communication and accountability play a major role in keeping a project moving forward. I learned how to adapt, remain productive under stress, and continue contributing even when teamwork was challenging.
Overall, ICS 414 helped prepare me for real world software engineering. The course showed me that uneven workloads and poor communication are common issues in long term projects. While the experience was not always enjoyable, it helped me grow as a developer and better understand the realities of working on a professional software team.