The Software Engineering Homestretch: A Reflection

10 May 2024

Almost at the Finish Line!

With ICS 314 coming to an end, it’s surprising to realize how quickly the software engineering course went by. I suppose it felt much longer during the middle of the semester, learning framework to framework, writing essays, constructing our professional portfolio, and our incredibly stressful WODs, which were pass-or-fail quizzes. Prior to actually taking the course, I did a project with team members from ICS 314 at the time, so I had exposure to the topics. As such, the trek up “ICS 314 Mountain” was not as troublesome as I initially thought and had some rather nice views.

Here are a couple of those views that caught my eye:

Coding Standards

Coding standards are the glue that holds collaborative code together. If you have ever worked on a project with a team before, you would especially understand the importance of coding standards. Put simply, coding standards are the conventions, styles, and rules that are accepted and agreed upon by a team to create consistent and understandable code. When you first hear this, the obvious standards most definitely pop up in your head. Naming conventions should be clear and without confusion. If a file or function is intended to be used to distribute ownership of cars to customers, don’t name it “apples” or “a.” It does not get communicated to the other team members very well, leading to misinterpreted code that later causes more misunderstandings and a bigger mess. All of which could be avoided by coding standards. Of course, this is only one coding standard, and an obvious one at that. Another not-as-obvious coding standard that often gets overlooked is formatting, whether it is with comments, indentations, or new lines. Sure, there’s no real functional change with this particular coding standard, but keeping your code with proper formatting for your team members to read is crucial. Imagine this coming from the perspective of your teammates, looking at an unpleasant, indecipherable blob of code, in which they will have to build off of. Now, consider a well formatted, understandable block of code. They will be able to easily structure their code off of yours, saving plenty of time for development. This is not exclusive to web application development projects either, but collaboration in general. Having your work well formatted is a skill that is necessary in any career that requires mass-collaboration, even more so for heavily time-constricted tasks.

Agile Project Management

While it is pretty important to have strongly established coding standards with collaborative projects, proper agile project management is also a necessity. Similarly to coding standards, agile project management can be taken in a direction such that it gives a guideline for team members to follow. This semester, we organized our assigned tasks with a project board, easily tracking what is “todo”, “in-progress”, and “done.” The assignment of these tasks are called issues, and it is how we organize our intentions while partitioning the workload. Working with team members and a project board allows us to communicate our thoughts quickly and efficiently, being able to allocate more of our time to other issues. This is also extremely applicable to other areas of work besides web development projects, and it is easy to see why. Being on the same page as your team is vital to making progress in any career. Even now, if you did a quick search on project board applications or websites, you would find many that fit the bill, and for good reason. Naturally, implementing agile project management in any work promotes communication and trust between your team members.

Closing Thoughts

Looking back, I am satisfied with how my learning experience in ICS 314 came out to be. ICS 314, much like coding standards to a project, was the glue for software engineering and I. It was eye opening to see how detailed and intricate the software engineering process is, and how the deeper I delved into a module, the more I realized that I barely scratched the surface. While it may be true that my ICS 314 journey has come to an end, I look forward to learning about the parts of software engineering that I have yet to know exist.