Reflection on ICS 314 and The Final Project

18 Dec 2019

What I Have Learned

ICS 314 has beed a wild ride throughout the semester. Going through all types of twists and turns, I was able to gain a lot of experience on what it is like working on a software project. There may have been a lot of conflicts (including merging files), but each task was able to show me what I am capable of as a software engineer. I was able to learn many different techniques and methods such as React, Javascript, and Meteor to be able to create an application (albeit, an incomplete one). I was not only able to learn many ways on how to code, but I was also able to improve with my already existing repertoire and gain experience on what it is like to work on a big project along with other people.

Manage, manage, manage!

The final project for ICS 314 was quite a doozy, having to meet the constant deadline presented to us (although to be fair, we put ourselves in that last second scenario). It is important that you make sure that not only are you on task, but to ensure that your group memebers are also contributing. Being able to establish a schedule and assigning tasks to your memebers can be take up a lot of thought sometimes. It can be quite a task as you must evaluate everyone’s strength and weakness in order to achieve optimal output. Not only that, you must be able to be willing to take one for the team here and there. Like in some scenarios, one of your group memebers are unable to complete a task for the project, so either you or another memeber must be able to pick up for him. Although, it can be quite annoying when you have to constantly pick up on things for others. During our project, we had to work with one less memeber nearly the whole time.

Importance of Coding Standards and Ethics

The biggest thing that I think every group working on any type of programming project is to establish the standards one how things should be done. What I mean by this is figure out how you want to structure your application and how you want your code to be organized. Funny enough, making sure that you and your group members are on the same page in terms of how to code was just as difficult as the actual coding. This is because, just like our files conflicting, each memeber had a unique style of coding, making it difficult for us to understand what each other’s work is doing. Establishing universal variable names are probably one of, if not the most important things to get sorted out before starting on a project. It was quite annoying having to go through many APIs to see the fields of a collection, even though the collection should have some relation to already existing ones.

Testing and Troubleshooting

The testing phase can be one of two things; a great accomplishment, or a massive heartbreaker. Basically, your code either works or it does not. More than not, you will run into problems when running your app, resulting in you having to go through the troubleshooting phase. You will explore every nook and cranny of each part of your code where you think the problem is occuring. It can take hours, or even days, but when you finally found what you think is the problem, it turns out not to be, and you repeat the process again. However, when you do find your solution, it is nice to give yourself a pat on the back here and there. However, there are some things where even you cannot spot on your own. In this case, you need to be able to get community feedback. Not only does it make the troublshooting and testing process faster, they are even able to give you feedback on your design choices as well.

Applications Outside of Web Designing

Many of these skills were used in a software engineering environment, these can be easily applicable towards any other project. Although coding is not as relevant in many other fields, being able to manage and handle a project is. The whole process os assigning members a task, establishing standards, and testing can be relevant in other collaberative fields. One such example would be music performances. Not only do you need to be able to hire the correct people, you must be able to assign roles to your performers, whether one person will take the lead or be a supporter. You have to make sure that your performers agree on how a song should be performed such as it being upbeat, slow, or even having a dynamic tempo. Finally, just like testing to your code until it works, music performers must practice their parts until they get it right.

Overall Evaluation

The ICS 314 course was a good experience when being able to collaborate with others to create a cool app. However, If I were to give one piece of advice, it would be to choose your group memebers wisely. You want people that you can rely on throughout a whole project, but at the same time, you do not want to lose their trust in you.