My Experience In An Upper Level Software Development Class

20 Dec 2024

Getting Back Into the Swing of Things

2 years ago I took ICS 314 - Software Engineering I at the University of Hawaii at Manoa, where we learned about web application development and integrating front end Javascript and HTML with backend MongoDB. Since then…I haven’t touched any of this. Besides the numerous upper division computer science courses I needed to complete to finish my degree, sacrificing an entire semester for the National Guard, and just trying to find happiness and purpose in life, I let all the knowledge I gained in ICS 314 decay to near nothing. So when I saw ICS 414 was available, I decided to throw myself back into the deep end and see if I could swim.

I walked into the class with little confidence and much apprehension. I wasn’t concerned with getting a good grade. No, far from it. My biggest worry was that I would drag my team down and contribute little. I knew that I would have to really push myself to be a solid team member and make meaningful commits to our project. I was fortunate that I had understanding team members and that we all tried our best to get this project done. There was a multitude of things that I learned or that I wish I could have done better, but here are the main things that I took away from this class.

Communication

We unfortunately lost a few team members early on due to health issues or dropping the course. But the remaining members picked up from where they left off and we continued working. A large part of our success stems from our communication. We had a Discord server where we could talk about the project and ask for help/advice. We used Github to create milestones with issues that we were working on to keep us organized. Every Monday, we had a sync where we brought up progress, issues, and plans. If at any time we were unable to make progress on something or had a real life emergency come up, we were in constant communication so we knew where we needed to help out. It was all thanks to this communication that I feel we did as well as we did. This is something I will definitely bring with me to future projects.

Pick A Section Of The Project And Commit Yourself To It

I chose to work on accounts for our project. Things such as creating accounts, changing roles, user settings, and integrating the various databases with the accounts database. By focusing only on this, I became a subject matter expert on all things account related within our project. I was able to quickly and effectively help people when they had issues with accounts or wanted to add some feature that required integration with the accounts database. I was also able to make sure that the various pages and methods were standardized, so it was easy for another person to jump in and understand.

The lack of individual focus on sections of the project caused a few issues that were difficult to fix. One person would create a page and methods for a type of financial worksheet and another would create another page with entirely different methods for a different worksheet. This lack of standardization made it difficult to come up with ways to connect the accounts databases with the financial worksheets. Each worksheet required its own unique way of connecting to the accounts database, which consumed a lot of time and caused many headaches. This is something that I will definitely keep in mind for future projects.

Database Management and Integration

I feel so much more confident with using MongoDB and creating a front end that can create, modify, and store data types in the MongoDB database. It took a few weeks to understand what was going on and how to actually get commits to stick. But once I got it, I was able to fix broken methods and create several more. For instance, we had several roles that needed varying degrees of access to the database. I was able to create methods that checked for each role’s permissions, gave them the appropriate level of access, and fixed the older methods that didn’t have this check. This allowed us to have a more secure accounts database.

Was It Worth The Struggle?

I’d say so. I lost many hours of sleep, more money than I would like to admit on coffee and headache medication, and so much time raging over my lack of understanding. But in the end, it was definitely worth it. This class taught me not only the technical, coding and database side of things, but the personal side as well. It’s hard to teach someone how to be an effective team member in college. You never know what type of people you’re going to get paired with. Sometimes, you get absolute prodigies in the field. Other times, you end up with people like me who are way out of their depth. Learning how to interact and work with people of varying levels of social and technical proficiency is something that is required to be a good team member. I believe that this is the most important thing I learned from this class. I’m glad I took this class and I will be sure to take what I learned from here and apply it to the future.