Should software engineers be empowered to say “no” to building a given system?

Should software engineers be empowered to say “no” to building a given system? For an employed software engineer the refusal to build a given system may be seen as not performing required tasks. For an unemployed software engineer, it may be another couple of months without a job. The word “no” may be caused by many reasons including finance, ethical views or even amount of stress. The consequences will vary depending on the individual. In some cases they may be peacefully resolved, in others the individual may be dismissed, may resign from work or be unable to sign the contract.

The society we live in starts to rely on technology more and more often. Computers become more complex and can be found almost everywhere: inside cars, airports, even inside our bodies. Software engineers are under increasing responsibility to provide safe and real-time systems to benefit the society. It is impossible to build a system that can be 100% safe. Some software engineers may not like having big responsibilities. They should be able to say “no” if the system they are being asked to build question may cause them too much stress.

A software engineer might find himself/herself under pressure when developing a critical system, for example, a system that would automatically inject insulin into the body for diabetics. Diabetics don’t produce enough insulin which reduces sugar level in blood. A traditional way of treating diabetic involves measuring the sugar level in blood and injecting an appropriate amount of insulin. If the level of glucose is too low, in a short-term, it can lead to brain malfunctions, unconscious and consequently death. Too high level of glucose, in a long-term, can lead to eye damage, kidney damage and heart problems. The level of insulin in blood also varies with time. Current development of micro-sensors will allow patients in future to have such systems permanently attached to the body via a permanently attached needle.

A software engineer developing such system should take into account at least these two requirements:

  1. The system will inject insulin when required
  2. The system will inject a correct amount of insulin into the body

The systems must be faultless and bug-free and although it can be tested under a lot of circumstances there is always a chance of a failure of the system that could cause the dose of insulin to be too large which could threaten the life of the user. Some software engineers are prepared to take the risk in developing such system. On the other hand, it might be possible that some engineers would rather work on something less life depended e.g. a word processor or an embedded system for cameras. However, a less stressful job usually means less money which could be another reason for software engineers to refuse to build a given system.

Money is incredibly important (almost crucial) part of life. It is a very powerful factor when it comes to making decisions and motivation. What ones perceive as “a lot”, others may think is not enough.

Some people are prepared to work after-hours, under a lot of stress or even unethically just to get more money. Software engineers should say “no” to building a system if they feel that the reward is not adequate to the required commitment. Of course, there are other things that not only should but which must be considered e.g. partner or kids and on the hand stress etc.

Ethics plays an important part in life. What ones perceive to be perfectly normal, others may consider as something immoral and wrong. Whenever there are different views on a matter people will face ethical dilemmas. It is extremely important to realise that people may have different views and objectives and to respect their right to have them.
The decision to say “no” to building a given system may come from personal believes and perception of what someone considers to be right or wrong. A software engineer should consider disagreeing to participate in building a system he or she thinks may be harmful or damaging in any way.

An excellent example regarding ethical dilemmas faced by software engineers can be found in Software Engineering by Ian Sommerville. Professor Sommerville describes problems related to military and nuclear systems. It is possible that some people may feel very strongly against participating in building this kind of systems. Yet others may agree to build military systems but only the ones that are not associated with weapons. On the other hand, some people may consider the national security to be their highest priority as citizens and may participate in such projects enthusiastically.

What to do if an employee faces an ethical conflict? If an employed software engineer comes across a work-related ethical dilemma it might be important to speak openly about it to the employer. According to Ian Sommerville: “[..]in most cases they are either minor or can be resolved without too much difficulty”. If the problem cannot be resolved then the individual is likely to resign.