This semester, I took my second Software Engineering class. This class focused more on applying the skills we previously learned to a real world scenario. We were divided into teams and given a client to create a product for based on their specs. Since the majority of us were coming fresh from our previous Software Engineering class, we already had a good understanding of the technologies that we would be using, including Meteor, React, and Bootstrap. However, this type of course was also very new to me, since up until now I’ve been more used to the standard layout of lectures, homeworks, and exams. On one hand, having little to no work outside of our main project was nice, since I could take a break from having to remember all of the various assignments and studying for exams. On the other hand, this also meant that I had to effectively collaborate with my team and manage my own time so that I would be able to get my work done before the milestone meetings.
Our task involved creating an office management space for our ICS department. This included keeping track of information like faculty room assignments, phone numbers, and data jacks. The client wanted an easy way to view and edit these resources to avoid any confusion. Though the goal was in sight, actually reaching it required a lot of trial and error. One suggested idea for tackling this problem involved having each team member work on issues that they did not have much experience with. For example, I generally prefer to work on back-end since I can’t really get a feel for UI design. So I would therefore want to work on issues related to UI, (this is a learning opportunity after all). However, we ultimately decided that it would be easiest if each person chose a component of the application and did all the work related to it. So if I was assigned to the profile page, I would design the profile page and make sure that the correct information is being retrieved from the database. This would prevent members from jumping between each feature, while also allowing us to work on both front-end and back-end.
Once the approach was determined, the next hurdle involved executing our ideas and creating something tangible. This took up the majority of the semester, and I was able to learn a lot during this process. Our team decided on issues together at the beginning of each milestone, and we then assigned ourselves to the issues that we could work on during that time period. At the end of the milestone, we would receive feedback at the milestone presentation and create new issues from there. Overall, I think this process worked out very well for us, and allowed us to update our goals based on instructor and client feedback. Additionally, even though issues were generally assigned to one person, I often asked my other members for assistance whenever I was stuck. For example, if I wasn’t sure about a specific layout for a page I could ask another member who has more experience with UI design for their feedback. This project also allowed me to dive deeper into topics we only briefly went over in our previous class. I did more research on meteor methods and creating custom methods that weren’t provided by the template. In the end, I definitely walked away with more experience compared to when we first started.
All projects come with setbacks. When we first started working on this project, the goal wasn’t fully clear to us yet. Therefore, we started creating a room requests system where users could request a specific ICS room for usage. However, after meeting for the first customer milestone we realized that this wasn’t one of the main priorities for the client. After getting this clarification we had to readjust our tasks so that we would instead focus on other features. While this wasn’t a huge setback, it did show me the importance of pivoting when necessary to avoid getting tunnel vision. It also helped me understand that when working with clients, it’s more important to be flexible and accept feedback instead of stubbornly sticking to the original plan.
Overall, this class was a new learning experience for me, and taught me in a way that was different than my other classes this semester. As I get ready to graduate and start working, I’ll be sure to remember the skills I’ve developed during these past four years.