Ethical software development
What is the connection between ethics and software
When the Volkswagen emissions scandal came to light in 2015, it shook not only the automotive industry, but entire societies of various nations. Quickly, the manipulation of control software in diesel vehicles to meet strict U.S. emissions standards brought up the question of who should be held responsible. The ensuing discussion showed that ethical aspects are often considered insufficiently or too late.
In our digitized world, software extends into all areas of various systems and plays an increasingly important role. Therefore, the topic of acting responsibly in software development is more relevant than ever and unavoidable.
It becomes particularly complicated when humans are replaced as agents. Artificial intelligence and robots can make and implement decisions themselves. Associated rules must be implemented by developers - and that is where the concept of ethical software development comes into play.
The word ethics - ēthikē for "the moral (understanding)" or ēthos for "character, sense" - originates from the Greek and refers to a branch of philosophy that deals with the prerequisites of human action and its evaluation. This human action is thereby decisively influenced by values, norms, customs and moral concepts and its consequences for the environment are reflected.
If one asks oneself which (individual, social and professional) responsibility a software developer bears for his/her actions or non-actions, not only the compliance with laws has to be considered. Respected codes of conduct such as the "ACM Code of Professional Conduct" published in 1972, which was revised in 1992 and renamed "ACM Code of Ethics and Professional Conduct", or the "IEEE-CS/ACM Software Engineering Code of Ethics and Professional Practice" published in 1999 show that ethics in IT, especially in software development, is not a completely new topic.
These and further discoverable codes of conduct are to give ethics guidelines to the developers and contain important principles. According to these principles, a software developer should contribute to society and human welfare with his/her work, harm no one and act in the interest of his/her employer and customers, provided this does not conflict with the public interest.
Other key points include adherence to the highest quality standards, honesty and trustworthiness, fair conduct, and protection of others' property, including copyrights and patents. Also, a developer should protect the privacy of others, handle personal data responsibly, be committed to lifelong learning, and promote an ethical approach to the practice of the profession.
Some of these points are taken up in the manifesto of the Software Craftsmanship movement, which sees software development as a profession in its own right, and in Software Craftsmanship. The "Manifesto for Responsible Software Development" addresses ethical aspects and social responsibility of software development even more clearly by addressing not only ethical responsibility, but also human and civil rights and the conscientious and sustainable use of our existing resources.
If one recalls the topics of nuclear energy and human genetics, it quickly becomes clear that a so-called ethical dimension is included in all major technical-scientific developments and stimulates discussion. Philosopher Julian Nida-Rümelin and computer scientist Alexander Pretschner are jointly researching how ethical aspects can already be integrated into software development. In doing so, they explore the fundamental question of how to deal with this ethical dimension. One possibility is strict separation: science, research, technology versus society and legislation. The problem with this separation, according to Nida-Rümelin and Pretschner, is that developments with a momentum that has already developed in science and technology are difficult for a society to control. The solution is to bring together various disciplines - including economics, philosophy and law - to enable meaningful control.
But what does this mean in concrete terms? This can be illustrated, for example, in agile software development, which is designed to react flexibly to changing requirements by working in sprints. In terms of ethical software development, the question "Can this be misused?" is always used to consider the ethical aspects. This procedure is already used for data protection-related concerns and security issues. In technical terminology, the constant consideration of what consequences a certain practice entails is referred to as consequentialism. In concrete terms, ethical software development thus means: locating and evaluating core ethical issues and translating them into technical requirements.
Since software development is not the activity of a single person, but a social process with many participants, not every single software developer can assume the responsibility of deciding on every single ethically sensitive question, no matter how small. This would be accompanied by an overload of developers and a moralization of their activities. At the same time, however, there should be no ethics-free developments.
Consequently, it is a matter of integrating the ethical dimension into software development on the one hand and into management methods and society on the other. Ethics committees, advisory boards, companies and legislators must sit down together and define rules and guidelines that serve as a guide. It must also be understood that ethics is not always an unambiguous criterion and thus cannot always provide a clear decision - due to the multi-dimensionality, a complex weighing of arguments is often necessary.
At first glance, ethics and software may not seem to go together very well, but a closer look at the increasingly rapid integration of technical innovations into our societies reveals that the associated potential risks cannot be negated. Ethical software development is particularly significant in the areas of AI, autonomous and automated assistance systems, and Big Data and robotics. In doing so, ethical software development aims to reduce the risk of misuse, fraud, and other potential ethically negative impacts.
Although not all possible risks can always be predicted, the inclusion of the ethical dimension in software development is essential. At the same time, software developers should not be saddled with the entire responsibility, even though their activities can contribute a great deal to the realization of ethical development. Although rough guidelines in the form of codes of conduct already exist, a complete integration of these into business and society is necessary. Ethical guidelines should always be anchored in law before technical innovation, so that a responsible approach can be realized.
In one of our next blog posts, we will look at where ethical software development is practically implemented and where it has been insufficiently observed.