CSC321.01 2016F, Class 14: Codes of Ethics
==========================================

_Overview_

* Preliminaries.
    * Admin.
    * Upcoming Work.
    * Questions.
* Professional Codes of Ethics.
* Additional Discussion Topics (suggested by students).
* Agile and Ethical.

Preliminaries
-------------

### Admin

* A question from the faculty ... Do you discuss issues like global warming
  or the role of the US in the broader world?
    * People shut each other down.
    * People make assumptions about each other
    * More generally, the role of identity politics and ad hominem attacks
    * Sometimes smaller issues, like why no-fly zones in ...
    * Sometimes in one-on-one situations, but not in bigger groups.
    * Insufficient expertise.
    * Low priority.
    * "The only thing I pay attention to is Facebook."
    * People from previous generations shame us.
    * We are activists online.
  
### Upcoming Work

* Reading for Wednesday
    * SaaSbook, Chapter 7 (BDD), which is what I thought I previously assigned
* Journal for Wednesday, Due Tuesday at 10:00 p.m.
    * Find a Cucumber scenario for a Rails project.  You can look in 
      your project codebase, at the Cucumber Web sites, or wherever.
    * Describe the relationships between the various parts of the Cucumber
      tests (the overview, the setup, the particular examples, the parsing
      code, the code that does the work, and the Capybara support).
    * Suppose you didn't want to use Cucumber.  How might you best set up
      for BDD?
    * What's the most confusing part of BDD/Cucumber?  Explain it in 
      your own words.

### Good Things to Do

See <http://www.cs.grinnell.edu/~rebelsky/s2d@g/>

* Home in the Heartland Traveling Museum, Today, 2-5 pm
* Watch the presidential debate tonight.  Pub at 8pm.  Facebook.
* Interesting talk tonight.
* Machine Learning talk at 11 am tomorrow.
* CS Table Tuesday: Tapia.

### Questions

Professional Codes of Ethics
----------------------------

Why do we have professional codes of ethics?

* It's a good idea.
* People are more likely to trust us if we have a well-thought out code of
  ethics.
* In terms of ownership, so that people don't claim each other's work,
  just like they did in the Wild Wild West.
* Fosters innovation ... otherwise we would see people interfering with
  each other's work.
* Hold each other accountable.
* Most professions have a code of ethics: Legal bar, Medicine ("Do no harm"),
  Civil Engineers, Investment advisors (hah!), etc.
* We will all encounter ethical quandries in our work.  Good codes of ethics
  help us resolve those quandries.

What do we see as the primary themes in these codes of ethics?

* Don't do a half-assed job.
* Pay attention to the potential effects of the software you write on
  the broader population.  ("Do no harm.")
* Don't steal.  Cite, get permission, etc.  (An intersection of ethics
  and law.)
* General business ethics - Don't double charge.
* Client takes priority (although perhaps not over society)
    * Pay attention to safety
* Preserve reputation of us as a profession, but also critique as 
  appropriate.
* Highest professional standards
* Remember that the software you are writing can have life-or-death
  impacts.
* Respect privacy.
* Document so that others can work on it.

What else would you expect to see?

* A clearer distinction between "best practices" and "ethics".  Ethics
  are more general principles, such as the universal declaration of
  human rights.
* Some general ethical principles are encoded in the best practices.
    * Accessibility
* Responsibility to help users.

Would you sign?  Why or why not?

* No.  Written by a limited group with insufficient input from the broader
  community and with a military-industrial focus.
* Yes,  Even if I don't follow it, there's nothing anyone can do to me.
* No.  It's bloated and hard to follow it, and you might unknowingly 
  violate it.  It's not enforcable.
* Yes.  The goal is educational.  Even if it can't be completely followed,
  it provides aspirational goals.
* Yes.  It's things that you should be doing anyway.  (Or no, it's things
  you'd be doing anyway.  Why bother signing?)
* Yes.  By signing, I encourage the broader community to abide by a
  higher standard.
* Yes.  Software can impose serious risks.  We should acknowledge those
  risks and our moral imperative to avoid them.  Requires us to think
  more carefully about our actions.
* Yes.  Evidence suggests that having to read these things makes you
  think about these questions.

How do we enforce?

* Law.

Additional Issues
-----------------

A. There were some allusions to considering who has access to
computing-related products and education and the forms this access
takes, but I would have liked to see a more explicit treatment and an
acknowledgement that this status quo is not a static, natural phenomenon,
but one that is actively enforced and reproduced.

B. I like to think that coding is potentially one of the best ways to create
change in today's technological world for the better.

C. As I just had implicit bias training, it is cool to see that it is mentioned in the reading to not discriminate others through coding. 

D. About the entire ethics in computing thing, I think the primary point,
that software should contribute to society and well being is almost entire
ethics agnostic in the vast majority of cases. After all, I can think of
far more cases where someone as a developer would undermine society and
civil rights by working for a profitable firm than actually help tackle
some of the major issues of today.

E. I would appreciate discussing how we can start bringing some of these
practices more into our department and community. I enjoyed learning about
ethics in the context of software engineering and would be curious to see
how well professionals actually measure up to some of these standards. I
wish I had more time to dig into the material.

F.  I guess with regards to the second link, those are some very broad
concerns. Being the novices we are, how do we situate ourselves in
those problems? I agree that something like healthcare information is
very sensitive and should be protected, but although I might agree,
that doesn't seem very pragmatic.

G. I would like to discuss about encryption and if there are encryption
algorithms we can take advantage of in the ruby programming language.

H. I would like to discuss the idea of global surveillance and where to
draw the line.  It's a grey area for me and I'd like to get more opinions
on it.

I. In the "Computer Society and ACM Approve Software Engineering Code of
Ethics" reading, it seems to me that the idea about helping each other
in developing software is widely adopted by the open source community
but not some corporations.

J. I think most of the ethics code is basic courtesy. If you do a job for
someone, you obviously shouldn’t half do it. When you create software,
you obviously should cite sources and where you got ideas from (as we
have been doing in Grinnell), and you should take responsibility for any
errors in your program and actively work towards making it better. It's
not just acting ethically, but it is being a good person and programmer.

K. Despite the fact that the second reading ends with the line "In
summary, without being a predictor of doom...", I'm now very vividly
feeling like we're all going to suffer a horrible catastrophe that
cripples our current society in the near future (approx 5-15 years). Not
a good feeling.

Global Surveillance
-------------------

I would like to discuss the idea of global surveillance and where to
draw the line.  It's a grey area for me and I'd like to get more opinions
on it.

* Arguing for as much surveillance as possible: MG, CG, NT, AH, SH, YL,
  EZ, GN
* Arguing for none whatsoever: Everyone else but SS
* Arguing for a mdoerate position: SS, RW, BR

In The CS Classroom
-------------------

I would appreciate discussing how we can start bringing some of these
practices more into our department and community. I enjoyed learning about
ethics in the context of software engineering and would be curious to see
how well professionals actually measure up to some of these standards. I
wish I had more time to dig into the material.

Why Bother?
-----------

I think most of the ethics code is basic courtesy. If you do a job for
someone, you obviously shouldn’t half do it. When you create software,
you obviously should cite sources and where you got ideas from (as we
have been doing in Grinnell), and you should take responsibility for any
errors in your program and actively work towards making it better. It's
not just acting ethically, but it is being a good person and programmer.

Sam resonds ...

* MVP!
* It's not enough to cite sources.
* Death march!

Ethics and Agile
----------------

* How do they cohere?
* How do they differ?
