As a part of my studies in pursuit of a BS in Informational and Computer Sciences, during the fall of 2017, I enrolled in ICS 314 (Software Engineering 1). The capstone (final project) for this class was a group project. For this culminating project, my group chose to design a web application that would allow gamers from the University of Hawaii community to find other like-minded people, to hook up and play games. We called this website, ManoaGaming1.
This web application used open source platform called Meteor. To begin our project, we based it upon a basic networking template that we were provided called “Bowfolios”. As part of our frontend rendering system (what the users of our site will see and interact with), we used Blaze for the interface. On the back end (where the code and memory that helps everything to run properly is, and what the users do not see), we used a Mongo database. To tie them together, we used monitoring tool called Kadira.
Within this groups project, I had two major roles. One of the roles was chosen and the other one was thrust upon me. In an attempt to split the project responsibilities, I chose to work on the Profile Page. On the other hand, due to our group having an interesting composition where three of the members requested to work together and a fourth member who was randomly assigned and also to complicate matters two out of the four members of the groups were extremely quiet, I some how got stuck in the role of the Team Manager.
Within our web application, after the user first logged in, they would automatically be directed to the local profile page. The profile page was to be the first real content page of our application that the users would see. With this in mind, I designed a profile page which would allow the users of the site to be able to create a local profile that would include their contact information and their interest and gaming habits. Initially, I believed that I had the entire page programmed and working. Unfortunately, it is at that point where I encountered an error with our site. The error was that I could no longer login. After many hours of trouble shooting, I was still unable to determine the cause of this error. Moreover, because it did not appear that any of the other members of our group were having problems with this error, I was led to believe that the error was within my branch (the work I had done). Because of this, I began my work all over again from the beginning but testing out the results as I finished each section. This time, since I had been testing along the way and everything was still working, I pushed (uploaded) my commit and merged it to the master branch (I sent it to everyone to use as a finished product.) Unfortunately, the next day two of my group member messaged me that after using my supposedly finished project, they were now having the login problems and because I was initially the one who encountered this issue and because I had just sent out my project for everyone to use, I was once again lead to believe that I had somehow crashed our entire site. I once again attempted to trouble shoot, I eventually determined that this error only appeared after resetting the database (when you started from scratch). Even with this new information, my group and I were unable to determine the cause of this issue. We even attempted to see the help of ICS members, but we still had no luck.) In a final attempt to trouble shoot this issue and knowing what set off the problem, I then had the unfortunate task of starting all over and reprogramming each line of code. This was made particularly cumbersome because in order to do this, I needed to restarting our database each time before testing. The worst part about that is that resetting and restarting the database and our application takes around 5 minutes each time. Ironically, after all this time, stress and extra effort, this last attempt at trouble shooting finally turned up what was causing the login error. It was actually a design problem that another group member made to the page and had nothing to do with what I had programmed. We just were not looking there! If nothing else, at least I had now finished the profile page and it was working! On the other hand, this really ensured that I understood the parts of the application that I was working on.
On the other side of this project was a Looking For Games page in which the user could then post and/or seek games using a certain criteria and then meet up with others with similar interest.
As mentioned above, our groups was formed by a combination of different factors. One of the results of this is that I was the only person in the group that had some prior signification working relationship with all the other members. This combined with the fact that half of our group was really quiet, lead me to unintentionally taking the group lead in this project. One of the more difficult roles that I had to do as the group lead was in group communication. Initially, our group was meeting regularly in person and this help to facilitate working together. This all changed after our first milestone when we found out there was some discrepancies in the way in which we were being graded. This discrepancy made it significantly harder for us to collaborate because we needed to prove that each member of the group had a different role and that each member needed unique project issues that they were working on. Due to the fact that we each were working on individual projects and issues, we stopped meeting together as often. This was not an issue until we needed to submit our work. Even though we were working individually on our project, many parts were interrelated. Additionally, in order to deploy our project on the web, we needed the to wait until all parts were done. As one can imagine, this made group communication vital in the last parts of this capstone.
In many group projects with multiple members (three or more), one of the hardest things to do is to ensure that all the members are pulling their own weight and that the work is evenly distributed. But surprisingly, one of the easiest parts of the this group project. Even though our group was assigned to us with some randomness, we ended up working well together. Each member had complementary strengths that allowed our group to produce our finished product. One member was really strong with the web design skills that focused on the programming aspect, while another member’s strength was in web design with a focus more along the lines of digital media and graphics. One of our members was strong in databases and another member was great in programming. Most importantly, all the members of our group were quite agreeable and there was no issue in which members disagreed. When one member brought up what they though was a good idea, the other members were more than happy to let that member run with their idea.
The most difficult part of being the Project Manager for our group was in helping to trouble shoot everyone’s problems and ensure that everyone had what they needed to keep moving forward. This included making sure everyone was in constant communication over e-mail, Slack, Discord, and other messaging services. We used them all! Lastly and most importantly, the hardest part was in trying to monitoring all parts of the project to ensure that no little detail fell through the cracks.
Overall, this project was a huge success and I really learned a lot from all of my errors and especially from each one of my group mates. We really worked well together and it was one of the best group experiences that I have had the pleasure to work in. Below is a link to our app’s code: Project Source