This past semester of ICS 314 has helped me to grow significantly as a programmer and has exposed me to a variety of useful software engineering tools and practices. I was able to gain proficiency in JavaScript and HTML/CSS; additionally, I also familiarized myself with other libraries that are commonly used, such as React and Bootstrap. Compared to other classes, I feel like I learned a lot of practical skills that will help me in the real world, and I found myself genuinely enjoying coding for the first time in a while. Beyond expanding my skill set, I also learned a lot about other software engineering topics, such as configuration management, coding standards, and agile project management.
Configuration management allows a user to maintain the state of a system over time and ensures that it can perform up to its expectations. Within software engineering, one of the most commonly used tools to accomplish this is Github. It allows us to create local copies of a code repository onto our system and make changes to the program. Github also enables us to create branches and work with multiple copies of the same code. This proves useful if we are trying to implement a specific feature into a project without having to make edits to the master copy. The merge feature in Github is also extremely helpful, as it allows us to compare changes and merge two different copies of a program. Personally, I think it was important for us to learn how to use this tool as it is commonly used in the real world and provides us with an organized way to keep track of changes in our programs. I have no doubt that I will be using Github again in the future both in school and in the workplace.
Coding standards are another important aspect of software engineering, as it sets an industry-wide standard of programming that everyone can follow. This will allow for increased uniformity across different programs, making it easier for any future developers who work on the code. Furthermore, it also can improve a program’s readability and efficiency. For example, it is widely accepted that indentations be used when writing within brackets, and whitespace should be inserted to separate sections of code. Functions should also be utilized for tasks that are repeatedly done within a program to avoid repetitiveness. I think it is important to follow these standards as you will likely be expected to follow them in the real world, and it will make your programs look more professional.
Finally, we learned about agile project management and utilized it when working on our team’s final project. Agile project management utilizes an iterative approach when completing a project. The team can adjust accordingly based on the progress of these individual goals and heavily relies on team collaboration and communication. During the process of working on our final project, we utilized Github issues to clearly define individual goals for the team and to show what still needed to be completed, what was currently being worked on, and what had been finished. Furthermore, we had frequent team meetings to discuss our progress and to figure out what our next steps would be. This was a very organized methodology of working in a team-based setting and definitely helped us achieve our end goal. Agile project management is also used in the real world, so I think it was important that we had some experience with it. I can definitely see myself utilizing it again in the future.