Software Engineering: A Retrospective

12 Dec 2023

Over the course of the Fall 2023 semester, I have learned much about software engineering and web development through ICS 314. While the class had us work on web applications, these assignments were used to teach us the ins and outs of software engineering. But how were the software engineering concepts applied in our web applications?

Open Source Software Development

One of the first concepts we learned about was open source software development. This means that the software that we develop, all of its code and directories, are available to the public. Thus, the source is open, and available for other programmers to look at, evaluate, and build off of.

In ICS 314, most of our early assignments were open source. These projects were relatively simple, just learning the basics of JavaScript, HTML, and CSS. Beyond that, some of the early assignments where we actually built websites and programs were uploaded to GitHub as public repositories. As I progressed through the class, the assignments eventually became closed source, and unavailable to the public.

Making your code open source is beneficial if what you are developing is a general tool which can be built upon and improved by others. It also shows good faith, that you have nothing to hide from other programmers, and that nothing malicious is happening if your program is run. On the other hand, if you do not want your code to be analyzed, or you’re developing something where it would be detrimental to the product if its code was public, then it is okay to leave your code closed source.

Coding Standards

Coding standards are general formatting practices used to keep code clean, concise and readable by other programmers. The main coding standard used in ICS 314 is ESLint, which is used primarily on JavaScript.

Utilizing ESLint helped make my code much easier to read, and nicer to look at. Making long and complicated programs can lead to writing sloppy code, thus making the code even more unreadable in the future. ESLint can also help prevent making mistakes in code. It serves as an extra pair of “eyes” to double check your code.

I will likely continue to use various coding standards in the future, as I continue to write new programs.

Ethics in Software Engineering

Towards the end of the semester, we briefly covered ethics in software engineering. While it is debatable that many programmers lack morals when developing certain programs, it is much easier to debate if programs are ethical.

Ethics are a specific code of rights and wrongs that can be applied generally to a group of people, and aren’t tied to personal opinion on whether something is right or wrong. For example, is it more ethical for a self-driving car to crash into a baby or an elderly person in a situation where a crash is inevitable?

In ICS 314, I had to uphold the ACM Code of Ethics. It generally outlines how one should not write programs which harm others, should maintain its users privacy, etc. Thus, when working on my final project with my group, we had to carefully consider what we could and could not do to follow these ethics. For example, we teased the idea of allowing for reply comments on reviews, but realized quickly that it could lead to professors or other students getting into arguments with reviewers.

Conclusion

ICS 314 taught me a lot about software engineering through web development. Many of these principles will be useful to know as I continue to move forward in my coding endeavors. If I am able to keep what I learned in this class in mind, I will become a better programmer, and hopefully find a fulfilling and successful career.