My final semester at the University of Hawaii at Mānoa has come to an end. Though busy, stressful, and overwhelming, the general takeaways I had during this time felt gratifying and exhilarating. It provided me with valuable experiences and insights into real-world applications, along with the capabilities needed for a software developer in a professional setting. Along the way, taking ICS 414 was instrumental in continuing my knowledge expansion into the skills needed for improving and having better software engineering practices.
The opportunity to work on a project for Spire Hawaii LLP as a client and having the semester dedicated to developing a platform for their business was an eye-opening experience. Although I’ve had previous experiences with project milestones from the past, having customer-focused ones where we present our progress and the features our team had implemented up to that point to them was new to me. Having this foundational process cemented into our project window offered an aspect that I initially anticipated but eventually overlooked. Altogether, this gave me a glimpse into potential future endeavors where other industry positions require this same management procedure. It emphasized the significance of meeting deadlines and finishing different aspects of the project by coordinating with team members to make sure that everything is in order. This involves making sure that responsibilities have been properly assigned, members are equally contributing, and tasks being complete.
Learning established project management methodologies helped our team get the issues we needed to tackle in order. For one, using GitHub projects as our team’s Kanban Board for Issue Driven Project Management (IDPM) and having weekly code reviews for our project components was immensely useful. It led us to ensuring our project had features functioning properly and as intended. Similar to my experience from ICS 314, our team used an Agile Project Management methodology to ensure that our workflow was efficient and that our tasks were delivered on time for milestones.
Additionally, we created new branches for each unique issue or feature that we planned to implement into our project. This was to ensure that there would be no merge conflicts or underlying problems with design. The code reviews also allowed for us to be our feedback loop to catch any complications for debugging, analyzing coding standards, and seeing what could be improved. The customer milestone meetings for showcasing our project demos provided us with feedback to re-prioritize our backlog of issues. Ultimately, I found that the demos were vastly helpful as it allowed us to adapt and plan ahead for our responsibilities to align with what the client wants.
Even with these measures, one major issue our team encountered during the semester was our lack of transparency and communication between members. This resulted in a lopsided level of contributions, with some members working on more issues than others. During the start of the semester, I found that our team as a whole was making progress at a good pace since each person took on different responsibilities and assigned themselves issues from our project board. We all worked on different pages of our application to make sure that work was split up evenly. As a result, early features were timely implemented for our milestones and meetings.
But as the months rolled on, contributions came by inconsistently from myself and other members. In large part, I struggled due to the heavy load of work I had to tackle during the semester from six classes, including other project-based courses I was taking. As more work and issues piled up for several classes, I often found myself pressed for time to keep myself aligned with all the tasks I had to complete. Presumably, other members may have similarly felt overwhelmed. In retrospect, having better communication with the team would have helped us deliver a more polished product. It would have allowed us to re-evaluate our priorities and redistribute tasks according to the pace we were progressing at. In the end, we were unfortunately not able to deliver a complete product that we were satisfied with at the end of the semester.
The experiences from the course, project, learnings, challenges, and the semester as a whole solidified what capabilities I got from previous classes. Going from learning essential programming language logic and using UI frameworks to create web applications to working on developing a platform for a client was a beneficial experience. I learned more valuable insights into the importance of project organization and team communication to the overall success of a project’s lifecycle.
Also, having the project demos for client feedback gave me experience into what the industry is looking for from professionals within a real-world environment. Overall, this course and the semester gave me a concrete framework and notable lessons that I learned from given a timeline for project delivery. It taught me the significance of balancing timeliness, team communication, client satisfaction and having project discipline to better equip me in tackling future challenges.