Programming ethics

Last updated

This article gives an overview of professional ethics as applied to computer programming and software development, in particular the ethical guidelines that developers are expected to follow and apply when writing programming code (also called source code), and when they are part of a programmer-customer or employee-employer relationship. These rules shape and differentiate good practices and attitudes from the wrong ones when creating software or when making decisions on a crucial or delicate issue regarding a programming project. They are also the basis for ethical decision-making skills in the conduct of professional work.

Contents

History

The American scholar Norbert Wiener, professor of Mathematics and Engineering at Massachusetts Institute of Technology, was the first person to set the basis for a new type of Ethics in the mid 1940s. He noticed that the innovations and advances in science and technology, along with the fast-growing computer industry, were leading to the appearance of this type of Ethics that he named “cybernetics” (from the Greek word for the pilot of a ship). The emerging use of computers and other technologies were bringing up new ethical issues that needed to be analyzed carefully using new ethical guidelines.

Wiener wrote three books that lay down a foundation to a new division of Ethics after World War II ended. The books were Cybernetics (1948), The Human Use of Human Beings (1950) and God and Golem, Inc. (1963). Even though he never saw himself creating a new area of Ethics, Wiener gave detailed examples where some ethical and social issues and implications, which were generated by the use of computers, could be identified. However, his ideas were not taken seriously by other scholars because they considered him an eccentric scientist that fantasized about Ethics (Bynum). [1]

In 1976, a new term regarding Ethics, named “computer ethics,” was proposed by Walter Maner based on the ideas and principles of Norbert Wiener. Maner felt it was necessary to have a field of Ethics for the computer industry just as the medical and business industries had at that moment. Maner also defined that field as one that “studies ethical problems aggravated, transformed or created by computer technology” (Bynum), [1] and he even designed a computer ethics course that could be imparted to university students.

In the early 1990s, Donald Gotterbarn claimed that computer ethics should be considered as professional ethics that could have the power to lead towards the development and advancement of standards of good practice and codes of conduct for computing professionals (Bynum). [1] He worked with several professional-ethics advocates to write ethical guidelines for creating codes of Ethics. He formed part of the creation of Code of Ethics and Professional Conduct, adopted by the Association for Computing Machinery (ACM) in 1992, and Software Engineering Code of Ethics and Professional Practice, adopted by the Institute of Electrical and Electronics Engineers (IEEE) and the ACM as well. These codes also include Programming Ethics principles.

Programming Ethical Guidelines

The Association for Computing Machinery (ACM) is the world's largest educational and scientific computing society. It has its own Code of Ethics and another set of ethical principles that were also approved by the IEEE as the standard for teaching and practicing software engineering. These codes are Code of Ethics and Professional Conduct and the Software Engineering Code of Ethics and Professional Practice, respectively, and some of their guidelines are presented below:

From the Code of Ethics and Professional Conduct (ACM): [2]

From Software Engineering Code of Ethics and Professional Practice [4] (IEEE, ACM):

University's Role

Ohio University also trains their computer science majors on the field of programming ethics. They expect every student to understand and follow ACM's principles and responsibilities. [5]

Intentionally making mistakes like creating insecure passwords or leaving security holes in the implementation of a program that could compromise a system's security and reliability exposes the programmer to trial. [3] The specific sanctions that might result from a programming-related legal dispute will vary from one state to another. Sanctions may include corrective actions, a certain number of hours of social work, or months or years in jail.

See also

Related Research Articles

The Association for Computing Machinery (ACM) is a US-based international learned society for computing. It was founded in 1947 and is the world's largest scientific and educational computing society. The ACM is a non-profit professional membership group, reporting nearly 110,000 student and professional members as of 2022. Its headquarters are in New York City.

<span class="mw-page-title-main">Computing</span> Activity involving calculations or computing machinery

Computing is any goal-oriented activity requiring, benefiting from, or creating computing machinery. It includes the study and experimentation of algorithmic processes, and development of both hardware and software. Computing has scientific, engineering, mathematical, technological and social aspects. Major computing disciplines include computer engineering, computer science, cybersecurity, data science, information systems, information technology and software engineering.

<span class="mw-page-title-main">Programmer</span> Person who writes computer software

A programmer, computer programmer or coder is an author of computer source code – someone with skill in computer programming.

Software engineering is an engineering-based approach to software development. A software engineer is a person who applies the engineering design process to design, develop, test, maintain, and evaluate computer software. The term programmer is sometimes used as a synonym, but may emphasize software implementation over design and can also lack connotations of engineering education or skills.

<span class="mw-page-title-main">Computer engineering</span> Engineering discipline specializing in the design of computer hardware

Computer engineering is a branch of computer science and electronic engineering that integrates several fields of computer science and electronic engineering required to develop computer hardware and software. Computer engineering is referred to as computer science and engineering at some universities.

Computer science is the study of the theoretical foundations of information and computation and their implementation and application in computer systems. One well known subject classification system for computer science is the ACM Computing Classification System devised by the Association for Computing Machinery.

The following outline is provided as an overview of and topical guide to software engineering:

<span class="mw-page-title-main">David Parnas</span> Canadian software engineer

David Lorge Parnas is a Canadian early pioneer of software engineering, who developed the concept of information hiding in modular programming, which is an important element of object-oriented programming today. He is also noted for his advocacy of precise documentation.

