Cold Hard Cash v.s. Doing The Right Thing... Tough Call
All industries want to cut costs and maximize profit and of course companies that rely on computer science are no different. The gaming industry is infamous for often rushing games out to buyers before enough testing has been done to make sure that game runs smoothly. Its impossible to guarantee that video games will never encounter glitches while being played and luckily their developers often frequently release free patches to fix common bugs. Some developers will work with gamers to help fix bugs by offering beta versions of the games to players and collect feedback. Glitches in video games can be annoying but at least this problem is not dangerous (except when someone gets enraged and puts their fist through their TV) but faulty code in other software (e.g., operating systems and websites) can lead to serious problems. Without proper testing of websites and other software there is the risk of the user having their personal information stolen or losing important data. The higher risk places a greater moral obligation on the company developing the software to make sure that it is as safe as possible even if it means losing money from stalling the release.
Writing faulty code is a very common problem amongst programmers. Although writing perfect code that functions perfectly every time isn't realistic, proper testing of software should be a main priority. Testing is especially important in potentially harmful situations where the software is used in medical equipment and other applications that can deal where the well being of people is at stake. The injuries and deaths caused by the Therac-25 could have been prevented if more responsibility was taken to ensure that the code would function safely. Obviously nobody intended to do harm to the patients using this equipment but it is still the moral obligation and responsibility of the company in charge to make sure that the machine would function safely.
Whos Fault is the Default?
Software should be designed to allow everyone to use it and be easily accessible. The default settings in most programs is set to be what the developers think the average user wants to use. The problem with this approach is that it causes discrimination against various groups of people (e.g., the elderly) who are often over looked by the development team. The defaults can be changed by going into the settings options in most programs, but it can be difficult to access these options for people who can't read the font, speak another language, aren't very computer savvy, etc. Default privacy settings are often set to a very low level of privacy on sites such as Facebook which outrages some people. Its obviously not easy to make everyone happy since everyone prefers to use different settings in most cases. The developers should have the ethical obligation to make the default settings designed for as many people as possible (not just the majority of people using it). In cases where defaults can't accommodate everyone (e.g. languages) it should still be made easy to change the settings (i.e. not hiding options several layers deep in the settings menu).
What To Do...
It is often difficult to decide what action to take in order to be an ethically responsible computer professional, but there are two phases to consider when deciding what action to take. The first phase is to brainstorm which involves listing and considering: stakeholders, risks, issues, consequences, and who gets benefited. The second phase is to analyze possible actions which can include: identifying responsibilities and the rights of the stakeholders, consider the impact on stakeholders, Use SE and ACM codes to see what is acceptable, arrive at the best possible conclusion. Make sure to ask for input from others if the situation is complex and there is doubt about what is ethically responsible to do.