Reflections of Software Engineering

07 May 2024

Intro

During my semester working on ICS 314, I learned a lot about coding that was previously foreign to me, such as coding standards, design patterns, functional programming, and ethics in software engineering. Moreover, I learned to be more critical about the tools that I use in order to become a better software engineer. Interestingly, I took away some very critical lessons from this course, of which I would like to reflect on.

Agile Project Management

During this course, I knew that managing a team project nearing the end of the semester would be a struggle; managing a team is difficult. The challenge of managing a team of college students is that not all students are competent and have available resources to dedicate either time or effort to the project. College students, like myself, have many other courses and may not have the time to dedicate without being rigid and disciplined in time management, which, let’s face it, happens rarely.

What I learned that critically helped me manage myself and our team was indeed a mini-lecture on project management risks. These risks included many known and unknown issues or risks when attempting to finish a project. Much of what was covered was indeed very useful information. For example, one such risk of projects is team skills and limited resources. Team skills pertain to the team’s capabilities in fulfilling the project requirements. If the team members were not competent in some fashion, it helped our team better assign tasks that best suited their skillsets while also allowing them to contribute to other parts of the project if they felt they could help, with some oversight. Furthermore, a more critical and indeed a huge oversight of many projects that I encountered myself was not having clear requirements. This drastically changed my mindset about the project, not only in terms of tasks but also as a whole. When tasks are given without clear instructions or guidance, the task cannot be executed efficiently. The reason is that the context or the task isn’t clearly stating the requirements for what it asks a member to do, thereby increasing the time and effort needed to learn about the task’s requirements rather than the task itself.

I was able to apply many of these lessons in project management to my own personal life. Currently, I have been working at a small company that develops e-textiles—fabric that can communicate with technology using woven circuitry. The ability to have e-textiles allows fabric to communicate information or data from sensors or the fabric itself. For example, Tesla incorporates this type of technology to determine the positioning of objects on seats. The purpose is to create an algorithm that predicts both the object on the seat and the position of the object. Later, Tesla would further this algorithm to even predict the object and several other characteristics of the object such as male or female, height, weight, if it was a baby, etc. It can determine a person by contact, but what’s the big deal? Well, the reason Tesla requires that data is because it allows the main computer of the car to determine how much force and energy it needs to deploy airbags in a way that protects the object. A lot of force goes into an airbag; detecting the object and predicting the appropriate force needed requires this information that the e-textiles woven into the car seat provide.

Ethics in Software Engineering

While the technology industry continues to become more elaborate, data privacy, securing data, and ethics are definitely at the forefront of how we implement new software. Although the majority of the time our coursework was focused on the execution of design patterns and existing code, not much of the course load discussed ethics. Clearly, though, it is common to expect that your fellow colleagues have the best intentions and do the job correctly. However, mistakes are made, and sometimes there is oversight of ethics. One such example is if I were interning at NASA working on code that NASA requires for one of its satellites. I need help in determining the best solution for an object class that I am not sure of. Instead of contacting my supervisor, who is currently in a meeting, I take it upon myself to find the answer in the code. Therefore, I share sensitive and proprietary code in an AI search, which violates one of NASA’s security policies and ethics agreements. Due to this violation, I am terminated from my position immediately. Although that scenario hasn’t happened, it illustrates the accidental ethics violations that can occur. However, an existing ethical violation that OpenAI has stated is that it will restrict its use of AI from any activity that has a high risk of physical harm, including specifically “weapons development” and “military and warfare,” The Intercept reports. The updated policy instead prohibits using “our service to harm yourself or others”. Knowing this, we can see that without ethics in the way we not only execute projects or code, we can seemingly harm our users more.re.

Reflection on my journey

So far, I have become more competent in my knowledge of coding structures and coding designs. Without these concepts, I would have a more difficult time in being able to see real-world applications. Moreover, although we worked on designing web applications, the more important concept for me to know is how to work in teams to finish a project. The majority of the time when developing the web application for our final project, it was clear to see where the majority of my oversight was. As I reflect on my experience, I can see where this course has helped me think more critically.