Engineering One Line At A Time

14 May 2025

Throughout my time in ICS 314, my university’s software engineering class, I had learned a great deal about software development and of software engineering in general. To me, what separates the two is that software engineering is essentially a superset of software development. Yes, developing software is an important part of software engineering, but it is far from the only part, with many of the most important aspects of software engineering not involving software development or any kind of coding at all.

One of these aspects are the many design patterns used in software engineering. Design patterns are essentially tried and true designs to many problems that software engineers commonly run into. While ICS 314 focused primarily on web development, and design patterns were used in such applications, these patterns can no doubt be applied to other kinds of software. For example, if I was automating a factory floor and all of its manufacturing robots, I could follow a design pattern that would allow multiple kinds of technologies to communicate with each other efficiently and effectively.

Another very important aspect is the ethics behind software engineering. This one is pretty self explanatory, it is essentially the ethics behind what such engineers do. This is a concept that extends far beyond just web development, and into all kinds of software related jobs. I believe that all software engineers should take this concept into consideration in everything they do if they were to ever take any. If I was working for a defense/military company, would I be able to sleep at night knowing that my talents could be used to directly hurt or assist in hurting lots of people? If I was working for a high finance company, could I have a clear conscience knowing that I am helping some of the richest and most powerful people bend markets ever further to their will? These are all the things I would consider in relation to ethics if I were to ever land a role in such places.

These two are but a sample of the many software engineering concepts that I have learned in ICS 314. In relation, this class has also expanded my skills in software development specifically. I came into this class essentially only knowing how to make simple programs, and I left knowing the basics behind website construction and how to work in development teams. I’d like to think that I had left this class one step closer to being a better engineer as well.