The Endless Applications of Software Engineering Concepts

17 Dec 2021

Education is a monumental asset to society. When the population can become more educated, they are not only capable of succeeding in their fields but they also tend to find success in other parts of their lives. This is largely a result of interconnected relationships between different disciplines. Learned skills and mastery of concepts can be applied in different applications.

Too Many Loops

In our studies of Javascript, we were exposed to the Underscore library, which allowed us to have greater functionality in our programming. We were made to ask ourselves whether another loop cluttering our functions was really necessary. Instead, we were shown how to use a notation style that was syntactically cleaner and helped to declutter our code. This methodology of programming is in essence more beneficial to the programmer who is writing the code as well as potential clients and future programmers that would work on the code. While loops are integral to coding, redundant loops can make code harder to understand. Confining tasks to function calls helps to make coding better.

This can be applied outside of the scope of Javascript that we were using for software engineering. I use python alot in my line of work as a data analyst for population studies. Oftentimes a lot of the code and tasks are redundant. In this case, repetitive tasks can be better handled by functional programming. Instead of having a main program run repetitive code, it is better to handle the actions in a separate method or function that can be called when needed. This not only declutters larger method structures but also provides clarity. The programmer and clients will know where a certain action caused by the code is supposed to take place and has to search less in the event of error.

Doing the Right Thing

In our society, a sense of morality and set of ethics offer protection for people and help to define rules and regulations for workplace professionals to ensure that protection. In ICS 314, Software Engineering, we discussed the applications of ACM Software Engineering Code of Ethics and how professional practice is built upon them. More specifically, we debated the morality of Facebook’s actions and the controversy surrounding the allegations around their user privacy violations. Surprisingly, what we learned is that the rules and regulations surrounding this topic are not cut and dry. There is no simple yes or no conclusion that can always be drawn. Instead, this scenario fell into a gray area of contention where both sides could argue separate positions. One side argued that Facebook had done its best to protect young users and had specifically gone out of its way to remove accounts that violated the age policy. The counter opposition highlighted that too little was done and that Facebook had advance knowledge regarding these accounts and the information that was being mined from these minors. Furthermore, they highlighted the political implications that Facebook could have on the elections in certain countries.

If this set of Ethics is difficult to nail down as black and white then how can it ever be applied? I think the biggest takeaway from the set of standards is the understanding of what they are and how professionals can apply them. If a professional understands what the principles are they should be able to understand when they are in violation of those ethics and can voice their concerns to the appropriate parties. Personally, I found the principles of Client and Employer, and Product to be the most applicable to me. Outside of my data analyst position I tutor students of varying math and science levels. There is a very important covenant between the educator and student. The teacher will do their utmost to help the student in their studies and the student reciprocates this effort by giving their own commitment to studying hard and absorbing the information from the teacher. Like software engineers, teachers must act in a manner that is in the best interest of their clients and employers,parents or the students themselves, that is consistent with the public interest. Everyone is trying to get the best education and therefore everyone should be receiving the same effort from teachers in receiving that education. Furthermore, teachers have to continually update their knowledge as topics they teach are understood better and more material comes to light. Software engineers are ensuring that their products meet the highest professional standards possible. In the same way, teachers like myself, are ensuring that we are up to date with the latest knowledge and the best way to teach the material.

All of the skills and knowledge learned in ICS 314 for software engineering will undoubtedly be useful for future endeavors in software engineering. If any future projects require web development skills we will be more than amply prepared. More than just software engineering, however, this course has instilled a strong work ethic overall and skills that can be applied in multiple aspects of my life.