Refactoring Reality: What it REALLY means to be a Software Engineer

11 Dec 2023

When it comes to software engineering, the first thing that often comes to mind is web development—designing websites for companies or personal reasons. However, software engineering encompasses much more than just web development. Through ICS 314, I learned that it involves community involvement and creating applications beneficial to the public.

Open Source Software Development

From my first computer science course to ICS 314, I haven’t had any group coding projects. I was alway working on solo projects and assignments, so collaborating with other students through Github was very new to me. Software engineers are constantly working with a team of people, believe it or not. Despite seeming like an independent career, many engineers regularly share and revise code to enhance applications. Working on Github has overall allowed me and my team to faster innovation, bug fixes, and enhancement, as a diverse team can bring different ideas, perspectives, and skills to the table.

One of the benefits to open source software is that other developers outside of ICS 314 can give feedback on security vulnerabilities in order to create a more robust and reliable application. For our Hawaii Annual Code Challenge application submission, we got the chance to make our project open source. At first I thought sharing our project would allow other people to steal our project ideas, however, the outcome was the opposite. When me and my team presented our project at the University of Hawaii’s Project Day, we got feedback from one of the professors that work at UH Manoa. He took a look at our source code and gave out some suggestions in order to improve our overall project. Although this interaction was in person and not through Github, our interaction allowed me to realize how important it is to get community involvement when it comes to software development.

Ethics in Software Engineering

Software engineering goes beyond the web browser. One of the most important lessons to learn as a software engineer is understanding how ethics is crucial as the use of technology increases and shapes every aspect of our lives. Because of this, as a software engineer, it is important to make the right decisions when it comes to software development. These applications can heavily impact our lives in multiple ways. While software engineers may not be involved in constructing trains, buildings, or treating illnesses, the influence of social media algorithms and other applications on user behavior can significantly impact our society and produce consequential outcomes.

As a software engineer, you may think that your only responsibility is to create a well-designed and working application. However, ethics in software engineering is just as important as user interface and experience in your projects. The Association for Computing Machinery (ACM) provides general ethical principles that most programmers and software engineers should follow. One of the principles that stood out to me the most was “Contribute to society and to human well-being, acknowledging that all people are stakeholders in computing.” This principle states how most computing professionals must respect human rights and minimize negative impacts of technology especially on health, safety, security, and privacy. It also urges professionals to take in considerations of people with disadvantages or come from diverse backgrounds. You may have a target audience for your application, however, your application shouldn’t bring any prejudicial discrimination on the basis of age, color, disability, ethnicity, and more.

Ethics in software engineering was such an interesting concept to me. It had me questioning whether some of the applications that I use on a daily basis followed these ethical principles. There are many websites out there that were designed to trick you into buying more items or sharing private information. Although tricking your users into buying more items sounds like a beneficial outcome for the company, it violates ethical principles and can make you look untrustable as a software engineer. Remember, creating enjoyable user experiences builds user’s loyalty and trust in your applications.