The End is Here...

10 May 2024

16 Weeks, Already??

As the semester comes to a close, so does our time in ICS 314. In these 16 weeks, this class has taught me more about software engineering than any class I have ever taken prior. Being able to collaborate as a team, to develop a profound and professional project was an esteemed experience, and was the most hands-on I have been in this major thus far. Throughout these 4 months, we were faced with tumultuous times, learning new languages and frameworks, as we vigorously studied and prepared for the weekly stressful WODs. With the final hours for the semester ticking away, I have nothing but grand things to say about this course, and have developed a multitude of different skills and techniques, thanks to ICS 314.

Don’t Forget to Close the Issue!

Issue Driven Project Management, is a very important tool in the realm of software development. I like to think of issue project management as the process of doing laundry. First, we have the dirty laundry or the stuff we are tasked “to do,” and then we take the necessary steps to wash and dry the laundry (in process workload), and finally we are done. Fresh clean laundry! Issue-driven project management, in a way, is similar to this process. As an issue-driven approach, tasks or “issues” are determined as guidelines for things to do/accomplish in a software development setting. In our case, we utilized an issue-driven approach for our final project. Using Github, we created different checkpoints, from milestones 1-3, which had tasks for the beginning, middle, and end stages of our project. Using a project board, categories of tasks, labeled as “issue-%%” (% indicating the issue number), were placed either in the “to do,” “in progress,” or “done” column, depending on the status of the issue. These issues are planned and determined by our team beforehand, with this project board being used to communicate which issue is being done by which member. This allows all the team members to see who is currently working on or finished a certain task/issue. In this three-step process, similar to doing laundry, people were able to work on multiple tasks of the project at once, without conflicting with one another. But just as Professor Moore would say, “Don’t forget to close the issue!” This management approach was an extremely convenient and efficient way of managing our group of 6 team members, assigning tasks, and completing a project in a very timely manner!

Our Standards as Coders!

Coding standards go hand-in-hand with Issue Driven Project Management and are the very backbone that holds us software engineers in place, as they shape the way we work, in a team-based environment. These standards ensure that every team member follows a specific, pre-determined set of guidelines to guarantee the production of quality, easy-to-understand, and consistent code. Throughout this course, we heavily used ESLint, a community-driven tool that reinforces its own collective set of coding standards, to ensure common and consistently formatted code. At first, ESLint was a complete pain to use for me. ESLint for Javascript reinforces arrow function syntax, and as someone more familiar with Java syntax, this took a little bit to get used to. To go along with this, ESLint was very picky with having extra spaces in unnecessary places, to requiring proper spacing between a letter and parenthesis. Things that I felt at the time to be very niche and annoying. However, this proved worthwhile as it allowed me to get familiar with the syntax, and later when we worked on our team project, with ESLint being used across the board, it was a smooth and easy process as everyone would follow the same coding standard. Coding standards are something I will continue to utilize as I continue my software engineering career, as it is such a wonderful, and powerful tool.

The Final One…

Throughout this course, I have embraced various aspects of software development. I have developed and encountered different tools that I will continue to utilize throughout the future, from effective project management of an issue-driven approach to the quality and consistency of coding with code standards. I have learned about the different types of applications used in web development, such as the frameworks and languages of React, Javascript, Meteor, etc. All in all, ICS 314 has taught me to be a better software developer, as writing code isn’t all there is to creating efficient software. As I delve deeper into the world of being a software engineer, I will remember to bring the tools I have learned along the way, with me!