ICS 414

10 May 2024

voluntree logo

Introduction

During the spring 2024 semester, in (ICS-414) Software engineering II. A class full of college students was split into several groups all to tackle the same problem for the same customer. For many of us it was our first time truly interfacing with a client or working on a group project of such a scope or nature. The average group size was 8 members, whereas in the department most group projects were limited to groups containing 4 individuals. This semester the project was to help develop ideas for a volunteer matching program called Voluntree in Meteor and react. Although competition was not the goal, as teams we all had to work together to satisfy our customers. In this essay we will explore several of the unique features of such a project. # This time it is real. Working on an actual project for an actual client is an indispensable experience. It provides certain challenges and opportunities, that are not found when one is working on a passion project or a side project, as ultimately you are accountable to your customer. In the end It is not your vision that is primary, rather the satisfaction of the people that you are working for. In addition to this sometimes your customer may have ideas that are difficult and or impossible. It is very important to be able to set realistic expectations, and also have open and clear communication so as to avoid any potential for miscommunication or misunderstanding. A lot of time can be wasted by implementing features based on misinterpretations of a clients desire.

Setting Expectations

Much if not all of the learning from this course was experiential. One clear instance of this is how our professor demonstrated the importance of, and how to properly set expectations with the customer. This was extremely helpful to me as I tend to be overly optimistic, and overcommit, when it comes to project plans. During our first customer meeting our professor assured the customer that her feature list was significant, and led her to understand the limits to our capabilities as students. In the software development community there is a quote that goes, I didn’t start this project because it was easy, I started it because I thought it would be easy. I am now of the belief that it is better to under promise and over deliver, than to fall short. In general setting realistic expectations Is crucial for strong customer relationships, mental health, and healthy work environments.

Stronger code.

In earlier software engineering courses at the University of Hawaii, students are exposed to the Meteor, and Meteor react framework. This being said the version of the framework that these earlier courses teach is not production grade. ICS 414 exposed the students to a new version of the template we used in earlier classes, that addresses some of the security vulnerabilities. Members of each team were provided with an overview of the differences between the two templates, and were subsequently compelled to create a masterpiece even in spite of limited and recent linguistic exposure. This is great experience as often when working on real world applications you may not even know the programming language and have to become familiar with them quickly.

Teamwork and group dynamics.

Another complexity introduced in the course is that of team management. naturally within any team people will take different roles and organize themselves where they find they can best serve the team. Often times these roles are based on an individual’s skillset, and are not well-defined. This being said even these nebulous and flexible team hierarchies are usually very palpable. Some individuals in our group were better suited for database design, while others did their best to function primarily on the UI. Other members took more of a leadership role and shaped the overall feel for our project. Each member contributes as they can. Another interesting complexity is that sometimes features that you really like, and or have worked on do not make it to production. This too is ok, and it is important to remain objective about the project scope and committed to the customers wishes..

Scope management with IDPM

It is very easy to come up with so many great ideas, that they become overwhelming. In the case of ICS 414 the concept of issue driven project management truly helps to organize and put a limit to scope creep. IDPM is a software engineering paradigm where each small tasks are represented as issues. These tasks are then added to sprints known as milestones. Once a milestone has been deliberated on new issues will generally not be added until all prior work has been completed. This prevents premature scope creep, and sets a defined checkpoint, by which your software should be at a certain state.

Conclusion

In conclusion ICS-414 and the software engineering courses in general at U.H. Manoa are both enjoyable, and indispensable parts of the curriculum. They help to create well rounded programmers, which have a taste of near real world experience. They help to teach project management, organization, and good habits. ICS-414 is recommended for all students considering a career in software engineering.