Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Being an Ethical Developer

Being an Ethical Developer

Xavier Gouchet

April 02, 2019
Tweet

More Decks by Xavier Gouchet

Other Decks in Programming

Transcript

  1. @xgouchet
    @xgouchet
    Being an
    Ethical Developer
    CodeMobile UK 2019 - Chester

    View Slide

  2. @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

    View Slide

  3. @xgouchet
    @xgouchet
    Let’s make this happen
    3

    View Slide

  4. @xgouchet
    @xgouchet
    Introduction
    4

    View Slide

  5. @xgouchet
    @xgouchet
    Why this talk ?
    5

    View Slide

  6. @xgouchet
    @xgouchet 6
    StackOverflow Survey 2018

    View Slide

  7. @xgouchet
    @xgouchet 7
    Spoiler Alert
    I will mostly ask questions…
    … answer a few of them…
    … but will give a few pointers

    View Slide

  8. @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

    View Slide

  9. @xgouchet

    @xgouchet
    Ethics and morals are subjective.
    For the first time,
    the answer is not
    true || false
    9

    View Slide

  10. @xgouchet
    @xgouchet 10
    … with your users

    View Slide

  11. @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

    View Slide

  12. @xgouchet
    @xgouchet
    App Store / Play Store reviews
    ★★★★★ The UI doesn’t scroll smoothly
    ★☆☆☆☆ Best
    12

    View Slide

  13. @xgouchet
    @xgouchet
    Tip
    Give a name to your users
    Alice, Bob, Charlie, …
    Aragorn, Bilbo, Celeborn, …
    13

    View Slide

  14. @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

    View Slide

  15. @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

    View Slide

  16. @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

    View Slide

  17. @xgouchet
    @xgouchet 17
    Ask questions
    ?
    Does the feature make sense ?
    Is the design appropriate ?

    View Slide

  18. @xgouchet
    @xgouchet
    … with your code
    18

    View Slide

  19. @xgouchet
    @xgouchet
    Should we ship a Minimum Viable Product ?
    Should we fix every single bug ?
    19
    To ship or not to ship ?

    View Slide

  20. @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

    View Slide

  21. @xgouchet
    @xgouchet
    Tip
    Take ownership of the codebase
    If you see an issue in someone else’s code,
    it becomes your responsibility too.
    21

    View Slide

  22. @xgouchet
    @xgouchet 22
    Do not trust your instincts…
    Credit : John Manoogian III

    View Slide

  23. @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

    View Slide

  24. @xgouchet
    @xgouchet 24
    Subscriptions and Billing

    View Slide

  25. @xgouchet
    @xgouchet
    Say no !
    Not so long ago,
    in a bank website open space…
    25

    View Slide

  26. @xgouchet
    @xgouchet 26
    Anticipate misuse
    How can the code be misused ?
    Hacked ?

    View Slide

  27. @xgouchet
    @xgouchet 27
    Apple Web Camera Shutter
    Credit : @SwissMacUser

    View Slide

  28. @xgouchet
    @xgouchet 28
    Microsoft Hololens

    View Slide

  29. @xgouchet
    @xgouchet 29
    Deep Learning, Armless right ?
    Credit : http://thispersondoesnotexist.com

    View Slide

  30. @xgouchet
    @xgouchet 30
    Deep Learning, Armless right ?

    View Slide

  31. @xgouchet

    @xgouchet
    When you invent a new
    technology, you also invent the
    accident of that technology.
    — Elan Mastain (All our Wrongs Today)
    31

    View Slide

  32. @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

    View Slide

  33. @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

    View Slide

  34. @xgouchet
    @xgouchet
    Ethics and Deontology
    34

    View Slide

  35. @xgouchet
    @xgouchet 35
    Utilitarianism (J. Bentham)
    Credit : “The Good Place” by Michael Schur / Netflix

    View Slide

  36. @xgouchet
    @xgouchet 36
    Good Will (E. Kant)
    Credit : “The Good Place” by Michael Schur / Netflix

    View Slide

  37. @xgouchet
    @xgouchet 37
    Wait for lawmakers to deal with the issue

    View Slide

  38. @xgouchet
    @xgouchet
    Existing thoughts
    38

    View Slide

  39. @xgouchet
    @xgouchet
    Universal Declaration of Human Rights
    ● United Nations
    ● 1948
    39

    View Slide

  40. @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

    View Slide

  41. @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

    View Slide

  42. @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

    View Slide

  43. @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

    View Slide

  44. @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

    View Slide

  45. @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

    View Slide

  46. @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

    View Slide

  47. @xgouchet
    @xgouchet 47
    Conclusion

    View Slide

  48. @xgouchet
    @xgouchet
    An ethical mindset
    ✘ “Primum non nocere”
    ✘ Don’t take anything for granted
    ✘ Think before you code anything
    ✘ Take ownership
    48

    View Slide

  49. @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

    View Slide

  50. @xgouchet
    @xgouchet
    thanks!
    Any questions?
    50
    Presentation template by SlidesCarnival

    View Slide