ICS 414 Reflection: As a Volunteer

12 May 2022

Overview: ohana-volunteer

Software engineering is a topic that encourages students to apply their skills in real work, to solve real problems, and to make real changes. This semester we were working with the VolunteerAlly Team to improve their website that helps pair volunteers with organizations in need of service. The whole project development was split into 6 milestones, and 6 to 7 students were assigned to a group. With the knowledge from ICS 314, I had a great experience building a functional application with my group - ohana-volunteer.

Preparation and Pressure

To be honest, I never expected to begin a real project right after the first class of the semester. ICS 414 did not have any lectures, exams, or assignments like ICS 314 did, and all we needed to do was to fulfill the client’s expectations as much as possible. I felt so stressed and nervous at the beginning, as it had been one year since I took 314. I took a lot of time to retrieve my knowledge of Javascript, Meteor, and Semantic and try to understand the template, which was definitely different from the 314 meteor template. Inserting base collections, extracting roles, and using components as constants/functions instead of classes were all new to me. I didn’t know where to begin and nearly wanted to give up.

Pressure Pushes Learning

Fortunately, pressure made me learn fast. My first issue was building the sign-up page for volunteers. There were initially some bugs with the template, which I struggled with for a few nights. Fixing bugs was a painful process, but it also pushed me to swim forth and back through multiple files to quickly understand the code. That was when I actually knew how base collection methods worked. My main contribution to this project was a search page containing a filter form and a map. To get the filter form with multiple conditions to work, I looked through MongoDB documents hundreds of times and applied hundreds of tests. One interesting fact I discovered is that Mongo DB does not support on the client side. As a result, I didn’t find a good way to implement search functionality by using mongoDB like I did to implement filtering and sorting. The map was another big challenge, as I had never learned anything about maps. Displaying a map with all the markers and corresponding pop-ups was ideal and I really wanted to achieve that. It was not easy, and it took me a few milestones to improve and perfect the map. By initializing the opportunity collection, I had to take a closer look at the scheme and data structure, and then I was able to establish a clear picture of how the collection worked and interacted with other pages. In other words, when I was writing my codes, I was also understanding other pre-written codes, which helped me a lot to awaken my memory from 314 and improve my skills.

Learning with a Team

Working with a great team made the process easier and more effective. Everyone was in charge of a major part of the application, which made individual work integration easier and reduced conflicts. From my team, I learned how to extract the collection scheme, how to implement new packets, how to enhance the UI design, how to deliver some functionalities in a more effective way, etc. All of the discussions and reviews helped, and all of the time was worthwhile. Despite some of the tasks remaining completed when it came to the end, we were at least successful in overcoming most of the challenges.

Conclusion

I ended up surviving the pressure and enjoying this class. That was not bad.