As my journey in ICS 314: Software Engineering comes to a close, I am left to reflect on my improved understanding of software engineering. Initially, I thought that computer science and software engineering were indistinguishable from each other, but I have come to realize that software engineering focuses on the practical skills that software engineers require to design and maintain software systems, whereas computer science focuses on computation theory. To elucidate, I believe that software engineering is an extension of computer science that aims for application rather than pure theory.
An important topic in software engineering is ethics. The multitude of ethical dilemmas involved in software engineering shows that the actions taken by software engineers must be taken with caution. For example, working for government defense agencies illuminates an ethical concern for the software engineer that they must address: Do I work for an agency that may use my code to harm others? Moreover, my personal beliefs and ethical frameworks that I have adopted throughout my life may help me to address these ethical issues when looking at prospective jobs.
I believe that open source development is one of the most salient components of software engineering. Throughout the ICS 314 class, I became familiar with open source software such as Bootstrap, React, Meteor, and MongoDB. Open source development allows others to build upon the work of others to accelerate development by not having to reinvent the wheel (i.e. waste a great deal of time or effort in creating something that already exists). Furthermore, applying open source development to your projects grants transparency in your work and allows others to also build upon your work. I plan to follow this style of development for the rest of my programming career if it is reasonable and acceptable in the setting.