Ethics in Software Engineering

Authors: Enrique García, Andrés Barro, Jesús Alvarez, Gerardo César, Carlos Martell

Ethics can be defined as our individual self-reflection and continual strivings to do good. At a professional level, codes or standards are created so that there’s an agreement to a profession’s ethical standards. Software engineers have the ability to deploy code directly to end users, and along this process there should be some ethical oversight, not only technical.
image obtained from: http://www.infoworld.com/article/2997057/it-management/the-volkswagen-scandal-and-software-engineering-is-a-code-of-ethics-needed.html

The ACM (Association for Computer Machinery) has published a code of ethics regarding software engineering, a document that outlines the guidelines for those engineers to act in a way that benefits society and conserves their integrity. It includes 8 basic principles that will be summarized in the next section:

  1. Public

Software engineers have to take responsibility on his work; if by some way there are failure in his software and it harms the public, directly or indirectly, it becomes an unethical behavior. In other words, a software engineer doesn’t just make software but also he has to make sure to have the proper maintenance so it won’t cause problems with the users or with the public.

  1. Client and Employer

Software engineers have to act to the best interest for their client and employers. Like any other job, you can't make public confidential information about professional work. You also have to respect your employer and your clients.


  1. Product

This principle refers to making sure every product and related modifications to it meet the highest professional standards. There should be a pursuit for quality, reasonable schedule, costs and outcomes and achievable goals; to fully understand the specifications for the specific software. There should be adequate documentation, debugging and review. Maintain integrity of data and respecting privacy.

  1. Judgement

In this principle, software engineers are advised to make based on their experience, human values and social norms. They should not make decisions outside of their knowledge, be professionally objective when evaluating, avoid tricky financial practices, and avoid interest conflicts that may harm their professional activities, in most cases giving the customer a heads-up if the engineer senses they could come up.

  1. Management

Another point addressed in the ACM code of ethics is that software engineers should subscribe to and promote an ethical approach to the management of software development and maintenance, including good management and making sure everyone is informed about the policies as well as making sure everyone is  assigned to where they suit their abilities.


  1. Profession

To achieve this point, Software engineers have to treat the profession as a kind of group, meaning that all engineers must work together to make the profession better for everybody. Most of this is done by making sure others follow the code, including companies. A big part of making the profession better is to share knowledge so all engineers have a better time.


  1. Colleagues

Colleagues are a very important part of every profession and that's why a whole part of the Code is dedicated to them. The main idea to take is to be fair to others. It is important to note that this doesn’t mean to ignore mistakes from others, but to be objective and focus on assisting other with their problems.

  1. Self

Self improving is something every professional must do, especially Software Engineers. This way, you stay up to date in how to make quality software. Areas that of interest include security, design, maintenance, etc.