From the beginning of the fall semester until now, my knowledge of software engineering has grown significantly. Before ICS 314, a software engineering course, software engineering seemed boring because I thought it dealt with writing and debugging high-level programs. However, while some of this is true, ICS 314 has shown me that other aspects of software engineering can be interesting and enjoyable. Moreover, software engineering concepts are not only limited to the computer science world but can also be applied in other unrelated contexts.
A fundamental software engineering concept that’s helpful and important is coding standards. Coding standards are guidelines used to neatly organize code in a way that’s readable for myself and others who look at my code. With these guidelines, code must be written in a specific way to maintain a certain look that’s easily understood.
Applying a similar concept to coding standards when solving complex math problems can also be useful. Rather than haphazardly showing work all over the paper, showing work in a step-by-step manner increases the chance of solving the problem correctly and helps when looking back at the work. By neatly organizing my work vertically, I’m able to figure out where I went wrong if my solution is incorrect. Instead of struggling to figure out how I went from one step to the next, I’m able to view my work in a step-by-step format and determine where I miscalculated. Neatly organizing my work can also be helpful when working with others. When comparing answers with a peer and figuring out why my answer differs, showing my work in a cohesive, legible manner helps me and my peer efficiently figure out where either of us made an error.
Another fundamental software engineering concept that is helpful within and beyond computer science is agile project management, more specifically issue-driven project management (IDPM). IDPM is a way of organizing and managing work that needs to get done as a group. Groups must meet at least twice a week, discuss new or current project issues, divide up the new issues amongst team members, and share individual progress.
For my ICS 314 group final project, we were assigned to create a website that helps students easily find more information about the different study abroad programs and countries at UH Manoa. Each week at our meetings, we discussed new and current project issues, divided up the new issues among different group members, and shared our progress with our current individual coding issues.
Within a different context, IDPM can also be used in other types of group work such as group presentations. Since there may be different points that need to be covered in the presentation, group members can figure out what points need to be discussed during the presentation then divide up the work and assign themselves to research different parts of the main topic. At the end, everyone would put their pieces of knowledge together to hopefully produce a cohesive presentation.
Figuring out what needs to be done first and then assigning each issue to a group member maximizes efficiency. Since everyone has a task they can currently work on and other tasks that can be completed once their current task is finished, time is utilized wisely since no one has to wait for other members to finish before working on another part of the project.
Despite not knowing much about software engineering at the beginning of ICS 314, I now know that software engineering has more to it than just coding. Different elements of software engineering like coding standards and issue-driven project management improve work ethic, efficiency, and can be useful in other situations outside of computer science.