Software engineering professionalism is a movement to make software engineering a profession, with aspects such as degree and certification programs, professional associations, professional ethics, and government licensing. The field is a licensed discipline in Texas in the United States, Engineers Australia(Course Accreditation since 2001, not Licensing), and many provinces in Davao.

Computer ethics is a part of practical philosophy concerned with how computing professionals should make decisions regarding professional and social conduct.

Donald William Gotterbarn is a computer ethics researcher. Gotterbarn received his Ph.D. in Philosophy in 1971 from the University of Rochester. He also earned his M. Div. from the Colgate Rochester Divinity School.

<span class="mw-page-title-main">Ben Shneiderman</span> American computer scientist

Ben Shneiderman is an American computer scientist, a Distinguished University Professor in the University of Maryland Department of Computer Science, which is part of the University of Maryland College of Computer, Mathematical, and Natural Sciences at the University of Maryland, College Park, and the founding director (1983-2000) of the University of Maryland Human-Computer Interaction Lab. He conducted fundamental research in the field of human–computer interaction, developing new ideas, methods, and tools such as the direct manipulation interface, and his eight rules of design.

Certified Software Development Professional (CSDP) is a vendor-neutral professional certification in software engineering developed by the IEEE Computer Society for experienced software engineering professionals. This certification was offered globally since 2001 through Dec. 2014.

In computer programming jargon, a heisenbug is a software bug that seems to disappear or alter its behavior when one attempts to study it. The term is a pun on the name of Werner Heisenberg, the physicist who first asserted the observer effect of quantum mechanics, which states that the act of observing a system inevitably alters its state. In electronics, the traditional term is probe effect, where attaching a test probe to a device changes its behavior.

End-user development (EUD) or end-user programming (EUP) refers to activities and tools that allow end-users – people who are not professional software developers – to program computers. People who are not professional developers can use EUD tools to create or modify software artifacts and complex data objects without significant knowledge of a programming language. In 2005 it was estimated that by 2012 there would be more than 55 million end-user developers in the United States, compared with fewer than 3 million professional programmers. Various EUD approaches exist, and it is an active research topic within the field of computer science and human-computer interaction. Examples include natural language programming, spreadsheets, scripting languages, visual programming, trigger-action programming and programming by example.

<span class="mw-page-title-main">Cyberethics</span>

Cyberethics is the philosophic study of ethics pertaining to computers, encompassing user behavior and what computers are programmed to do, and how this affects individuals and society. For years, various governments have enacted regulations while organizations have defined policies about cyberethics.

<span class="mw-page-title-main">API</span> Software interface between computer programs

An application programming interface (API) is a way for two or more computer programs or components to communicate with each other. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how to build or use such a connection or interface is called an API specification. A computer system that meets this standard is said to implement or expose an API. The term API may refer either to the specification or to the implementation. Whereas a system's user interface dictates how its end-users interact with the system in question, its API dictates how to write code that takes advantage of that system's capabilities.

The following outline is provided as an overview of and topical guide to software development:

Bill Curtis is a software engineer best known for leading the development of the Capability Maturity Model and the People CMM in the Software Engineering Institute at Carnegie Mellon University, and for championing the spread of software process improvement and software measurement globally. In 2007 he was elected a Fellow of the Institute of Electrical and Electronics Engineers (IEEE) for his contributions to software process improvement and measurement. He was named to the 2022 class of ACM Fellows, "for contributions to software process, software measurement, and human factors in software engineering".

<span class="mw-page-title-main">Simon Rogerson</span>

Simon Rogerson is lifetime Professor Emeritus in Computer Ethics at the Centre for Computing and Social Responsibility (CCSR), De Montfort University. He was the founder and editor for 19 volumes of the Journal of Information, Communication and Ethics in Society. He has had two careers; first as a technical software developer and then in academia as reformer. He was the founding Director of CCSR, launching it in 1995 at the first ETHICOMP conference which he conceived and co-directed until 2013. He became Europe's first Professor in Computer Ethics in 1998. His most important research focuses on providing rigorously grounded practical tools and guidance to computing practitioners. For his leadership and research achievements in the computer and information ethics interdisciplinary field he was awarded the fifth IFIP-WG9.2 Namur Award in 2000 and the SIGCAS Making a Difference Award in 2005.

References

  1. 1 2 3 Bynum, Terrel (2015-10-26) [2001-08-14]. "Computer and Information Ethics". In Edward N. Zalta (ed.). The Stanford Encyclopedia of Philosophy (Spring 2011 Edition). Retrieved 2021-06-21.
  2. 1 2 ACM Code 2018 Task Force. "ACM Code of Ethics and Professional Conduct". Association for Computing Machinery . Retrieved 2013-09-28.{{cite web}}: CS1 maint: numeric names: authors list (link)
  3. 1 2 Savage, Brandon (2009-08-12). "Ethics for Programmers?". BrandonSavage.net. Retrieved 2013-09-29.
  4. 1 2 Donald Gotterbarn, Keith Miller, and Simon Rogerson (2013-09-28). "Software Engineering Code of Ethics and Professional Practice". Association for Computing Machinery, IEEE. doi: 10.1145/265684.265699 . S2CID   9789551.{{cite journal}}: Cite journal requires |journal= (help)CS1 maint: multiple names: authors list (link)
  5. "World of Programming". Ohio University. 2021-05-08.