@xgouchet
@xgouchet
Being an
Ethical Developer
CodeMobile UK 2019 - Chester
Slide 2
Slide 2 text
@xgouchet
@xgouchet
About me…
Xavier F. Gouchet
Android developer since the Cupcake years
Lead Android Engineer at WorkWell
@xgouchet on every social network you can think of…
2
Slide 3
Slide 3 text
@xgouchet
@xgouchet
Let’s make this happen
3
Slide 4
Slide 4 text
@xgouchet
@xgouchet
Introduction
4
Slide 5
Slide 5 text
@xgouchet
@xgouchet
Why this talk ?
5
Slide 6
Slide 6 text
@xgouchet
@xgouchet 6
StackOverflow Survey 2018
Slide 7
Slide 7 text
@xgouchet
@xgouchet 7
Spoiler Alert
I will mostly ask questions…
… answer a few of them…
… but will give a few pointers
Slide 8
Slide 8 text
@xgouchet
@xgouchet
What does ethical mean ?
ethics /ˈɛθɪks/ n. moral principles that govern a person's behaviour or
the conducting of an activity
moral /ˈmɒr(ə)l/ adj. concerned with the principles of right and wrong
behaviour.
extralegal /ˌɛkstrəˈliːɡ(ə)l/ adj. (of an action or situation) beyond the
province of the law.
8
Slide 9
Slide 9 text
@xgouchet
“
@xgouchet
Ethics and morals are subjective.
For the first time,
the answer is not
true || false
9
Slide 10
Slide 10 text
@xgouchet
@xgouchet 10
… with your users
Slide 11
Slide 11 text
@xgouchet
@xgouchet
Give a f*** about what your users think?
Would your users be happy if they were in the meeting room ?
Would you make the same choices ?
Are your users also your clients ?
11
Slide 12
Slide 12 text
@xgouchet
@xgouchet
App Store / Play Store reviews
★★★★★ The UI doesn’t scroll smoothly
★☆☆☆☆ Best
12
Slide 13
Slide 13 text
@xgouchet
@xgouchet
Tip
Give a name to your users
Alice, Bob, Charlie, …
Aragorn, Bilbo, Celeborn, …
13
Slide 14
Slide 14 text
@xgouchet
@xgouchet
Who will be impacted by the code you write ?
How will your users be impacted, directly or indirectly ?
Social Networks ? Online Presence ?
Device ?
14
Slide 15
Slide 15 text
@xgouchet
“
@xgouchet
Our computers are thousands of times
more powerful than the ones that
brought man to the moon. Yet every
other webpage struggles to maintain a
smooth 60fps scroll on the latest
top-of-the-line MacBook Pro.
— Nikita Prokopov
15
Slide 16
Slide 16 text
@xgouchet
@xgouchet
Is this UI / UX relevant?
Ask anyone using a dedicated piece of software:
Is the UI / UX sensible for them?
Is the UI / UX accessible?
16
Slide 17
Slide 17 text
@xgouchet
@xgouchet 17
Ask questions
?
Does the feature make sense ?
Is the design appropriate ?
Slide 18
Slide 18 text
@xgouchet
@xgouchet
… with your code
18
Slide 19
Slide 19 text
@xgouchet
@xgouchet
Should we ship a Minimum Viable Product ?
Should we fix every single bug ?
19
To ship or not to ship ?
Slide 20
Slide 20 text
@xgouchet
@xgouchet
Maintaining your app?
Which bug to fix ? To fix first ?
Which OS version to support ?
Keep maintaining old versions for 1% of the user base ?
20
Slide 21
Slide 21 text
@xgouchet
@xgouchet
Tip
Take ownership of the codebase
If you see an issue in someone else’s code,
it becomes your responsibility too.
21
Slide 22
Slide 22 text
@xgouchet
@xgouchet 22
Do not trust your instincts…
Credit : John Manoogian III
Slide 23
Slide 23 text
@xgouchet
“
@xgouchet
Your scientists were so preoccupied
with whether they could,
they didn't stop to think if they should.
— Ian Malcolm (Jurassic Park)
23
Slide 24
Slide 24 text
@xgouchet
@xgouchet 24
Subscriptions and Billing
Slide 25
Slide 25 text
@xgouchet
@xgouchet
Say no !
Not so long ago,
in a bank website open space…
25
Slide 26
Slide 26 text
@xgouchet
@xgouchet 26
Anticipate misuse
How can the code be misused ?
Hacked ?
Slide 27
Slide 27 text
@xgouchet
@xgouchet 27
Apple Web Camera Shutter
Credit : @SwissMacUser
Slide 28
Slide 28 text
@xgouchet
@xgouchet 28
Microsoft Hololens
Slide 29
Slide 29 text
@xgouchet
@xgouchet 29
Deep Learning, Armless right ?
Credit : http://thispersondoesnotexist.com
Slide 30
Slide 30 text
@xgouchet
@xgouchet 30
Deep Learning, Armless right ?
Slide 31
Slide 31 text
@xgouchet
“
@xgouchet
When you invent a new
technology, you also invent the
accident of that technology.
— Elan Mastain (All our Wrongs Today)
31
Slide 32
Slide 32 text
@xgouchet
@xgouchet
Open Source Licenses
Do you check what license is used on libraries you depend on ?
Do you check what it means for your code ?
32
Slide 33
Slide 33 text
@xgouchet
@xgouchet
Intellectual Property
Do you credit third party libraries in your app ?
Do you credit the code snippet you copied/pasted from StackOverflow ?
Do you credit the authors of content in your app ?
Do you make money off of them ?
33
Slide 34
Slide 34 text
@xgouchet
@xgouchet
Ethics and Deontology
34
Slide 35
Slide 35 text
@xgouchet
@xgouchet 35
Utilitarianism (J. Bentham)
Credit : “The Good Place” by Michael Schur / Netflix
Slide 36
Slide 36 text
@xgouchet
@xgouchet 36
Good Will (E. Kant)
Credit : “The Good Place” by Michael Schur / Netflix
Slide 37
Slide 37 text
@xgouchet
@xgouchet 37
Wait for lawmakers to deal with the issue
Slide 38
Slide 38 text
@xgouchet
@xgouchet
Existing thoughts
38
Slide 39
Slide 39 text
@xgouchet
@xgouchet
Universal Declaration of Human Rights
● United Nations
● 1948
39
Slide 40
Slide 40 text
@xgouchet
@xgouchet
Universal Declaration of Human Rights
Article 12.
No one shall be subjected to arbitrary interference with his privacy,
family, home or correspondence, nor to attacks upon his honour and
reputation. Everyone has the right to the protection of the law against
such interference or attacks.
40
Slide 41
Slide 41 text
@xgouchet
@xgouchet
Universal Declaration of Human Rights
Article 19.
Everyone has the right to freedom of opinion and expression; this right
includes freedom to hold opinions without interference and to seek,
receive and impart information and ideas through any media and
regardless of frontiers.
41
Slide 42
Slide 42 text
@xgouchet
@xgouchet
The Software Engineering Code of
Ethics and Professional Practice
● IEEE/CS & ACM
● 1997
● Version 5.2 (1999)
● https://ethics.acm.org/code-of-ethics/software-engineering-code
42
Slide 43
Slide 43 text
@xgouchet
@xgouchet
The SE Code of Ethics and Professional Practice
1. Software engineers shall act consistently with the public interest.
1.01. Accept full responsibility for their own work.
[…]
1.06. Be fair and avoid deception in all statements, particularly public
ones, concerning software or related documents, methods and tools.
43
Slide 44
Slide 44 text
@xgouchet
@xgouchet
The SE Code of Ethics and Professional Practice
4. Software engineers shall maintain integrity and independence in their
professional judgment.
4.01. Temper all technical judgments by the need to support and
maintain human values.
[…]
44
Slide 45
Slide 45 text
@xgouchet
@xgouchet
Programmer's Oath
● ‘Uncle’ Bob Martin
● 2015
● Equivalent to the Hippocratic Oath
● https://blog.cleancoder.com/uncle-bob/2015/11/18/TheProgrammersOath.html
45
Slide 46
Slide 46 text
@xgouchet
@xgouchet
Programmer's Oath
I Promise that, to the best of my ability and judgement
I will not produce harmful code.
The code that I produce will always be my best work.
[…]
I will never stop learning and improving my craft.
46
Slide 47
Slide 47 text
@xgouchet
@xgouchet 47
Conclusion
Slide 48
Slide 48 text
@xgouchet
@xgouchet
An ethical mindset
✘ “Primum non nocere”
✘ Don’t take anything for granted
✘ Think before you code anything
✘ Take ownership
48
Slide 49
Slide 49 text
@xgouchet
@xgouchet
Going Further
✘ Dark Patterns : https://darkpatterns.org/ @darkpatterns
✘ “Responsibly Smashing Pandora’s Box” by Yanqing Cheng
✘ Just World License / https://github.com/raisely/NoHarm
✘ Cognitive Biases
✘ Human Rights / SE Code of Ethics / Programmer’s Oath
49
Slide 50
Slide 50 text
@xgouchet
@xgouchet
thanks!
Any questions?
50
Presentation template by SlidesCarnival