Developing the Skills to Develop Software

14 May 2025

Retracing My Steps

With the semester coming to a close, it’s important to look back on what I’ve learned and the skills I’ve gained through my time in ICS 314, a software engineering course focused on web development. Out of the ICS classes I’ve taken so far, this has been one of the most enjoyable experiences so far due to the way we learned and retained skills through implementation. For instance, the WODs that would challenge us to write code and produce a result outlined by the prompt.

Throughout the semester, we learned how to efficiently use web development frameworks such as Next.js and React-Bootstrap to build websites. Outside of the technical skills, this course covered fundamental software engineering concepts which were essentially techniques that assisted with the process and decision-making of developing software. While this class centered around web development, the experience I had in this class has definitely helped me grow as a software developer as I can apply the skills I’ve learned to other areas of software engineering. For the next sections, I will reflect on a few concepts of software engineering that we covered which resonated with me.

Following Coding Standards

One fundamental we went over this semester was coding standards! To put simply, coding standards are a guideline for how code is written or formatted to maintain consistent and organized code. A common example of a coding standard is to make an indent for code nested inside a larger structure/part of the code, such as indenting the contents of a loop.

Coding standards can be found in anything that involves writing code, this isn’t merely a web development concept! Because coding standards improve code readability, applying them to projects (most especially in a group setting) can help those who read the code understand what’s going on.

This is a recurring concept in the field of software development, as I’ve encountered coding standards in previous classes (which just goes to show how important and ubiquitous it is!). With that in mind, I will continue to set and apply coding standards into programs I write because it helps me and others who read the code.

Coordinating With Agile Project Management

A fundamental that I learned and practiced in this course is agile project management, more specifically with a style called issue driven project management (IDPM). In short, agile project management is about working on a task iteratively by breaking the whole project into smaller parts. In that manner, the work would become more organized and it would be easier to check progress or any errors within each task.

The IDPM method focused on using the “issues” feature on GitHub which allowed us to assign who would do the tasks, write a description of what needed to be done, and also see progress being made on the task. Furthermore, we utilized GitHub Projects to manage the issues and check overall progress. For instance, GitHub Projects has a feature that divides tasks based on progress (“To Do,” “In Progress,” and “Completed”) which gives us an easy way to check up on the progress of the task and if the assigned member is making progress. This was my very first time using these features and it most definitely helped with coordination between my team during the final project. For instance, if a task was left stagnant within “In Progress,” we could easily check up on the member and even assist them with completing the task.

I will definitely use this in the future, especially with how it improves efficiency in collaborating with my team. In past group projects I’ve worked on, I did not employ this concept. I can confidently say that there’s a HUGE improvement of the overall efficiency when completing my final project for ICS 314 compared to working on my past projects.

Conclusion

Taking this course has been a blast! I learned how to develop a web application but also the fundamentals of creating software in a more general sense (i.e. outside of web applications). Having the privilege of learning these skills and concepts is just one step of becoming an efficient software engineer. From organizing code with coding standards to managing projects with IDPM, these lessons are one I’m taking to heart and applying to software-related work in the future.