Software alters how we work, live, act, and think. As the individuals who build, design, develop, maintain, and retire software: the impact of software engineers is undeniable. One could argue that software engineers are as influential as modern day celebrities and politicians. Whether they’re employed by Instagram, Uber, Shopify, or Apple, their work shapes business and people across the globe.
Let’s discuss the ethics of software engineering and how employees in the field can ensure their technology is used for good.
- What is the Software Engineering Code of Ethics?
- Why software engineering ethics are important
- Tips for software engineers to ensure their work is ethical
- Ethical dilemmas a software engineer may encounter
What is the Software Engineering Code of Ethics?
The Software Engineering Code of Ethics and Professional Practice outlines eight principles related to the behaviour of and decisions made by software engineers, and identifies ethical obligations to which they must adhere. The eight principles are as follows:
- Public: Software engineers shall act consistently with the public interest.
- Client and employer: Software engineers shall act in a manner that is in the best interests of their client and employer consistent with the public interest.
- Product: Software engineers shall ensure that their products and related modifications meet the highest professional standards possible.
- Judgment: Software engineers shall maintain integrity and independence in their professional judgment.
- Management: Software engineering managers and leaders shall subscribe to and promote an ethical approach to the management of software development and maintenance.
- Profession: Software engineers shall advance the integrity and reputation of the profession consistent with the public interest.
- Colleagues: Software engineers shall be fair to and supportive of their colleagues.
- Self: Software engineers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession.
According to the Code, software engineers shall commit themselves to “making the analysis, specification, design, development, testing, and maintenance of software a beneficial and respected profession.” The eight principles summarize aspirations for the profession at a high level and are further broken down into clauses in a longer version of the Code. Simply put, the outlined principles make certain that individuals within the profession are committed to the health, safety, and welfare of the public above all else.
Meetings worth showing up to
A well-run meeting can foster communication and collaboration by including an agenda the whole team can contribute to. Try using a tool like Fellow!
Why software engineering ethics are important
1Benefit the public
Having a strict code of ethics guarantees that software engineers will create products that benefit everyday people. Without ethics, a software engineer could disregard how their work affects the lives of others, or design something that is intentionally harmful. Software should be looked upon as a tool to help our society function more efficiently. Without ethics, software engineers could get off scot-free for participating in reckless behaviour and decision-making.
2Meet professional standards
Adhering to your own personal ethics isn’t enough. Professional standards governed by a code of ethics ensure that software engineers are able to justify their work. Rather than pursuing a goal without first thinking of its implications, employees in this field need to ask themselves a few ethical questions each time they embark on a new project. For example, a software engineer who is developing a new video game may ask themselves, “How can I make sure that the final product does not negatively impact a player’s quality of life?”. Having a code that meets professional standards also means that software engineers are part of a moral community of like-minded professionals and leaders with similar responsibilities. Remember, the influence of a good principal can never be erased!
3Provide high-quality software
Software powers our world. It enables the functionality of our banks, communication, power plants, and nearly every other modern-day system. Ethics make certain these systems use high-quality, reliable software that is beneficial and accessible for everyone. According to the Code, software engineers must aim to create quality products that meet specifications, pass appropriate tests, and don’t diminish quality of life, privacy, or harm the environment.
Tips for software engineers to ensure their work is ethical
- Ask yourself how the software could be misused
- Be honest about your intent
- Avoid biases
- Take accountability for the software
- Act as a responsible citizen
1Ask yourself how the software could be misused
Most engineers create software in good faith. Unfortunately, assuming that your product will be used for good isn’t enough. Each time you embark on a new project, ask yourself, “How could this software be misused?”. Be mindful that this answer may change as the product itself evolves. Ask yourself this question multiple times throughout the development process and each time you update it. For example, the team that developed Twitter did so with a mission to “give everyone the power to create and share ideas and information instantly,” and likely didn’t think that the platform would one day be used to spread misinformation about a global pandemic or electoral processes. To offset some of this harm, Twitter platform implemented a crisis misinformation policy to guide their efforts to elevate credible information in 2022. As a software engineer, you should also look at existing technology you’ve worked on and be proactive about addressing potential misuse.
2Be honest about your intent
If you publicly announce that your new product will “connect individuals from across the globe” but your actual goal is to make the next greatest international dating app, you’re not adhering to software engineering ethics. Use simple language and be honest about your product! If the vision changes, inform your audience. Be open with stakeholders about software updates and changes as they arise. Work with other teams within your company to create policies that make sure the product will be used as intended.
If you’re an idealistic person, you probably get excited often about your own work. Don’t let enthusiasm cloud your judgment! Think carefully about your role as a digital changemaker and always ask for a second option if you’re questioning the ethicality of your work. Commit to the eight principles of the Code, which outlines how software engineers should be lifelong learners. If you’re a manager, strive to create a diverse team of software engineers who are able to share their own options and perspectives on each project your team undertakes.
4Take accountability for the software
If you have an awesome idea, take ownership for all successes and failures! As a software engineer, you should aim to advance the integrity and reputation of the profession. For example, you should avoid false claims about your software, but also declarations that could be deceptive or misleading. Take responsibility for detecting, correcting, and reporting errors in your software and ensure that your employer, clients, customers, and other stakeholders are kept up-to-date.
5Act as a responsible citizen
Software engineers have the unique opportunity to create a product that can unknowingly do good or cause harm. For this reason, you need to put your role as a responsible citizen first and as a software engineer second. You should only work on and move forward with the development of software that you believe is safe, meets requirements, and can pass the necessary testing. You can also be a responsible citizen by volunteering your professional engineering skills to good causes when able.
Ethical dilemmas a software engineer may encounter
- Algorithmic bias
- Personal data collection
- Weak security protection
- Negative relationship between feature and impact
You need to remember that computers lack morality! Bias can unintentionally enter systems when it’s not taken into consideration. For example, Google was recently criticized for perpetuating systemic racism when it was discovered that their image processing technology couldn’t accurately represent black and brown skin tones in photos. When creating a product using existing data, software engineers need to be intentional about their work and ask themselves important questions like, “How was this information collected and what assumptions did the collector have?”. Companies and senior-level employees can also work to solve algorithmic bias by nurturing a culture that encourages employees to speak up if they believe a software feature is problematic.
2Personal data collection
We all know that some software can profile users with a terrifying level of accuracy. One major ethical dilemma in software engineering is how data is collected and managed. Many businesses generate revenues by sharing user data unethically. Companies can combat malpractice by making it easy for engineers to come forward with concerns when necessary, without fear of repercussion. Software engineers should also be provided access to the context of each task so they develop a good understanding of how the software will be used.
3Weak security protection
Security isn’t always taken as seriously as it should be. Hackers can cause lasting damage to real people and companies. Sadly, organizations often prioritize quick development over security and take reactionary measures to address ongoing security challenges. Software engineers should address security during development and after code release, rather than focusing strictly on getting the product to market. Once the product has launched, companies need to continue to make security a top priority.
4Negative relationship between feature and impact
Just because you can implement a new feature doesn’t mean you should! Some software engineering teams spend too much time developing new features and updating product capabilities, and not enough time tailoring their existing features to make them safe and reliable. The sad truth is that ethics often take a backseat when this occurs. Businesses need to set the tone for the quality of their products and services and strive to reflect these priorities throughout a software’s lifecycle.
Whether they mean to or not, software engineers are shaping our digital ecosystem and world! Like other types of engineers, software engineers need to abide by their own code of ethics so their products are used for good and meet certain standards. Keeping ethics at the heart of any project can be challenging, but doing so ensures that the software will be used for good. If you ever find yourself questioning the purpose of software engineering ethics, contemplate how your technology could be used to make lives worse. Stay vigilant and abide by the Code, and the only consequence you’ll face will be success!