Code of ethics and professional practice for software engineering

Recommended by the ACM/IEEE-CS Joint Task Force on Software Engineering Ethics and Professional Practices and jointly approved by the ACM and the IEEE-CS.

Preamble

Computers play a growing and central role in all sectors of society. Software engineers—whether practitioners, educators, managers, supervisors, or students—impact society through the systems they develop or maintain. These roles offer opportunities to do good or cause harm. Therefore, software engineers must be committed to making the profession respected and beneficial.

This Code outlines eight key Principles, each detailing the ethically responsible relationships and obligations involved in professional conduct. These obligations stem from the human and societal responsibilities of software engineers.

The Code is not a checklist or algorithm for ethical decisions. Rather, it encourages thoughtful reflection on fundamental values, considering public health, safety, welfare, and professional ideals. It also plays an educational role in preparing professionals and informing the public about software engineering ethics.


Principles

Public

Software engineers shall act consistently with the public interest. Specifically, they shall:

  • Accept full responsibility for their work.

  • Balance interests of stakeholders with public good.

  • Approve software only when confident in its safety, quality, and minimal societal harm.

  • Disclose risks to users, the public, or the environment.

  • Cooperate in resolving significant public concerns caused by software.

  • Avoid deception, especially in public statements.

  • Address accessibility issues and disadvantages.

  • Volunteer skills for public education and good causes.


Client and Employer

Software engineers shall prioritize the interests of clients and employers, in line with public interest. They shall:

  • Work within their area of competence.

  • Avoid illegal or unethical software.

  • Respect client/employer property.

  • Rely on authorized documents.

  • Protect confidential information within legal/public limits.

  • Report potential project failures or IP violations.

  • Report significant social issues in software.

  • Avoid outside work that interferes with primary responsibilities.

  • Speak up against ethical compromises.


Product

Software engineers shall ensure professional standards for products and modifications. They shall:

  • Balance quality, cost, and timelines transparently.

  • Set realistic project goals.

  • Address ethical, legal, and environmental concerns.

  • Work within their competence.

  • Apply appropriate methods and standards.

  • Fully understand and document specifications.

  • Provide accurate project estimates with uncertainty assessments.

  • Ensure thorough testing, debugging, and documentation.

  • Respect user privacy and handle data ethically.

  • Treat maintenance with professionalism.


Judgment

Software engineers shall uphold integrity and independence. They shall:

  • Weigh human values in technical decisions.

  • Endorse only documents they supervise or understand.

  • Maintain objectivity.

  • Avoid deceptive or corrupt financial behavior.

  • Disclose conflicts of interest.

  • Avoid advisory roles with undisclosed conflicts.


Management

Leaders shall promote ethical software development practices. They shall:

  • Ensure quality-promoting and risk-reducing project management.

  • Communicate standards and policies clearly.

  • Assign work fairly, considering education and experience.

  • Provide accurate employment conditions and fair pay.

  • Ensure IP ownership clarity.

  • Offer due process for policy violations.

  • Respect whistleblowers of ethical concerns.


Profession

Software engineers shall uphold the profession’s integrity. They shall:

  • Foster ethical work environments.

  • Promote public understanding of the field.

  • Engage in professional development and community.

  • Support ethical behavior among peers.

  • Follow laws unless conflicting with public interest.

  • Avoid misleading claims.

  • Detect and correct software errors.

  • Communicate their ethical commitment.

  • Avoid unethical associations.

  • Report serious Code violations responsibly.


Colleagues

Software engineers shall treat colleagues fairly. They shall:

  • Encourage ethical behavior.

  • Help with professional growth.

  • Credit others' work accurately.

  • Review others’ work honestly.

  • Respect differing opinions and concerns.

  • Share security and policy knowledge.

  • Avoid sabotaging colleagues’ careers unfairly.

  • Seek expert advice when outside their field.


Self

Software engineers shall continually learn and act ethically. They shall:

  • Advance skills in all software development areas.

  • Enhance ability to produce reliable and timely software.

  • Improve documentation practices.

  • Deepen knowledge of software use contexts.

  • Understand laws and standards.

  • Internalize and apply this Code.

  • Reject prejudice and unfair treatment.

  • Avoid influencing unethical acts.

  • Recognize that violations undermine professionalism.


© Association for Computing Machinery; Institute for Electrical and Electronics Engineers

Last updated

Was this helpful?