Progress brings complexity. Think about the introduction of cars – yes, faster and more efficient travel time, but what about pollution and car accidents? Because software development proceeds at such a rate, there are many ethical issues, some more complicated than others, that arise over time. This piece will mention a number of key ethical issues in software development and then we’ll consider some strategies for dealing with these issues.
Ethical Issues in Software Development: What to Expect
InfoWorld mentions a number of important software ethical issues including:
1. How to deal with Log Files
At its simplest, a log file is an automatically produced and time-stamped documentation of various events. An access log, on a web server for example, lists all the individual files a person has requested from that website. These log files can also be used in workplace surveillance. Deleting an email or a file is also not sufficient to erase the trail. Now when it comes to ethics, who has access to those log files? Think about how Facebook can get access to your private life via these log files. How long should Facebook be allowed to keep these files? These are just some of the ethical issues in software development that programmers and companies come into contact with on a daily basis.
2. Protecting Customers’ Data
We all know many website services are just there to collect your data. Take Google for example, here’s the data it’s got on you, states The Guardian: where you’ve been, everything you’ve ever searched (and deleted), an advertisement profile of you, all the apps you’ve used and with whom you use them, your YouTube history. Google actually has an option where you can download all the information about yourself – believe it or not, it would fill millions of Word documents!
What happens if the government or another legal entity requests data on customers from the data you’ve collected? Where does your ethical obligation lie? Have you communicated your policies clearly with your customers, and how have you protected their data?
3. Your Software Makes Use of the Work of Others (Without Paying Them)
Many apps serve up content without paying the creators. Do content aggregators, for example, merely spread content or do they steal the news? Often elaborate rationalisations are employed to defend this rather shaky ethical decision – e.g. these apps are merely ‘sharing’ information. Do ethical software developers need to ask themselves how their code will support everyone in the food chain? If you’re not asking this question, you may be just ignoring potential piracy issues.
These are some specific ethical issues in software development, as discussed above, but here are some other broader, but important, ethical issues to consider, via CodingDojo:
- Who plans to use your software or system?
- What will it be used for?
- What are some of the worst-case scenarios if people bent on foul play get their hand on the technology?
- What safety controls can you put into place to mitigate against this?
- Could your software potentially hurt, control or profile others?
- If you were born a different gender or race, might you feel differently about the system or app you have created?
- Will there be any global effects on the planet?
- Is your system susceptible to bias?
Strategies for Dealing with Ethical Issues in Software Development
The good news is that there is actually a Software Engineering Code of Ethics. It specifies the ethical and professional obligations of software engineers. This code was produced by a multinational task force via input from industrial, government, military and educational professionals. Here are the eight general principles:
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.
Judgement: 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.
Ethical issues in software development are obviously far-ranging and complicated, especially as new technologies, such as Machine Learning and Artificial Intelligence, increasingly come online. We’ve introduced a few important problems and a Software Engineering Code of Ethics. It’s a fascinating area and certainly worthy of more reading and discussion. Lastly, if you’re interested in learning Software Engineering, consider enrolling on HyperionDev’s six-month, online course. You can sign up for a free trial today!