Chapter 10 — Engineering ethics and safety
Lesson map
Lesson 10 published. Map, example, EX028.
flowchart TD
N0["Learning outcomes"]
N1["10.1 Duties"]
N2["10.2 Responsible handling"]
N3["10.3 Disclosure"]
N4["10.4 Safety and availability"]
N5["10.5 Conflicts of interest"]
N6["10.6 Codes of conduct"]
N7["Whistleblowing"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7
N7 --> EX["Worked example"]
EX --> Q["Exercise EX028"]
Logical drawing
flowchart LR
N0["Learning outcomes"]
N1["10.1 Duties"]
N2["10.2 Responsible handling"]
N3["10.3 Disclosure"]
N4["10.4 Safety and availability"]
N5["10.5 Conflicts of interest"]
N6["10.6 Codes of conduct"]
N7["Whistleblowing"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7 --> Q["EX028"]
[Learning outcomes]
|
v
[10.1 Duties]
|
v
[10.2 Responsible handling]
|
v
[10.3 Disclosure]
|
v
[10.4 Safety and availability]
|
v
[10.5 Conflicts of interest]
|
v
[10.6 Codes of conduct]
|
v
[Whistleblowing]
|
v
[Worked example] --> [Exercise EX028]
Learning outcomes
You will (1) apply professional ethics to software security work; (2) handle discovered flaws responsibly; (3) weigh public safety and service availability; (4) recognise conflicts of interest.
10.1 Duties
Engineers owe duties to the public, employers and the profession. For a transit app, public duties include protecting riders' payment data and keeping ticket sales available during disruptions.
Duties can pull in different directions. An employer may want a feature shipped on time, while the public needs it to protect card data. The engineer's role is to make the risk visible to the people who decide, not to hide it or to decide alone. Ticket sales during disruptions matter because riders without tickets may be stranded, so availability is also a public duty.
10.2 Responsible handling
When Kwame notices that an old staff test account still works on the staging site, he reports it to Ingrid rather than exploring what it can do. Testing beyond what you are authorised to do is wrong even with good intentions.
Exploring the account could have exposed rider data, changed records or triggered alarms, and it would have been unauthorised access regardless of motive. Reporting promptly lets the owner disable the account and check its history. Kwame's report gives the account name, where it worked and when he noticed, and nothing he did beyond confirming the login page accepted it.
10.3 Disclosure
When the team finds a flaw in an open-source component, it reports privately to the maintainers and waits for a fix before discussing it publicly, a practice known as coordinated disclosure.
Publishing details before a fix exists gives attackers a head start while users cannot protect themselves. Waiting indefinitely is also wrong, so coordinated disclosure usually agrees a deadline with the maintainers, after which details are released. Coastline's reports go through the project's security contact, not its public issue tracker, and include enough detail to reproduce the problem.
10.4 Safety and availability
Security changes can break services. Forcing all riders to update the app during a storm, when ferries are cancelled and people need tickets for alternative buses, could cause real harm. Timing matters.
A forced update has value, closing a flaw quickly, and a cost, locking out riders who cannot update during a crisis. The team checks the weather and service status before scheduling disruptive changes and keeps a fallback, such as allowing older versions to show existing tickets. Timing decisions are recorded with their reasons so they can be reviewed later.
10.5 Conflicts of interest
Kwame's friend runs a company selling scanning tools. When Coastline evaluates scanners, Kwame declares the relationship and steps back from the decision.
Even if Kwame would judge the tools fairly, others cannot know that, and a hidden link would damage trust in the result if discovered. Declaring the relationship lets someone without the link make the choice. He can still answer factual questions about the tools if asked. The declaration is recorded in the evaluation notes, so later readers see it too.
10.6 Codes of conduct
Professional bodies' codes emphasise honesty, competence and public welfare. They help when pressure to ship conflicts with safety.
Citing a code turns a personal objection into a shared professional standard, which is easier for a manager to accept. Codes do not settle every case; they name the values to weigh. Kwame keeps notes of difficult choices and the reasons for them, which also helps him when similar situations arise and when colleagues ask why a decision was made. Recording the reasoning at the time is more honest than reconstructing it afterwards.
Whistleblowing
If serious safety concerns are ignored inside an organisation, professional codes and laws in many countries protect engineers who raise them through proper channels. Kwame learns where Coastline's policy says to raise such concerns.
Worked example
A manager asks Kwame to mark a known high-severity finding as "accepted risk" to meet a release date. Kwame explains he lacks authority to accept risk and escalates to Ingrid, who arranges a short delay and a fix.
Synthetic case. Situations are synthetic.
Errors and limits
Ethics rarely gives one right answer; record reasoning and escalate when unsure.
Exercises
- EX028 — Test account. How did Kwame handle the old test account? Rubric: 3 = reported, did not explore; 2 = partial; 1 = vague; 0 = none.
- EX029 — Coordinated disclosure. Describe coordinated disclosure. Rubric: 3 = report privately; wait for fix before public; 2 = partial; 1 = vague; 0 = none.
- EX030 — Risk acceptance. How did Kwame respond to the risk-acceptance request? Rubric: 3 = lacks authority; escalated; 2 = partial; 1 = vague; 0 = none.
Synthesis
Act within authority, disclose responsibly and weigh safety, availability and honesty.
Continue studying — chapter 10 of 50
← Chapter 09 (draft) · Course chapter index · Chapter 11 (draft) →