Software Engineering Part II

07 May 2022

ICS 414, Software Engineering II or should I Say ICS 314, Software Engineering I without the training wheels, is one of the most stressful classes I had ever taken as an undergrad. So why did I even bother taking ICS 414? Surely ICS 314, should have been enough to help me get that dream job at Google or maybe even at Amazon. The answer is quite simple, more experience. Yes, I learned the very basics of what it’s like to be a software developer by building our own prototype website in ICS 314. But what would be like to build an actual website from an actual requesting client. With that being said, I welcome you to my experience of taking ICS 414, Software Engineering II.

At the start of the semester, it was just like what I had anticipated for this class. We were immediately assigned to teams and then given a synopsis of what we will be building for our client. What I did not expect was, we will get the chance to meeting up virtually with the client to interact and discuss with them on what they want for their website. Nor was I expecting on how difficult this class would become and far more rigorous than ICS 314. The client requested a simple website that helps people to easily find volunteers they would be interested in, applying to volunteer for an organization of their interest, and to keep track of their volunteering activities. And, to help the many volunteering organizations that is associated with the client to upload or edit events and to manage the volunteers volunteering for their events. After meeting up with the team and introduced ourselves, we immediately started brainstorming. But there is just one problem, most of what I had learned and skills I had attained from ICS 314 had been flushed out of my memory after a long summer vacation. This is just to show, how unprepared I was for class. And I was not the only one, half of my team members were also in the same boat with me.

Already, we were not in a good start, luckily, a couple of my team members were able to retain most of what they remembered from ICS 314, and they lead us for the first couple milestones. Eventually I was able to remember most of the stuff from ICS 314 within 2 weeks. What really helped was the fact that we will be using the same frameworks to build our website, Meteor React, MongoDB, and Sematic UI React. The only change was, we were to use the secured Meteor React template rather than the unsecured one. The secured Meteor Template required us to use the abstract Base Collection class to ensure that we have full control of defining, updating, and removing collections from the MongoDB. At first, I did not like this change, because I was already accustomed to how we usually build our applications from ICS 314. But eventually, I started to appreciate this change because it helped us to organize and manage our collections very easily and it was easy to get accustomed to this new change. Now, my team and I were on our way to building an awesome website, or so I thought.

With each passing Milestones, the class became more and more intense. We were given about 3 months to get at least what the client wanted in their website. We did just that, but just not at the level I had hoped we would deliver. And now back to the reason why the class was very stressful. After each Milestone, I went from doing at most 2-3 issues per millstone to doing at least 4 or more issues per milestone and top of that, worrying about my other classes. And the number of issues I had to do only inflated ever so slightly as we come closer to our final deadline. From the start of the semester, I had hoped to stay away from working on the back-end stuff, unfortunately, I was forced to step up and work on both the front and back end. For each passing Milestone, we began to have members that are unavailable to help with implementing the stuff we needed for each milestone. As a result, we had to keep pushing the stuff we wanted to implement back to the next milestone. And when we no longer have enough time, we would have to scrap it completely or sometimes redesign our initial ideas to something more manageable with the remaining time we had left. But implementing the core features and fixing any bugs was our top priority. Our result was, we got a working website the meets the minimum requirements of the client, however it would have been great if we had a little more time and manpower to improve on the application that meets beyond the client’s expectation.

So, what can I take from this class? For starters, I was under the impression that I had learned just enough on what it is like to be a software developer from ICS 314, and boy was I wrong. There is still so much more to learn and so much more to experience. For starters, I had experience what it would be like to work on an actual website from a requesting client. I had learned to step up and move out of my comfort zone. Also taking this class helped me retain most of the very basics I had learn from ICS 314, such as Project Management, learning to create website in Meteor React, and the importance of reviewing each other’s code. But most importantly, I was able to test my time management skill. Time management was key here to get my issues done for each milestone and to also keep up with my other classes. Sadly, I also had to experience if things did not go according to plan and what happens when we have team members that are unavailable especially when we needed them most. So, what did I really take from this class? The answer is a taste of a real-world experience of what its really like to be a Software-Engineer.