Reflecting on ICS 414

12 May 2022

Project Overview

ICS 414: Software Engineering II is the continuation of ICS 314: Software Engineering I where students participate in a team-oriented software-implementation of a project and develop skills in project management, quality and productivity control, testing and validation, and team management. In my experience, each team was tasked with creating their own implementation of a real customer’s website. The customer for this project was Volunteer Ally, a nonprofit organization that aims to connect volunteers with charitable organizations.

My team, Rainbow Geeks, developed our implementation of the Volunteer Ally website using Semantic UI and Meteor as our user interface and web application frameworks, respectively, as well as GitHub to employ project hosting and configuration management. In our attempt, we emphasized the separation of the website into three different user roles: volunteers, organizations, and administrators. In other words, each user role gets access to specific content of the website to reduce administrative overhead and maximize efficiency. By the end of the course, my team and I did not complete a full implementation of our website due to time constraints and a number of other factors. Regardless, there are lessons to take away from this experience.

Takeaways

There are a number of lessons I’ve learned after working on a software engineering project with a relatively large team and delivering it to a real-life customer. I’ve learned that with large teams, communication is even more important and crucial to the success of the team. Especially as the size of the team gets larger, making every voice heard becomes increasingly difficult. In addition, I’ve also learned that every decision does not need to be debated so it is up to the team’s leader to make the final call. Therefore, the team leader needs to find a balance between making sure everyone feels included while not sacrificing efficiency.

Efficient communication with a customer is also something I’ve learned and observed throughout this course. It is important that one asks the right questions to find out what the customer actually wants. At the same time, one should be honest with what they can provide to a customer to avoid making false promises. Maintaining professionalism with the customer is another lesson that pairs well with efficient communication.

The previously mentioned lessons are what I consider as necessary to be successful in the software engineering field as well as with any team project. Thus, I am grateful that I have taken this course and underwent this experience as I’m sure it has set up wonderfully for the future.